Sideline Exchange/
Dashboard →

Reference

Errors

Every error the API returns, what causes it, and what to do next. The type URI in any problem document links straight to its entry here.

The shape of every error · RFC 9457
{
  "type": "https://docs.sidelineexchange.com/errors/invalid_parameter",
  "title": "Invalid parameter",
  "status": 400,
  "detail": "team must be a tm_ id.",
  "errors": [
    { "index": 3, "path": "/observations/3/data/start", "message": "must end in Z" }
  ]
}

type is stable and safe to switch on — the message is not.

detail is written for a person and may change; never parse it.

errors appears on batch validation, with the index and JSON pointer of each rejected observation.

CodeStatusCause
empty_upload400The uploaded file has no content.
feed_disabled400The feed exists but is switched off, and a disabled feed does not accept uploads.
invalid_batch400Either the batch envelope does not conform to OYSS, or no observation inside it was valid.
invalid_connector400The connector definition names a parser that is not registered, or is missing something that parser requires.
invalid_cursor400The cursor could not be decoded: it was truncated, hand-edited, or belongs to a different query.
invalid_json400The request body is not parseable JSON.
invalid_parameter400A query parameter was the wrong shape — an id with the wrong prefix (`team` must be a `tm_` id), an unparseable date, an unknown status, or no filter at all where at least one is required.
invalid_state400A state filter or transition named a value outside the vocabulary.
missing_idempotency_key400A push arrived without an `Idempotency-Key` header.
not_configured400, 501The feature is behind configuration that this environment does not have — a cloud-only service with no local implementation.
not_drifted400Accept-new-shape was called on a connector that is not currently holding a drifted run.
not_uploadable400The target is a connector, and a connector reads its own source.
unknown_source400The batch names a source key that is not registered for this account in this mode.
validation_failed400The request body did not satisfy the endpoint’s schema.
invalid_credentials401The email and password did not match.
invalid_token401The session token is expired, revoked, or was issued by a different environment.
unauthorized401No API key was presented, or the key is unknown, revoked, or belongs to a suspended account.
account_suspended403The account has been suspended, with a reason recorded at the time.
operator_only403The endpoint belongs to the operator role — the network-wide views: connectors, the review queue, the accounts directory — and the caller is a partner account.
publishable_key403A publishable key (`pk_…`) was used for something publishable keys cannot do: pushing observations, uploading a feed file, or a bulk export.
not_found404No entity with that id exists in this mode.
conflict409The change collides with something already there — a name or key that has to be unique, or a state that has moved since you read it.
email_taken409An account already exists for that email address.
review_decided409The item has already been approved or rejected.
review_not_approved409Undo was called on an item that was never approved, so there is no merge to reverse.
review_stale409The review item changed after you loaded it — usually because another operator decided it first.
review_unmergeable409The proposed merge cannot be applied — typically because one side has since been merged into something else, so approving would build a chain.
payload_too_large413The body exceeds the limit for the endpoint, or a batch carries more than 1,000 observations.
too_many_attempts429Repeated failed sign-in attempts from the same origin.