error field tells you the exact reason, and message
is safe to surface to end users (no stack traces, no internal info).
HTTP status codes
Error codes
Authentication
Billing
Validation
Resources
Runtime
Handling errors in code
Debugging failed runs
Capture therun_id and task_id from any response (successful or not)
and include them on support tickets — they’re the fastest way for us to
pull the matching ledger / trace rows on our side.
For terminal failed states on async tasks, the error field on
GET /tasks/{task_id} carries the structured failure:
Rate limits
Every response includes rate-limit headers:
Rate limiting kicks in at the gateway, before any agent / pool work.
It’s effectively free to hit rate limits (no credits deducted).
