> For the complete documentation index, see [llms.txt](https://docs.idlayr.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.idlayr.com/products/number-verification/secure-sna/error-codes.md).

# Error codes

{% hint style="info" %}
**Device API** · NV 1.0 · GA
{% endhint %}

Errors specific to Secure SNA. Two classes:

* **HTTP-response errors** — returned synchronously on API calls. RFC 7807 `application/problem+json` body with an `error_code`.
* **Terminal-state error codes** — carried in the SecureSNACheck resource body when `status` is `ERROR` or `EXPIRED`. Not HTTP errors.

This page lists only Secure SNA-specific codes. For the canonical, cross-product error catalogue with full semantics — see the [API Reference](https://docs.idlayr.com/api-reference). For client-side errors raised by the SDK before any HTTP request reaches IDlayr, see [SDK errors](/get-started/sdks/errors.md).

## HTTP-response errors

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="88.765625">HTTP</th><th width="212.35546875">Error code</th><th>When</th></tr></thead><tbody><tr><td>400</td><td><code>phone_number_invalid</code></td><td>Phone number not in valid E.164 format</td></tr><tr><td>400</td><td>🆕 <code>invalid_ip</code></td><td>The IP address provided is missing or malformed.</td></tr><tr><td>400</td><td><code>bad_request</code></td><td>Malform request body</td></tr><tr><td>401</td><td><code>unauthorized</code></td><td>Missing, invalid, or expired access token</td></tr><tr><td>403</td><td><code>invalid_scope</code></td><td>Your credentials are valid but don't have permission for this endpoint or project. Request the correct scope for your token.</td></tr><tr><td>404</td><td><code>check_not_found</code></td><td>No check exists with the supplied <code>check_id</code></td></tr><tr><td>409</td><td><code>ip_msisdn_mismatch</code></td><td>The IP and the phone number belong to different MNOs</td></tr><tr><td>412</td><td><code>not_mobile_ip</code></td><td>The IP used to create the check is not from a mobile cellular network</td></tr><tr><td>429</td><td><code>too_many_requests</code></td><td>Project rate limit exceeded</td></tr></tbody></table>

## Terminal-state error codes

Returned on the SecureSNACheck resource when `status` is `ERROR` or `EXPIRED`. The `error_code` field carries one of:

### `status: ERROR`

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="250.6171875">Error code</th><th width="102.8515625">HTTP</th><th>Meaning</th></tr></thead><tbody><tr><td>🆕 <code>mvno_not_supported</code></td><td>200 (Error field)</td><td>This phone number is from Mobile Virtual Network Operator that is not supported.</td></tr><tr><td><code>mno_user_not_found</code></td><td>200 (Error field)</td><td>This phone number isn't recognized by the mobile operator for this check.</td></tr><tr><td><code>mno_response_error</code></td><td>200 (Error field)</td><td>The mobile operator's system sent back a response we couldn't understand.</td></tr><tr><td><code>mno_server_error</code></td><td>200 (Error field)</td><td>The mobile operator's system returned an unexpected error.</td></tr><tr><td><code>mno_no_data_available</code></td><td>200 (Error field)</td><td>The mobile operator isn't able to share the information needed for this check.</td></tr><tr><td><code>ip_mismatch</code></td><td>200 (Error field)</td><td>Your network connection changed partway through verification. Restart the check on a stable connection.</td></tr><tr><td><code>ip_msisdn_mismatch</code></td><td>409</td><td>The phone number doesn't match the mobile network you're currently connected to.</td></tr><tr><td><code>not_mobile_ip</code></td><td>412</td><td>The IP address associated with the request is not from a mobile cellular network</td></tr><tr><td><code>mno_not_supported</code></td><td>422</td><td>We don't currently support this mobile operator.</td></tr><tr><td>🆕 <code>mno_not_enabled</code></td><td>422</td><td>This mobile operator isn't yet enabled for your project. Check your Approved Networks page, or request approval.</td></tr><tr><td><code>internal error</code></td><td>500</td><td>Something went wrong on our end. Retry, and contact support if it persists.</td></tr><tr><td>🆕 <code>service_unavailable</code></td><td>503</td><td>We're having a temporary issue on our side.</td></tr><tr><td><code>mno_timeout</code></td><td>504</td><td>The request to the mobile operator's system timed out.</td></tr></tbody></table>

### `status: EXPIRED`

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="252.8671875">Error code</th><th width="113.7578125">HTTP</th><th>Meaning</th></tr></thead><tbody><tr><td><code>redirect_not_performed</code></td><td>200 (status field)</td><td>The verification redirect was never executed by the device before the check expired</td></tr><tr><td><code>incomplete_redirect</code></td><td>200 (status field)</td><td>The verification redirect started but did not complete before the check expired</td></tr></tbody></table>

## Client-side SDK errors

If the SDK can't initiate the request, it returns a client-side error before any HTTP traffic reaches IDlayr. See [SDK errors](/get-started/sdks/errors.md) for the cross-platform catalogue (`sdk_no_data_connectivity`, `sdk_connection_error`, `sdk_redirect_error`, `sdk_error`, `invalid_scheme`) and the recommended action per code.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.idlayr.com/products/number-verification/secure-sna/error-codes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
