> For the complete documentation index, see [llms.txt](https://wyre-1.gitbook.io/wyre-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wyre-1.gitbook.io/wyre-docs/understanding-api-errors.md).

# Understanding API Errors

Successful requests will be a HTTP 200 response after any successful call. The body of successful requests depend on the endpoint.

Whenever a problem occurs, Wyre will respond to the client using a `4xx` or `5xx` status code. In this case, the body of the response will be an exception object which describes the problem. All\
`4xx` errors indicate a problem with your request, while `5xx` indicate an internal problem with our systems.

All exceptions come equipped with an exception ID (the `exceptionId` field). In the case you require\
support, please supply this ID to assist our support team in locating your issue.

The following table describes the fields on the returned JSON exception:

| Field         | Description                                                                                                                           |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `exceptionId` | A unique identifier for this exception. This is very helpful when contacting support                                                  |
| `type`        | The category of the exception. See [below](https://docs.sendwyre.com/v3/docs/errors#error-types)                                      |
| `errorCode`   | A more granular specification than `type`                                                                                             |
| `message`     | A human-friendly description of the problem                                                                                           |
| `language`    | Indicates the language of the exception message                                                                                       |
| `transient`   | In rare cases, an exception may signal `true` here to indicate a transient problem. This means the request can be safely re-attempted |

An example JSON representation of an `AccessDeniedException`

```
{
    "language": "en",
    "exceptionId": "TLFN89",
    "errorCode": "accessDenied.invalidSession",
    "message": "Invalid Session",
    "type": "AccessDeniedException",
    "transient": false
}
```

### Error Types <a href="#error-types" id="error-types"></a>

| Exception Type               | Details                                                                                                                                                                                 | HTTP Status Code |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `ValidationException`        | The action failed due to problems with the request.                                                                                                                                     | 400              |
| `InsufficientFundsException` | You requested the use of more funds in the specified currency than were available                                                                                                       | 400              |
| `AccessDeniedException`      | You lack sufficient privilege to perform the requested action                                                                                                                           | 401              |
| `TransferException`          | There was a problem completing your transfer request                                                                                                                                    | 400              |
| `MFARequiredException`       | An MFA action is required to complete the request. In general you should not get this exception while using API keys                                                                    | 400              |
| `CustomerSupportException`   | Please contact us at <support@sendwyre.com> to resolve this!                                                                                                                            | 400              |
| `NotFoundException`          | You referenced something that could not be located                                                                                                                                      | 404              |
| `RateLimitException`         | Your requests have exceeded your usage restrictions. Please contact us if you need this increased                                                                                       | 429              |
| `AccountLockedException`     | <p>The account has had a locked placed on it for potential fraud reasons.</p><p>The customer should <a href="https://support.sendwyre.com/">contact Wyre support</a> for follow-up.</p> | 400              |
| `LockoutException`           | The account or IP has been blocked due to detected malicious behavior                                                                                                                   | 403              |
| `UnknownException`           | A problem with our services internally. This should rarely happen                                                                                                                       | 500              |
