Ceyu

API fundamentals

The public API is deliberately bounded: cursor pages stay fast, writes are replay-safe, and every response explains its version and credit cost.

Requests and responses

Send JSON over HTTPS to api.ceyu.org. Timestamps are Unix seconds, absent fields mean “not selected”, and null means “selected but empty”. Responses are private and never shared through an intermediary cache.

Pages and ID cursors

Lists return at most 100 objects and never use OFFSET or an implicit total. Pass next_cursor back as starting_after. Use ending_before to move in the other direction.

GET /v1/tasks?workspace=ws_…&limit=50&starting_after=task_…

Fast filters and selected fields

Repeat a filter value for OR and combine different parameters with AND. Task lists support project, status, assignee, due_before and is_archived. fields trims each object and marks the list with fields_selected.

GET /v1/tasks?status=todo&status=in_progress&fields=id,title,due_at

Idempotent writes

Every POST, PATCH and DELETE needs an Idempotency-Key. The same key and input replay the original status, headers and body for 24 hours; different input returns a conflict.

ETag and conditional reads

GET responses carry an ETag. Send it in If-None-Match to receive 304 without a response body when nothing changed.

Credits and retry behavior

Every response includes the operation cost and current rate window. On 429 or a temporary 503, honor Retry-After and use bounded exponential backoff with jitter. Validation and permission failures are not retryable.