Error envelope
Every non-2xx response has the same shape:error string is a
human-readable hint. Don’t pattern-match on the message text; it’s free-form and may
change. Branch on the status code instead.
Status code reference
When to retry
A minimal retry helper:
Python
Pagination
List endpoints (GET /v1/tasks, GET /v1/agents, GET /v1/agents/{id}/versions) are
cursor-paginated, newest-first. The response looks like:
cursor query parameter.
When you reach the end, next_cursor is omitted (or empty).
Python
Cursor opacity
next_cursor is opaque; don’t try to parse it. If you decode it today and rely on the
shape, your code will break the next time the server changes its pagination key.
limit
Default is 20, max is 100. Larger pages mean fewer round-trips but a larger response
body; for bulk export, 100 is usually the right choice.
Rate limits
Rate limits are enforced per-workspace, not per-key. If you’re running tight loops or fanning out many concurrent agents, watch for429 and back off. We do not currently
publish per-tier numbers. If you’re hitting limits in production, reach out.