> For the complete documentation index, see [llms.txt](https://support.ordereazi.com/central/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.ordereazi.com/central/developers/responses-errors-and-warnings.md).

# Responses, errors, and warnings

The OrderEazi API's response envelope, its status codes, warnings and warning codes, and how dates and numbers are formatted.

Your integration needs to know when a call worked, and why it didn't. Most OrderEazi API responses use the same envelope, with a success flag, any warnings, and the data.

### The response envelope

```json
{
  "Success": true,
  "Warnings": [],
  "Data": { }
}
```

* **`Success`:** This is `true` when the call worked.
* **`Warnings`:** This is a list of problems, each with a `Number` and a `Message`. Some warnings also have a `Code`. It can be empty or `null` when the call worked.
* **`Data`:** This is the result, such as a client or a list of products. It's `null` when the call failed.

Response property names are in PascalCase. Request property names aren't case sensitive.

A few older endpoints return a plain value instead of the envelope. The [API reference](/central/developers/finding-your-api-reference.md) shows each endpoint's response.

### Status codes

| Code  | When                                                                                                                                                           |
| ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200` | The call worked.                                                                                                                                               |
| `400` | The call failed: a field is invalid, a business rule blocked it, or, in most endpoints, the record doesn't exist. Read `Warnings`.                             |
| `401` | The `X-OrderEazi-Key` header is missing, or the key is wrong.                                                                                                  |
| `403` | The key doesn't have the permission the endpoint needs.                                                                                                        |
| `404` | The address doesn't exist, such as a typo in the path, or a version in the path. Version 2.0 client lookups also return `404` for a client that doesn't exist. |
| `405` | The method isn't allowed, such as GET on a POST endpoint.                                                                                                      |
| `429` | You've made too many calls. See [Rate limits](/central/developers/rate-limits.md).                                                                             |
| `500` | Something went wrong in OrderEazi. Try again later, and if it keeps happening, contact OrderEazi support with the reference.                                   |

Some error messages end with a reference, such as `(Reference: 4bf92f3577b34da6a3ce929d0e0e4736)`. Include it when you contact OrderEazi support, so they can find the call.

### Validation errors

When a field is missing or invalid, you get a `400`, with a warning for each problem. Each warning's `Number` is `400`, and its `Message` names the field:

```json
{
  "Success": false,
  "Warnings": [
    { "Number": 400, "Message": "Email: The Email field is not a valid e-mail address." }
  ],
  "Data": null
}
```

### Warning codes

Some endpoints add a `Code` to their warnings, so your integration can react without reading the message. The same code means different things on different endpoints, so read it together with the endpoint.

* **Documents and stock:** Codes `0` to `30` cover records that weren't found or can't be changed. Examples are a Sales Order (the document that confirms an order to the client) that doesn't exist, or a warehouse in the middle of a stocktake. `999` is an unexpected error, `1000` an invalid quantity, and `1001` a serial number that's already linked.
* **Orders:** `0` is an invalid order request, `1` a Sales Order that couldn't be created, `2` a project workflow that couldn't move on, and `999` an unexpected error.
* **Project documents:** `0` is an invalid document request, `100` insufficient stock, and `999` an unexpected error.

The [API reference](/central/developers/finding-your-api-reference.md) lists the codes each endpoint can return.

### Dates, numbers, and request format

* **Dates:** Dates are in ISO 8601 format, such as `2026-11-06T09:30:00`. Dates without a time zone are in UTC.
* **Numbers:** Amounts and quantities are JSON numbers, with a full stop for decimals. The rounding endpoints return amounts as strings, so they keep every decimal.
* **Requests:** Send JSON, with the `Content-Type: application/json` header.

### What the API does not do

**No duplicate check:** Sending the same order twice creates it twice. If a call times out, check in OrderEazi whether the order arrived before you send it again.

### Related pages

* [Authentication](/central/developers/authentication.md): the `401` and `403` responses
* [Rate limits](/central/developers/rate-limits.md): the `429` response
