Errors and limits

Every error says what went wrong in words, and carries a code your program can check.

What an error looks like

{
  "status": "error",
  "message": "This organisation has used 2000000 of its 2000000 characters for this month. Contact Signa to raise the limit.",
  "code": "API_LIMIT_REACHED",
  "details": { "code": "API_LIMIT_REACHED", "limit": "characters", "used": 2000000, "max": 2000000 }
}

Check code in your program, and show message to people: it is written to be read.

Codes

StatusCodeWhat to do
401INVALID_API_KEYCheck the key, or ask us for a new one.
403ORG_PAUSEDYour access is paused. Contact us.
403TRIAL_EXPIREDYour trial has ended. Contact us to continue.
403API_KEY_NOT_ALLOWEDThat endpoint is only for the Signa apps.
429API_LIMIT_REACHEDA monthly limit is used up. It resets on the 1st (UTC), or we can raise it.
400—Something in the request is missing or wrong; the message says what.
403API_KEY_REQUIREDOnly your API key can do that (creating overlays, client tokens), not a client token.
404NO_SUCH_OVERLAYThe overlay id (or its page token) is wrong, or the overlay was deleted.
429OVERLAY_BUSY20 screens already show this overlay. Close one, or make another overlay.
400UNREADABLE_MEDIAThe file sent for subtitles has no sound we can read.
413UPLOAD_TOO_LARGEOver 25 MB for /v1/stt, or 100 MB for /v1/subtitles. Send only the audio.
429—Too many requests at once. Slow down and retry.
503—A service we rely on is briefly unavailable. Retry shortly; Retry-After says when.

Retrying

Retry 503 and connection errors with a growing pause (1 s, 2 s, 4 s…). Don't retry 400, 401 or 403: the same request gets the same answer.

Failed requests are free

Characters are only counted once something was signed, and a video once it was made. A request that fails costs nothing.