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

# Como funciona

> Um endpoint, vários serviços, um resultado por serviço.

Todas as consultas passam por [`POST /v1/services`](https://api-docs.omni-ward.com/api-reference/executar-servicos). Você lista os serviços em `services`, envia cada identificador uma vez, e recebe um item de resultado para cada serviço.

```json theme={null}
{
  "services": ["SERVICE_CORPORATE_DATA_ENRICHMENT", "SERVICE_RFB_PF", "SERVICE_EMAIL_VALIDATION"],
  "cnpj": "00000000000000",
  "cpf": "00000000000",
  "email": "pessoa@exemplo.com",
  "purpose": "Abertura de conta"
}
```

## As três etapas

**1. Validação**

Antes de qualquer consulta, cada serviço é conferido: alias conhecido e sem repetição, campos obrigatórios presentes, formato válido (dígito de CPF e CNPJ, e-mail, data, base64), produto ativo, acesso a produção, finalidade quando há dados pessoais, e saldo para o lote inteiro.

Se algo falhar, a resposta é `422 validation_failed` com todos os problemas de uma vez. **Nada é consultado nem cobrado.** Veja [Erros](https://api-docs.omni-ward.com/consultas/erros.md).

**2. Execução em paralelo**

Com tudo válido, os serviços rodam ao mesmo tempo. O tempo total é o do serviço mais lento, não a soma.

**3. Um resultado por serviço**

`results` traz um item por alias, na ordem pedida. Cada item tem o próprio `status`: um serviço pode falhar sem afetar os outros, e o que falha não é cobrado.

## Resposta

```json theme={null}
{
  "results": [
    {
      "service": "SERVICE_RFB_PF",
      "status": { "code": 200, "message": "Success" },
      "result": { "cpf": "00000000000", "status": "REGULAR", "name": "NOME DA PESSOA", "outcome": "clear" },
      "simulated": false,
      "costMinor": 60
    },
    {
      "service": "SERVICE_EMAIL_VALIDATION",
      "status": { "code": 502, "message": "O provedor não concluiu a operação. Nenhum valor foi cobrado." },
      "result": null,
      "error": { "code": "provider_failure", "message": "O provedor não concluiu a operação. Nenhum valor foi cobrado." }
    }
  ],
  "totalCostMinor": 60
}
```

| Campo | Descrição |
| - | - |
| `results[].service` | O alias pedido |
| `results[].status` | Código e mensagem deste serviço; `200` quando a consulta foi feita |
| `results[].result` | Dados da consulta, ou `null` se este serviço falhou |
| `results[].error` | Código e mensagem da falha, quando houver |
| `results[].simulated` | `true` quando os dados são fictícios (sandbox) |
| `results[].costMinor` | Valor cobrado por este serviço, em centavos |
| `totalCostMinor` | Total cobrado na requisição, em centavos |

> [!TIP]
>
> Leia sempre o `status` de cada item. HTTP 200 significa que a requisição foi processada, não que todos os serviços tiveram sucesso.


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