Tokens
As rotas de verificacao usam Bearer token. O token sandbox e retornado uma unica vez ao criar o ambiente de teste. Tokens de producao sao emitidos depois da validacao comercial e operacional.
Authorization: Bearer $KYC_TOKENEste guia cobre apenas as rotas necessarias para empresas testarem, enviar verificacoes e consultar resultados. A ideia e permitir que equipas liguem a API aos seus sistemas sem depender de processos manuais para confirmar BI, selfie e resultado.
As rotas de verificacao usam Bearer token. O token sandbox e retornado uma unica vez ao criar o ambiente de teste. Tokens de producao sao emitidos depois da validacao comercial e operacional.
Authorization: Bearer $KYC_TOKENO token de teste permite chamar as rotas de verificacao com limite diario de 100 requests por empresa. Use este ambiente para validar a integracao antes de pedir credenciais de producao.
Use estas rotas para criar token sandbox, solicitar acesso de producao, enviar imagens e consultar resultados.
/v1/public/test-tokenCria ou reutiliza uma empresa de teste pelo NUIT e email tecnico, gera um token sandbox e retorna o token completo apenas nesta resposta.
company_namestringNome curto da empresa.
legal_namestring opcionalNome legal/comercial completo.
nuitstringNUIT da empresa.
contact_emailemailEmail tecnico para contacto.
contact_phonestring opcionalContacto telefonico.
curl -X POST https://api.ocr.orioncodetech.com/v1/public/test-token \
-H "Content-Type: application/json" \
-d '{
"company_name": "Empresa Demo",
"legal_name": "Empresa Demo Lda",
"nuit": "123456789",
"contact_email": "tecnico@empresa.co.mz",
"contact_phone": "+258840000000"
}'{
"company": {
"id": "cmp_662e16f6a49d428684978932c5fcf85f",
"name": "Empresa Demo",
"environment": "test"
},
"token": "kyc_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"token_id": "tok_...",
"token_prefix": "kyc_test_xxxxxxxx",
"scopes": ["kyc:verify", "kyc:read"],
"daily_request_limit": 100,
"docs_url": "/docs",
"message": "Token de teste criado. Use Authorization: Bearer <token> nas rotas KYC."
}/v1/public/production-token-requestsRegista um pedido de acesso live. A equipa valida os dados da empresa, caso de uso, enquadramento legal e contacto tecnico antes de emitir credenciais de producao.
company_namestringNome curto da empresa.
legal_namestring opcionalNome legal/comercial completo.
nuitstringNUIT da empresa.
contact_emailemailEmail tecnico.
contact_phonestringContacto obrigatorio.
use_casestring opcionalExemplo: onboarding digital, validacao de utilizadores, cadastro interno.
curl -X POST https://api.ocr.orioncodetech.com/v1/public/production-token-requests \
-H "Content-Type: application/json" \
-d '{
"company_name": "Empresa Demo",
"legal_name": "Empresa Demo Lda",
"nuit": "123456789",
"contact_email": "tecnico@empresa.co.mz",
"contact_phone": "+258840000000",
"use_case": "Onboarding digital de clientes"
}'{
"request_id": "evt_...",
"status": "received",
"message": "Pedido recebido. A equipa ira validar os dados e contactar a empresa."
}/v1/meConfirma que o token esta ativo e devolve a empresa associada. Use esta rota no setup inicial da integracao.
curl -X GET https://api.ocr.orioncodetech.com/v1/me \
-H "Authorization: Bearer $KYC_TOKEN"{
"company": {
"id": "cmp_...",
"name": "Empresa Demo",
"nuit": "123456789",
"status": "active",
"environment": "test"
},
"token": {
"id": "tok_...",
"token_prefix": "kyc_test_xxxxxxxx",
"scopes": ["kyc:verify", "kyc:read"],
"status": "active"
}
}/v1/kyc/verificationsEnvia a frente do BI, verso do BI e selfie do cliente. A resposta inclui a decisao, dados documentais encontrados, resultado facial, checks executados e identificador da verificacao.
external_referenceform string opcionalID interno do cliente no sistema da empresa.
document_frontfile obrigatorioImagem da frente do BI. JPEG, PNG ou WEBP.
document_backfile obrigatorioImagem do verso do BI. JPEG, PNG ou WEBP.
selfiefile obrigatorioFoto do rosto do cliente. Deve conter apenas uma pessoa.
curl -X POST https://api.ocr.orioncodetech.com/v1/kyc/verifications \
-H "Authorization: Bearer $KYC_TOKEN" \
-F "external_reference=client-123" \
-F "document_front=@bi-front.jpg;type=image/jpeg" \
-F "document_back=@bi-back.jpg;type=image/jpeg" \
-F "selfie=@selfie.jpg;type=image/jpeg"{
"verification_id": "ver_a3863ed8238f4c81b1ea28f07c0b1fbc",
"company_id": "cmp_662e16f6a49d428684978932c5fcf85f",
"external_reference": "client-123",
"status": "completed",
"decision": "pending_review",
"risk_score": 0.5,
"document": {
"type": "bi",
"document_number": "010107091480B",
"full_name": "CLIENTE EXEMPLO",
"date_of_birth": "1990-01-01",
"expiry_date": "2030-01-01",
"ocr_confidence": 0.82,
"field_confidences": {}
},
"face": {
"document_face_detected": true,
"selfie_face_detected": true,
"selfie_face_count": 1,
"face_match_score": 0.78,
"liveness_score": 0.86,
"is_match": true,
"is_live": true
},
"checks": [
{
"name": "document_front_received",
"status": "passed"
}
],
"model_versions": {
"decision_engine": "rules_v0"
},
"message": "Verificacao pendente de revisao manual.",
"created_at": "2026-05-12T23:35:43.692181",
"completed_at": "2026-05-12T23:35:43.698162"
}/v1/kyc/verifications/{verification_id}Devolve o mesmo contrato da criacao da verificacao. Use para reconstruir estado, validar uma referencia depois de uma falha de rede ou apresentar resultado em dashboards internos.
curl -X GET https://api.ocr.orioncodetech.com/v1/kyc/verifications/ver_a3863ed8238f4c81b1ea28f07c0b1fbc \
-H "Authorization: Bearer $KYC_TOKEN"/v1/kyc/verifications/{verification_id}/reportInclui o resultado da verificacao e a lista de eventos de auditoria relacionados ao processamento.
curl -X GET https://api.ocr.orioncodetech.com/v1/kyc/verifications/ver_a3863ed8238f4c81b1ea28f07c0b1fbc/report \
-H "Authorization: Bearer $KYC_TOKEN"{
"audit_events": [
{
"id": "evt_...",
"event_type": "verification.completed",
"payload": {},
"created_at": "2026-05-12T23:35:43.698162"
}
]
}approvedAprovadoDocumento, selfie e regras passaram dentro dos limites configurados.
rejectedRejeitadoA verificacao falhou em checks importantes.
pending_reviewRevisao manualDados insuficientes, baixa qualidade ou sinais inconclusivos.
passedPassouO check foi concluido com sucesso.
failedFalhouO check falhou e pode afetar a decisao.
reviewRevisaoO check exige analise manual ou informacao adicional.
skippedIgnoradoO check nao foi executado naquele contexto.
A API usa codigos HTTP padrao. O campo principal de erro edetail.
400Imagem invalidaFormato nao suportado, imagem corrompida ou ficheiro maior que o limite.
401Token ausente ou invalidoEnvie Authorization: Bearer $KYC_TOKEN.
403Acesso negadoEmpresa inativa ou token sem scope necessario.
404Nao encontradoverification_id inexistente para a empresa autenticada.
422Payload invalidoCampos obrigatorios ausentes ou com formato incorreto.
429Quota excedidaAmbiente sandbox passou o limite diario de verificacoes.
500Erro internoFalha inesperada. Repetir com mesma external_reference ajuda a rastrear.
{
"detail": "Daily sandbox request limit reached. Limit: 100 verifications per day."
}