Skip to content

Response Codes

Apprise API uses standard HTTP status codes. Many error responses return a short message as text/plain. If you request JSON (send Accept: application/json), error responses include an error field.

CodeMeaningWhere you will see it
200OKRequest succeeded.
204No ContentNothing was found to retrieve or remove (/get, /cfg, /json/urls or /del). The response has no body.
302FoundThe Web interface redirected the browser after login, logout, or configuration selection. API clients should not normally receive this response.
400Bad RequestThe request has an invalid payload, type, format, tag, recursion header, or field mapping. A stateless /notify request with no valid URL also returns this code.
401UnauthorizedGlobal or per-key Basic Auth credentials were missing or invalid. The WWW-Authenticate: Basic header tells the client to request credentials.
403ForbiddenThe server setting or current access level denies the request. Examples include disabled stateful storage, a frozen configuration account, an unavailable /cfg list, or locked configuration content.
404Not FoundThe route or requested configuration does not exist. This includes /notify/{KEY} when no configuration is saved for the key. Strict mode also returns this for every route that Apprise does not recognize.
405Method Not AllowedThe route exists but does not support the request method. The Allow header identifies its supported methods.
406Not AcceptableThe recursion limit has been reached, or the request was rejected by a server rule.
409ConflictA configuration cannot be moved because the destination Config ID already exists.
413Content Too LargeNginx rejected a request body larger than the route or server upload limit. Login and authentication routes have a smaller limit than notification uploads.
414URI Too LongNginx rejected a request target that was too long.
417Expectation FailedHealth check detected a blocking condition (for example, missing write permissions).
421Misdirected RequestAPI-only mode is enabled and a web UI page was requested.
424Failed DependencyAt least one notification failed to send.
429Too Many RequestsNginx temporarily rate-limited the request. Packaged deployments return Retry-After: 60; clients should use the shorter of a valid hint and their normal bounded delay, or their normal delay if the header is missing or invalid.
431Request Header Fields Too LargeThe request exceeded the configured in-memory upload limit and Django rejected it.
500Internal Server ErrorServer-side error saving or loading configuration, or an unexpected I/O error.
502Bad GatewayNginx could not obtain a valid response from the application worker.
503Service UnavailableThe application is temporarily unavailable, or all live-stream slots are busy. When the slots are busy, the response includes Retry-After: 15.
504Gateway TimeoutThe application worker did not respond before the proxy timeout.
Questions or Feedback?

Documentation

Notice a typo or an error?

Technical Issues

Having trouble with the code? Open an issue on GitHub:

Made with love from Canada