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

# Errors and troubleshooting

> Handle access, input, allowance and temporary failures.

REST failures use an HTTP status and a JSON error object, for example:

```json theme={null}
{
  "error": {
    "code": "invalid_input",
    "message": "Invalid input. Check the operation schema."
  }
}
```

| HTTP status | What to do                                                                                                  |
| ----------- | ----------------------------------------------------------------------------------------------------------- |
| `400`       | Check required fields, input formats and the idempotency key. Unknown input fields are rejected.            |
| `401`       | Check that your credential is valid, unrevoked and for the correct environment.                             |
| `402`       | An active allowance is missing, exhausted, unavailable or reversed. Check the dashboard.                    |
| `404`       | No matching identity was found, or the endpoint is unknown.                                                 |
| `405`       | Use `POST` for the four data operations. The authentication check uses `GET`.                               |
| `409`       | Resolve an idempotency conflict, or search first and use a returned company ID to disambiguate a domain.    |
| `413`       | Reduce the request body below the 16 KiB limit.                                                             |
| `429`       | Wait at least a minute for an account-limit failure. Use bounded backoff for provider limits.               |
| `502`       | A provider request failed, timed out or returned an unsupported profile. Retry with bounded backoff.        |
| `503`       | A request timed out, was cancelled or encountered a temporary failure. Retry with the same idempotency key. |

## Safe retries

Use a small, bounded number of retries with increasing delays for temporary
failures. For lookups, keep the same idempotency key and unchanged request input.
A transport timeout is not evidence that no profile was deducted. Do not keep
retrying invalid input or an unavailable allowance.

Company lookup accepts exactly one returned `company_id` or bare website `domain`.
Person lookup accepts exactly one returned `person_id` or public HTTPS LinkedIn
`/in/` URL without query parameters or a fragment. People search needs `query` or
`company`; optional country codes use two uppercase letters.

## MCP failures

Tools can return an MCP error result with a structured error in the text content.
Inspect the error code instead of treating the message as profile data.
`account_not_ready` means you need to sign in to the dashboard first. A disconnected
or expired authorization cannot be used for data requests.

## Get help

Use Support in the [dashboard](https://app.datalayer.so). Include the endpoint or
tool name, approximate time, request ID if available, and redacted error code.
Never include API keys, tokens or person payloads. Replies currently appear in the
dashboard; email notifications are not available yet.
