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

# Errors & status codes

> What to expect when something's missing or wrong.

| Situation | Status | Code |
| - | - | - |
| Contact not found (by id or email) | `400` | `BAS-E-002` |
| List or email not found | `404` | `NOT_FOUND` |
| Duplicate list name | `409` | `LIST_ALREADY_EXISTS` |
| Duplicate email name | `409` | `TEMPLATE_ALREADY_EXISTS` |
| Request body fails validation | `400` | `VALIDATION_ERROR`, with a field detail such as `fromEmail._schema` |
| From-email domain not approved for the org | `400` | `UnapprovedEmailDomainException` |
| Removing an unknown contact from a list | `404` | `CONTACT_NOT_FOUND` |
| Rate limit exceeded | `429` | See [Rate Limits](/api-reference/rate-limits) |

<Warning>
  A missing **contact** returns `400`, while a missing **list** or **email** returns `404`. Handle both. Don't assume a single not-found code across resources.
</Warning>

## Errors inside a 200

Two cases return `200` and still carry an error signal. Check the body, not just the status:

* **Bulk member add with unknown ids**: the valid ids are added, and the response's `errors[]` array carries `CONTACTS_NOT_FOUND` for the ids that were skipped.
* **Unknown transaction id**: `GET /v2/contacts/transactions/{transactionId}` returns `200` with `status: NOT_EXIST` instead of an HTTP error.


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