Zog

Rate limits & errors

Soft limits, response shapes, and common failure modes.

Limits are intentional but not aggressive — enough to keep the platform healthy while staying friendly for automation.

Limits (per minute)

ScopeLimit
Per API key~120 requests
Upload init / part signing per key~60
Per IP (all API keys)~240

Responses include X-RateLimit-Remaining when Redis-backed limiting is enabled.

When limited:

{
  "ok": false,
  "error": {
    "message": "Rate limit exceeded — try again shortly",
    "code": "rate_limited"
  }
}

Backoff gently (a second or two) and retry.

Envelope

Success:

{ "ok": true, "data": { } }

Error:

{
  "ok": false,
  "error": {
    "message": "Human readable message",
    "code": "machine_code",
    "details": {}
  }
}

Common codes

StatusCodeWhen
400validation_errorBody failed schema checks
400size_mismatchUploaded object size ≠ declared size
400object_missingComplete called before bytes landed
400invalid_stateFile is not pending
401unauthorizedBad or missing API key
403quota_exceededNot enough storage
404not_foundFile or folder missing
429rate_limitedSoft limit hit

Retention

Uploaded files follow the same product rules as the dashboard: 30-day retention, plan quotas, and MIME denylists still apply.