Pular para o conteúdo principal

Quickstart

Este guia apresenta o caminho mínimo para obter um resultado de classification do DVS. A validation funciona da mesma forma — basta substituir o endpoint no passo 3 e o evento de resultado no passo 5.

Pré-requisitos

É necessário já ter:

  • Credenciais de sandbox (client_id e client_secret) emitidas pela OSIGU. Todos os exemplos deste guia apontam para sandbox — ao ir para produção, troque para os hosts de produção (https://dvs-ingestion-api.osigu.com para a API e https://api.osigu.com/v1/oauth/token para o OAuth) e use as credenciais de produção.
  • Acesso de rede a partir dos servidores para https://dvs-ingestion-api.sandbox.osigu.com (DVS) e https://sandbox.osigu.com (OAuth).
  • Um documento de teste (PDF ou imagem) para classificar.

1. Obtenha um access token

OAuth2 client credentials grant. Envie o client_id:client_secret como HTTP Basic auth e o grant_type como parâmetro de query string:

curl --location --request POST \
"https://sandbox.osigu.com/v1/oauth/token?grant_type=client_credentials" \
--header "Authorization: Basic $(echo -n "$CLIENT_ID:$CLIENT_SECRET" | base64)"

Response:

{
"access_token": "7dd4f350-676e-4257-9d7b-f3c5ac4dfi14",
"token_type": "bearer",
"expires_in": 86399,
"scope": "read write",
"extensions": { "provider_slug": "br-gamma" }
}

O access_token é uma string opaca (não é um JWT) válida por ~24 horas por padrão. O mapa extensions carrega metadados sobre o tenant (ex.: provider_slug) — útil para logging e debugging.

Faça cache do token em memória e reutilize-o até próximo à expiração. Não chame o endpoint do OAuth a cada request da API.

Veja Obtendo Access Tokens para a referência completa.

2. Prepare o documento

É possível enviar o documento de três formas:

Melhor para arquivos abaixo de 3 MB. Sem setup necessário.

BASE64=$(base64 -i document.pdf)

3. Classifique o documento

curl -X POST https://dvs-ingestion-api.sandbox.osigu.com/v1/classification-requests \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: req-$(uuidgen)" \
-d "{
\"mode\": \"sync\",
\"file\": {
\"content_base64\": \"$BASE64\",
\"mime_type\": \"application/pdf\"
},
\"country_code\": \"BR\",
\"external_ref_id\": \"my-internal-id-12345\"
}"

4. Leia a response

Em caso de sucesso, é retornado 200 OK (sync) ou 202 Accepted (async). A response síncrona tem este formato:

{
"classification_request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "SADT",
"status": "COMPLETED",
"classifier_slug": "br-default-v1",
"mode": "sync",
"auto_validate": false,
"validation_request_id": null,
"external_ref_id": "my-internal-id-12345",
"timestamp": "2026-06-03T17:42:18.224Z",
"duration_ms": 3187
}

O type é um dos 17 tipos de documentos brasileiros — veja Tipos de Documentos para o catálogo completo.

5. (Somente async) Receba o webhook

Caso o modo escolhido seja mode=async, a response é 202 Accepted com o classification_request_id. O DVS envia um webhook assinado ao endpoint registrado quando o processamento é concluído.

A implementação do receiver leva menos de 30 linhas de código em qualquer linguagem. Acesse Implementar Receiver de Webhook para a receita completa com verificação HMAC.

Próximos passos