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

StatusCodeMeaning and fix
400invalid_request / missing_parameterThe body failed validation. The response names what was wrong or absent.
401invalid_keyThe partner key is not recognised. Partner keys are issued by RapidEye; the response carries the booking link.
403connector_not_enabledThat 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.
403key_revokedThe partner key was revoked. Talk to RapidEye.
404not_foundUnknown route on this surface. next_steps.discovery_url points at the index that lists everything served.
409report_not_readyThe inspection behind this id has not completed. Keep polling, or wait for the webhook.
413payload_too_large / request_exceeds_limitThe submission is over the size limit stated in the response.
429rate_limited / daily_photo_limit / daily_ip_limitA limit was reached. The response states the limit and when it resets; the wall that states a limit also states the way past it.
503demo_unavailable / demo_capacity_reachedThe demo tier is paused or full. Retry later, or take the booking link to production access.
500internal_errorOur 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:

  1. Call the path you want.
  2. On 403 connector_not_enabled, surface next_steps.book_a_call_url to your human and continue with other work.
  3. On 409 report_not_ready, wait and poll again.
  4. On 429, read the reset time in the response, back off, and retry.