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

# API responses

> OTP API response codes for request and verify operations.

Specific API response codes may be displayed when send or verify operations fail. The most common codes are listed below.

***

## Success codes

| Code  | Description                                             |
| ----- | ------------------------------------------------------- |
| `100` | SMS sent successfully — OTP message has been submitted. |
| `117` | Valid PIN — PIN is correct.                             |

***

## Request OTP errors

| Code  | Description                                                                 |
| ----- | --------------------------------------------------------------------------- |
| `101` | Failed to send SMS — failed to send the OTP PIN generated.                  |
| `102` | Invalid phone number — invalid MSISDN.                                      |
| `103` | Phone number missing — MSISDN parameter is missing.                         |
| `104` | Application ID missing — application ID parameter is missing.               |
| `106` | Application not found.                                                      |
| `107` | Application is inactive — application status is inactive.                   |
| `108` | No channel found — channel is not set for the application.                  |
| `109` | Placeholder not found — template definition does not contain a placeholder. |
| `110` | Username or Password missing — credentials for sending OTP SMS are missing. |

***

## Verify OTP errors

| Code  | Description                                                            |
| ----- | ---------------------------------------------------------------------- |
| `111` | PIN missing — PIN parameter is missing.                                |
| `112` | `pinId` missing — `pinId` parameter is missing.                        |
| `113` | `pinId` not found — `pinId` is inactive or incorrect.                  |
| `114` | Incorrect PIN — PIN sent is not correct.                               |
| `115` | PIN timeout — PIN has expired.                                         |
| `116` | Attempts exceeded — PIN verification attempts have exceeded the limit. |
| `118` | Duplicate PIN — PIN is used again.                                     |

***

## HTTP status codes

| HTTP status | Typical cause                          |
| ----------- | -------------------------------------- |
| `200`       | OTP requested or verified successfully |
| `400`       | Missing or invalid parameters          |
| `401`       | Invalid authentication                 |

### Authentication error example

```json theme={null}
HTTP/1.1 401 Unauthorized
{
  "code": 120,
  "message": "Invalid Authentication Parameters"
}
```

***

## Related

* [Verification flow](/guides/otp/verification-flow) — request and verify OTP
* [OTP lifecycle](/guides/otp/otp-lifecycle) — PIN expiry and retry behaviour
* [Authentication](/guides/otp/authentication) — API credentials
