✈
    TravelmodeDevelopers

    Weather Intelligence API · v1

    🔎/
    📖Overview🧪API Reference (Try It)
    Guides
    🚀Getting Started🔐Authentication⏱️Rate Limits📡Endpoints⚠️Errors💳Billing🧊Cache & Freshness🪝Webhooks📝Attribution
    ⬇️Download openapi.yaml🔑Manage API Keys
    Developers / Errors

    Errors

    Last verified: 2026-05-03 (Task #334 — docs accuracy pass).

    Every error response uses the same envelope. The HTTP status and error.code together describe the failure class, error.message is human-readable, error.details is structured (when present), and error.request_id matches meta.request_id and the X-Request-Id header.

    {
      "error": {
        "code": "bad_request",
        "message": "lat is required and must be a finite number",
        "details": { "field": "lat" },
        "request_id": "7c0f3c2c-9e4a-4d29-b4a2-9c2b4e9f5c11"
      },
      "meta": {
        "request_id": "7c0f3c2c-9e4a-4d29-b4a2-9c2b4e9f5c11",
        "generated_at": "2026-04-25T18:34:00.000Z"
      }
    }
    

    Error codes

    CodeHTTPWhen
    api_key_missing401No Authorization and no X-API-Key header.
    api_key_invalid401Key prefix doesn't resolve, or hash didn't match.
    api_key_revoked401Key explicitly revoked by an admin.
    api_key_expired401Key's expires_at has passed.
    scope_required403Key valid, but missing the scope this endpoint requires (details.required).
    account_suspended403Developer account is suspended.
    rate_limited429Generic rate-limit rejection.
    rate_limit_exceeded429Specific quota dimension exceeded for this period (details.dimension).
    billing_limit_reached402Plan flatly excludes this feature. Upgrade required (details.dimension).
    bad_request400Malformed or missing query / body fields (details.field when applicable).
    route_invalid400/v1/weather/route payload failed schema validation.
    timeline_item_invalid400/v1/weather/timeline rejected an individual item (details.index, details.field, details.issues).
    not_found404Resource doesn't exist or doesn't belong to the calling developer account.
    provider_unavailable502Upstream weather provider failed (DNS, connection, 5xx). Retry with backoff.
    weather_refresh_timeout504Upstream provider timed out or rate-limited us. Retry with backoff.
    internal_error500Unhandled server-side defect. Please report with the request_id.

    Retry guidance

    ClassRetryable?
    4xx validation (bad_request, route_invalid, timeline_item_invalid)No. Fix the request.
    4xx auth (api_key_*, scope_required, account_suspended)No. Fix the credentials.
    402 billing_limit_reachedNo. Upgrade plan.
    429 rate_limited / rate_limit_exceededYes, after the period reset. See X-RateLimit-Reset.
    5xx provider_unavailable / weather_refresh_timeoutYes, with exponential backoff.
    500 internal_errorYes, with backoff. Open an issue if it persists.

    Even on a 5xx, the meta.billing_units field is non-zero — provider failures still bill (we paid the upstream cost or the timeout cost). Pure validation 4xxs do not bill.

    Always-included details

    error.request_id is present on every error and matches the same field in meta and the X-Request-Id response header. Quote it when filing support tickets — it makes it possible for us to find the exact log line.

    Previous
    ← Endpoints
    Next
    Billing →