> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# JD Courier error list

> JD Courier returns RFC 9457 problem details on its operator API and its engine API. Look up a JDC-NNNN code to find what it means.

**Error format**

The operator API and the engine API of JD Courier answer an error with an RFC 9457 problem detail, with the `application/problem+json` media type. Each error carries a `JDC-NNNN` code in the `code` field. Match on the code, not on the text.

The SOAP interface and the Pix address do not carry `JDC-NNNN` codes. On those surfaces, JD and the engines receive the answers that [How routing works](/en/interfaces/jd-courier/jd-courier-routing) describes.

<CodeGroup>
  ```json application/problem+json theme={null}
  {
    "type": "https://errors.lerian.studio/v1/JDC-0102",
    "title": "Conflict",
    "status": 409,
    "detail": "<error_detail>",
    "code": "JDC-0102"
  }
  ```
</CodeGroup>

**Field definitions**

* **`type`** – A URI that identifies the error code.
* **`title`** – The text of the HTTP status.
* **`status`** – The HTTP status code.
* **`detail`** – The explanation for this occurrence of the error.
* **`code`** – A stable identifier for the error (`JDC-NNNN`). Use it for programmatic handling and support requests.
* **`errors`** – Optional. A list of field errors, each with a `location` and a `message`.
* **`instance`** – Optional. The identifier of this occurrence.

## JD Courier errors

***

### 400

| `code` | Meaning |
| - | - |
| JDC-0001 | The request is not valid: a malformed body, a field outside its range, or a missing or too long `X-Idempotency` header. |

### 401

| `code` | Meaning |
| - | - |
| JDC-0401 | Authentication is required to access this resource. |

### 403

| `code` | Meaning |
| - | - |
| JDC-0405 | You do not have permission to access this resource. |
| JDC-0406 | The tenant of the caller is suspended or purged. |

### 404

| `code` | Meaning |
| - | - |
| JDC-0004 | The resource was not found: for example, the rail, the reconciliation cycle, the channel halt, or the SPB message. |
| JDC-0103 | The ownership assignment was not found. |
| JDC-0109 | The engine, or its SOAP channel credential, was not found. |
| JDC-0201 | The retained message was not found. |
| JDC-0302 | The send journal does not hold this control number. |

### 409

| `code` | Meaning |
| - | - |
| JDC-0003 | The `X-Idempotency` key was used before with a different body. |
| JDC-0008 | The request conflicts with the current state: for example, the channel is not halted, or a request with the same `X-Idempotency` key is still in progress. |
| JDC-0102 | Another engine owns the key. To change the owner, move the key. |
| JDC-0107 | An engine with this ID is already registered. |
| JDC-0114 | Another engine already uses this credential subject. |
| JDC-0116 | The record of the Courier gives this Pix Automático leg to another engine. Stop and report it to an operator. |
| JDC-0202 | The message is no longer retained. |
| JDC-0301 | Another engine is already in bypass on this rail. |
| JDC-0303 | The send is not an open indeterminate send: it has a verdict, or an operator already closed it. |
| JDC-0601 | A reconciliation cycle already runs on this rail. |

### 413

| `code` | Meaning |
| - | - |
| JDC-0006 | The request body is larger than the limit. |

### 422

| `code` | Meaning |
| - | - |
| JDC-0002 | A field breaks a rule: for example, a blank value or a note outside its length. |
| JDC-0101 | The target engine is not registered. |
| JDC-0104 | The key is not usable: it is blank, too long, or malformed for its kind. |
| JDC-0105 | The target engine is disabled. |
| JDC-0106 | The engine ID does not match `^[a-z0-9-]{1,32}$`. |
| JDC-0108 | A disable request has no reason. |
| JDC-0110 | The message code is a money code of the rail. It cannot have a delivery mode. |
| JDC-0112 | The rail does not accept this delivery mode. |
| JDC-0113 | The message was not routed to this engine, so it cannot be served to it again. |
| JDC-0115 | The target engine already owns the key. |
| JDC-0204 | The retention reason is about the message itself, so a new routing decision cannot release it. |
| JDC-0501 | The rail has no bypass. |

### 500

| `code` | Meaning |
| - | - |
| JDC-9000 | An unexpected error occurred. |

### 503

| `code` | Meaning |
| - | - |
| JDC-0902 | The license is revoked. The process answers its probes and refuses the other requests until the license is valid again. |
| JDC-9001 | A dependency of the Courier is unavailable. Retry later. On the ownership lookup, fail the payment. |

### Other 4xx

| `code` | Meaning |
| - | - |
| JDC-0007 | The request failed with a 4xx status that has no specific code. The `status` field carries the status. |

## Boot refusal

***

This code does not appear in an HTTP answer. The process writes it to its log and stops at boot.

| `code` | Meaning |
| - | - |
| JDC-0314 | The `spb-consumer` role shares a process with another role. Run `spb-consumer` alone. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.