Skip to content

Errors carry a machine-readable code and a human-readable message:

{
"error": {
"code": "validation_error",
"message": "timeout_ms must be between 1 and 300000"
}
}

Match on code. Messages are written for people and may be reworded.

CodeHTTPMeaningWhat to do
unauthorized401Missing or invalid credentials.Check the bearer token.
forbidden403Authenticated, but not permitted — wrong role, or an API key on a session-only endpoint.Use a session, or a member with the right role.
plan_limit_exceeded403A plan cap would be exceeded.Remove something, or upgrade.
not_found404No such object in this workspace.Check the id and the workspace.
conflict409The object already exists — for example a second connection between the same source and destination.Reuse the existing one.
validation_error422The request body is malformed or out of range.Read the message; it names the field.
rate_limited429Over the per-minute API budget.Wait Retry-After seconds.
unavailable503A dependency the request needs is unavailable.Retry later.
internal_error500Something broke on our side.Retry; if it persists, tell us the time and the request.

A 404 is also returned for an object that exists in a different workspace — the API never reveals that someone else’s id is valid.

CodeHTTPMeaning
200Accepted and stored.
signature_invalid401Inbound verification failed. The event is stored as failed and never delivered.
quota_exceeded402The workspace’s monthly event quota is used up.
404No such ingest token, or the source is in the trash.
413Payload over 1 MiB.
429Over the source’s per-minute ingest budget. Retry-After says when to retry.
500The event could not be stored. Safe to retry.

Full details in the ingest URL.

Not errors from Webhooker, but the statuses your endpoint’s responses produce:

StatusCause
succeeded2xx.
failedA 4xx other than 408 and 429. Not retried.
exhaustedEvery retry in the schedule failed.
filteredA connection filter did not match. Nothing was sent.

See retries and replay.