Skip to main content

Base URL

The codebase exposes these public routes, but it does not hardcode a single global hostname. Use the Offload API host for your environment:
In SST deployments, the API host is emitted as api.url.

Authentication

Every public client route uses:
Auth behavior:
  • missing key -> 401 UNAUTHORIZED
  • invalid key -> 401 UNAUTHORIZED
  • inactive key -> 403 FORBIDDEN

Response Envelopes

Application-level success:
Application-level error:
Platform-generated throttling or uncaught upstream errors may not use this envelope.

Timestamps

The public API currently uses:
  • Unix timestamps in milliseconds for most case and webhook timestamps
  • ISO 8601 strings for attachment expiresAt

Public Routes

Route Conventions

  • POST /cases is asynchronous. It stores the case and queues internal processing.
  • GET /cases/{id}?includeTranscript=true fetches and formats the live email thread.
  • POST /cases/{id}/input returns 202 when the input was queued, not when the workflow has finished reprocessing it.
  • GET /cases/{id} returns inputRequest when the case has an active or recently resolved input request stored on it.

Status Model

Webhooks

If clientWebhookUrl is set on case creation, Offload sends:
  • case.completed
  • case.failed
  • case.input_needed
See Webhook Events for the exact payloads and Webhooks for delivery caveats.

OpenAPI

The machine-readable spec lives at openapi.json.