# 2026-10-07 — Consistent request error codes (fix · API · BREAKING)

> Three request errors now use the same code as the rest of the API, a 500 no longer carries internal detail, and two not-found errors gain a message.

Three request error codes did not match the rest of the API:

| Status | Before                          | Now                            |
| ------ | ------------------------------- | ------------------------------ |
| 400    | `destinations_invalid_provider` | `destination_invalid_provider` |
| 413    | `validation_error`              | `payload_too_large`            |
| 500    | `unknown_error`                 | `internal_server_error`        |

The `413` is an upload to `POST /image/upload` over 100 MB, and the `500` is a
failure to store or read a destination secret. If you branch on any of the old
codes, switch to the new ones.

Every `500` now has the message `Internal server error`. Some used to carry a
description of the internal step that failed.

`task_not_found` and `api_key_not_found` now include a `message`, like the
other not-found errors. See [request errors](/docs/api-reference/errors#request-errors).

Permalink: https://mynth.io/changelog/2026-10-07-error-code-consistency · Markdown: https://mynth.io/changelog/2026-10-07-error-code-consistency.md
