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

# Referência de erros

> Todos os erros que a API pública /v1 da Living Security pode retornar, com o respetivo código estável legível por máquina, o status HTTP e como resolvê-los.

Toda resposta de erro `/v1` é `application/problem+json` ([RFC 9457](https://www.rfc-editor.org/rfc/rfc9457)) com um conjunto fixo de campos:

```json theme={null}
{
  "type": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "No such organization.",
  "code": "resource_not_found",
  "request_id": "req_...",
  "doc_url": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "retryable": false
}
```

Use `code` como critério de ramificação, nunca `detail` — `code` é um contrato estável legível por máquina; `detail` é legível por pessoas e pode mudar. `param` está presente quando o erro é atribuível a um parâmetro específico da requisição. Inclua `request_id` ao entrar em contato com o suporte.

## Códigos de erro

| Código | Status HTTP | Nova tentativa possível |
| - | - | - |
| [`unauthorized`](/pt/developers/v1/errors/unauthorized) | 401 | Não |
| [`credential_inactive`](/pt/developers/v1/errors/credential_inactive) | 401 | Não |
| [`credential_expired`](/pt/developers/v1/errors/credential_expired) | 401 | Não |
| [`credential_revoked`](/pt/developers/v1/errors/credential_revoked) | 401 | Não |
| [`not_entitled`](/pt/developers/v1/errors/not_entitled) | 403 | Não |
| [`insufficient_permission`](/pt/developers/v1/errors/insufficient_permission) | 403 | Não |
| [`permission_denied`](/pt/developers/v1/errors/permission_denied) | 403 | Não |
| [`resource_not_found`](/pt/developers/v1/errors/resource_not_found) | 404 | Não |
| [`invalid_request`](/pt/developers/v1/errors/invalid_request) | 400 ou 409 | Não |
| [`invalid_filter`](/pt/developers/v1/errors/invalid_filter) | 400 | Não |
| [`unsupported_version`](/pt/developers/v1/errors/unsupported_version) | 400 | Não |
| [`idempotency_key_reuse`](/pt/developers/v1/errors/idempotency_key_reuse) | 409 | Depende do conflito |
| [`rate_limited`](/pt/developers/v1/errors/rate_limited) | 429 | Sim |
| [`service_unavailable`](/pt/developers/v1/errors/service_unavailable) | 503 | Sim |
| [`internal_error`](/pt/developers/v1/errors/internal_error) | 500 | Sim |

O conjunto de códigos é fechado: novos códigos representam uma alteração do contrato público e são anunciados por meio do changelog da API. Uma resposta `retryable: true` significa que a condição pode ser resolvida; não comprova que uma gravação não teve efeito. Repita as leituras com um limite finito de tentativas e de tempo, com backoff exponencial e jitter. Respeite `Retry-After` quando presente, inclusive em um `409` ou `429` passível de nova tentativa.

Para mutações, siga o contrato de idempotência e recuperação documentado da operação. Preserve a chave original e a requisição original quando houver suporte. Não gere uma nova chave após um timeout ou `5xx`: isso pode repetir uma gravação que já foi concluída com êxito. Um cabeçalho `Idempotency-Key` não oferece nenhuma proteção em uma operação que não o suporte.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.