REST API

Errors and rate limits

The error format, every status code you can get back, and how rate limiting works.

Oct 11, 20261 min read

Every error uses the same JSON shape, so one handler covers them all.

{
  "error": {
    "code": "forbidden",
    "message": "this API key is missing the \"write\" scope"
  }
}

Status codes

StatuscodeWhen
400validation_errorThe body or query failed validation. error.fields names each field
401unauthorizedThe key is missing, invalid, revoked or disabled
402plan_limitYour plan doesn't include this, or a plan limit was reached
403forbiddenThe key lacks the scope this endpoint needs
404not_foundThe resource doesn't exist in this workspace
429rate_limitedToo many requests from this key
500internal_errorSomething went wrong on our side. Retry with backoff

Rate limits

Each key can make 120 requests every 60 seconds, shared between the REST API and the MCP server. Responses include the standard RateLimit and RateLimit-Policy headers, so you can slow down before you hit the limit.

Good practice

  • Retry 429 and 5xx responses with exponential backoff. Don't retry 4xx errors other than 429.
  • Keep keys on your server. Never ship them in a browser or mobile app.
  • Use a separate key per app, so you can rotate or revoke one without breaking the others.
Was this helpful?
Ship on-brand posts in minutes

AI content, scheduling, engagement and a full marketing suite — free to start.

Start free
Back to documentation

Keep reading

Put this into practice in AeroReply

Every tool lives in the same account, from the free plan up.

Put this into practice

Start free — design, schedule and grow from one workspace.

  • No credit card
  • 2-minute setup
  • Cancel anytime