# Errors

We use HTTP response codes to indicate specific error classes (2xx range is success, 4xx failed based on the provided parameters, 5xx are server errors). Each error has a machine readable id, and a human readable explanation. Authentication is done by passing the API key via the Authorization header.

### Status Codes <a href="#status-codes" id="status-codes"></a>

| Code | Description                                                                                         |
| ---- | --------------------------------------------------------------------------------------------------- |
| 200  | The request was a success.                                                                          |
| 401  | Request failed because user is not authenticated.                                                   |
| 403  | Request failed because user does not have authorization to access a specific resource.              |
| 404  | Resource doesn’t exist.                                                                             |
| 409  | The request conflicts with another request.                                                         |
| 422  | Your request was understood, but contained invalid parameters.                                      |
| 500  | Something went wrong on the server, check status site and/or report the issue.                      |
| 503  | Service is temporarily unavailable. Generally this is temporary and the requests should be retried. |

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

| Type            | Description                                          |
| --------------- | ---------------------------------------------------- |
| unauthenticated | Request failed because the user is authenticated.    |
| unauthorized    | User does not have access to the specified resource. |
| not\_found      | Resource was not found.                              |
| server\_error   | Internal server error.                               |
| invalid\_params | Parameters were not valid.                           |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tsgglobal.com/api-reference/programmable-sms/smpp/errors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
