Errors follow RFC 9457. The type of a problem points here.
The resource does not exist, or belongs to another tenant.
The request could not be read: malformed JSON, a bad header, an unreadable upload.
The request was read but is not valid. errors lists each field as a JSON pointer with a code.
No API key, or an unknown or revoked one. Send Authorization: Bearer stk_….
The key lacks the scope the operation needs.
The address exists, but not with this method.
The resource is not in a state that allows this (an asset still fetching, a cue sheet changed by someone else, an Idempotency-Key reused with a different body).
The upload or the media exceeds this deployment's limits (see GET /v1/capabilities).
The file format is not supported.
The month's processing quota would be exceeded (see GET /v1/account).
The account already has as many of these going as it may at once (open event streams, a pass over the whole rights catalogue). Try again when one has finished.
Our fault. It is logged; retrying later is safe for idempotent requests.