Skip to content

Errors & Status Codes · Developers

HTTP status codes returned by the Dailybot public API, their meaning, and how to recover.

The Dailybot API returns standard HTTP status codes on every response. Successful responses fall in the 2xx range; client errors in 4xx; server errors in 5xx. Every error body follows the same shape: a top-level `detail` string, and optional per-field validation errors under `errors`.

Error response envelope

Every non-2xx response is a JSON object with at minimum a `detail` field. Validation errors (400 responses on write endpoints) additionally include a per-field `errors` map. Rate limits (429) return a `Retry-After` header alongside the JSON body.

{
  "detail": "Human-readable summary of what went wrong.",
  "errors": {
    "field_name": ["Field-level validation message."]
  }
}

Status codes returned by the public API

StatusWhen you get itHow to recover
200 OKSuccessful GET, PATCH, or a POST that returns the resource.Nothing to do — success.
201 CreatedSuccessful POST that creates a new resource.The resource is in the response body; note the `uuid`.
202 AcceptedRequest was accepted for async processing (send-message, send-email, workflow trigger).Poll or subscribe to a webhook to know when it completes.
204 No ContentSuccessful DELETE or PATCH where no body is returned.No body to parse; success.
400 Bad RequestValidation error. The `errors` field contains per-field messages.Fix the payload and retry. Never retry blindly.
401 UnauthorizedMissing, expired, or invalid credential.Confirm your API key or refresh your CLI Bearer session with `dailybot login`.
403 ForbiddenCredential is valid but the caller lacks permission for this action or the endpoint is CLI-only.Check the parity matrix at [/developers/authentication#parity-guarantee](/developers/authentication#parity-guarantee).
404 Not FoundResource does not exist, or the caller cannot see it in this organization.Verify the UUID and the scope of the credential.
409 ConflictThe write conflicts with the current state (e.g. transitioning a form response to an invalid workflow state).Re-read the resource, choose the correct next state, retry.
422 Unprocessable EntityThe payload is syntactically valid but semantically invalid.Read `detail` — the message identifies the offending field.
429 Too Many RequestsRate limit exceeded.Respect the `Retry-After` header. See [/developers/rate-limits](/developers/rate-limits).
500 Internal Server ErrorUnexpected error on the Dailybot side.Retry with exponential backoff. If it persists, contact support.
502 / 503 / 504Upstream outage or maintenance window.Retry with exponential backoff.

Retry policy

Retry only on 429, 502, 503, 504, and idempotent 5xx. Never retry a 4xx blindly — the error is on your side. For 429, honor `Retry-After`; for 5xx, use exponential backoff (start at 250 ms, cap at 30 s, add jitter).