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

# Sandbox

> Ambiente de testes com CPFs mágicos para simular todos os resultados de KYC.

## Visão Geral

O sandbox é um ambiente isolado para desenvolvimento e integração. Nenhum crédito real é debitado, mas o fluxo completo é executado — sessão, widget, webhook — exatamente como em produção.

Para usar o sandbox:

1. Use uma API Key com prefixo `sk_test_`
2. Envie `"ambiente": "sandbox"` na criação da sessão
3. Use os CPFs mágicos abaixo no campo `external_id`

***

## CPFs Mágicos — KYC

O `external_id` determina o resultado da verificação no sandbox. Use esses valores para testar cada cenário:

| `external_id`        | Status retornado | `score_composto` |
| -------------------- | ---------------- | ---------------- |
| `11111111111`        | `approved`       | 95               |
| `22222222222`        | `rejected`       | 20               |
| `33333333333`        | `manual_review`  | 65               |
| Qualquer outro valor | `approved`       | 80               |

O webhook é disparado normalmente após a conclusão — use `22222222222` para simular a notificação de uma rejeição.

***

## Documentos de Teste

No sandbox, **qualquer imagem é aceita** — a pipeline de OCR, face match e liveness é ignorada. Você pode usar uma foto qualquer para completar o fluxo do widget.

O resultado é determinado exclusivamente pelo `external_id` da sessão.

***

## Comportamento do Sandbox

| Evento          | Sandbox                         | Produção                  |
| --------------- | ------------------------------- | ------------------------- |
| OCR             | Ignorado                        | Executado                 |
| Face match      | Ignorado                        | Executado                 |
| Liveness        | Ignorado (qualquer vídeo passa) | Executado                 |
| Crédito KYC     | Não debitado                    | Debitado                  |
| Webhook         | Disparado normalmente           | Disparado normalmente     |
| Assinatura HMAC | Presente (se configurado)       | Presente (se configurado) |

***

## Exemplo Completo em Sandbox

```bash theme={null}
# 1. Criar sessão — external_id define o resultado
curl -X POST https://api-kyc.campeaosec.com/v1/verify/session \
  -H "Authorization: Bearer sk_test_sua_chave" \
  -H "Content-Type: application/json" \
  -d '{
    "country": "BR",
    "external_id": "11111111111",
    "ambiente": "sandbox",
    "webhook_url": "https://seu-servidor.com/webhook"
  }'

# Resposta:
# {
#   "session_token": "abc123...",
#   "expira_em": "2026-07-30T11:00:00Z"
# }

# 2. Passar o session_token para o widget no frontend
# 3. Webhook será recebido com status "approved" e score_composto 95
```

***

## Webhook no Sandbox

O payload do webhook no sandbox tem o mesmo formato da produção, com `"modo": "FULL_KYC"` e scores fixos conforme a tabela de CPFs mágicos.

```json theme={null}
{
  "event": "verification.completed",
  "verification_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "external_id": "11111111111",
  "status": "approved",
  "country": "BR",
  "modo": "FULL_KYC",
  "created_at": "2026-07-30T10:00:00Z",
  "completed_at": "2026-07-30T10:00:01Z",
  "scores": {
    "composto": 95,
    "face_match": null,
    "liveness": null,
    "antifraude": null
  },
  "ocr": {
    "nome": null,
    "documento_numero": null,
    "data_nascimento": null
  }
}
```
