Timeout
Orceum waits 30 seconds for a response from your app’s endpoint. If your endpoint does not respond within this window:- The action call is marked as failed
- The user receives an error message
- No retry is attempted for timeout failures (distinct from 429 retries)
Design for the 30-Second Limit
Most operations complete well within this limit. But some are unpredictably slow:- File processing / exports
- Multi-step external API calls
- AI/ML inference pipelines
- Database report generation
Rate Limiting (429)
When your app returns429 Too Many Requests:
| Attempt | Wait | Action |
|---|---|---|
| 1st | — | Original request |
| 2nd | Short backoff | Retry after delay |
| 3rd | Longer backoff | Retry after delay |
| 4th | — | Mark as failed, notify user |
429. If all retries are rate-limited, the call fails and the user is informed.
Retry-After Header
If your app includes aRetry-After header, Orceum will honor it:
Re-Authentication (OAuth)
When OAuth tokens expire or become invalid, Orceum handles recovery automatically:API Key Re-submission
Ifauth_type is API_KEY and your app returns 401:
- Orceum marks the installation credentials as invalid
- User is prompted to re-submit their API key
- User provides a new key → installation becomes
ACTIVEagain
Best Practices
Return quickly, process async
Return quickly, process async
Never perform heavy computation synchronously in your action handler. Enqueue the work, return a job reference immediately, then push a webhook when done. Users experience a fast, responsive app instead of watching a spinner.
Include clear rate limit headers
Include clear rate limit headers
If you implement rate limiting, return
X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers alongside 429. Orceum surfaces these in error messages to give users context.Design for idempotency
Design for idempotency
Because Orceum may retry requests (on 429), design your action handlers to be idempotent where possible. If the same
create_task call is retried, it should not create duplicate tasks. Use the X-Request-ID header as a deduplication key.Scale proactively
Scale proactively
Monitor your
action_calls_last_30d from the marketplace stats endpoint. If call volume is growing, ensure your rate limits and infrastructure can keep up — 429 errors degrade the user experience.