Docs / Errors
Errors
Every error names its cause and its fix, because an agent that cannot read the failure cannot finish the job.
Error shape
Every error is JSON with a stable error code and a human-readable message. Where there is a next action, the response carries it as a field rather than describing it in prose, so an agent can act without parsing English.
{
"error": {
"code": "connector_not_enabled",
"message": "This platform controls access to its data at the source...",
"next_steps": {
"book_a_call_url": "https://app.rapideyeinspections.com/get-started",
"catalog_url": "/connectors"
}
}
}
Why the errors are shaped this way. A bare 403 tells an agent nothing and it will either guess or give up. Naming the cause and the exact next step turns a failure into a plan, which is the difference between an integration that completes unattended and one that stalls waiting for a human.
Error codes
| Status | Code | Meaning and fix |
|---|---|---|
| 400 | invalid_request / missing_parameter | The body failed validation. The response names what was wrong or absent. |
| 401 | invalid_key | The partner key is not recognised. Partner keys are issued by RapidEye; the response carries the booking link. |
| 403 | connector_not_enabled | That connector is provisioned per account and is not enabled for yours. next_steps carries the booking link and the catalogue URL. Surface the link to your human. |
| 403 | key_revoked | The partner key was revoked. Talk to RapidEye. |
| 404 | not_found | Unknown route on this surface. next_steps.discovery_url points at the index that lists everything served. |
| 409 | report_not_ready | The inspection behind this id has not completed. Keep polling, or wait for the webhook. |
| 413 | payload_too_large / request_exceeds_limit | The submission is over the size limit stated in the response. |
| 429 | rate_limited / daily_photo_limit / daily_ip_limit | A limit was reached. The response states the limit and when it resets; the wall that states a limit also states the way past it. |
| 503 | demo_unavailable / demo_capacity_reached | The demo tier is paused or full. Retry later, or take the booking link to production access. |
| 500 | internal_error | Our fault. Retry, and tell us if it persists. |
Upstream errors
When a call through an enabled connector reaches the platform and that platform returns an error, you get the platform's own status code and body unchanged. We do not rewrite upstream errors: a Hostaway validation error should read like a Hostaway validation error so their documentation applies.
Self-correction pattern
The intended loop for an autonomous agent:
- Call the path you want.
- On
403 connector_not_enabled, surfacenext_steps.book_a_call_urlto your human and continue with other work. - On
409 report_not_ready, wait and poll again. - On
429, read the reset time in the response, back off, and retry.
