Introdução
A API v1 da Régua de Cobrança expõe programaticamente tudo que o dashboard faz na operação de cobrança: clientes, cobranças, réguas, acordos, disputas, tarefas, importações e webhooks.
Esta documentação é otimizada para LLMs: o índice completo em Markdown está em /llms.txt e o contrato da API em /openapi/openapi-v1-pt.yaml (variantes -en e -es no mesmo diretório). Prefira essas fontes a raspar o HTML.
Formato
A API aceita e devolve apenas JSON (UTF-8). Envie Content-Type: application/json em toda requisição com body.
| Tipo de campo | Formato |
|---|---|
| Campos | camelCase nas respostas e nos bodies de requisição (dueDate, documentNumber) |
| Datas | ISO 8601 em UTC. Ex.: 2026-07-23T12:00:00.000Z |
| Valores monetários | Retornados como string decimal ("1500.00") para não perder precisão; aceitos como number nas requisições |
| Filtros de listagem | Query string em snake_case (due_date_from, person_id) — ver Paginação e filtros |
Campos personalizados (customData)
Os recursos principais (clientes, cobranças, acordos, tarefas, interações) aceitam um objeto JSON livre no campo customData, para você guardar seus próprios dados junto do recurso (IDs do seu ERP, flags internas...). Em disputas, o campo equivalente chama-se customMetadata. Limites, iguais em todos:
- 64 KB de payload serializado, no máximo;
- 16 níveis de aninhamento, no máximo;
- as chaves
__proto__,constructoreprototypesão rejeitadas.
Violações respondem 400 com code: "VALIDATION_ERROR" e o motivo em details. No update, o comportamento padrão é replace: o objeto enviado substitui o armazenado por inteiro (e null limpa o campo). Para mesclar em vez de substituir, envie customDataMode: "merge" no body do update — objetos aninhados são mesclados em profundidade; escalares, arrays e null sobrescrevem a chave.
Convenções
| Convenção | Descrição |
|---|---|
:id | Variável de caminho que precisa ser substituída na URL. |
... | Conteúdo da resposta truncado para facilitar a leitura. |
$DUNNING_TOKEN | Sua chave de API. Para testar em linha de comando, exporte-a: export DUNNING_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx e cole os comandos da documentação no terminal. |
Envelope de erro
Todo erro responde com um envelope estável — message legível para humanos, code estável para máquinas (e, quando útil, details):
{
"message": "Permissão insuficiente",
"code": "FORBIDDEN"
}
Trate sempre pelo code (VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, NOT_FOUND, CONFLICT, IDEMPOTENCY_KEY_REUSED, RATE_LIMITED, INTERNAL_ERROR...) — o texto de message pode mudar sem aviso.
Códigos de retorno
A API usa os códigos HTTP padrão:
| Código | Descrição | |
|---|---|---|
| ✅ | 200 OK | Requisição bem-sucedida com corpo de resposta. |
| ✅ | 201 Created | Recurso criado com sucesso. |
| ✅ | 204 No Content | Requisição bem-sucedida, sem corpo de resposta. |
| ❌ | 400 Bad Request | Requisição malformada — JSON inválido, header de idempotência inválido. |
| ❌ | 401 Unauthorized | Chave de API ausente, inválida, revogada ou expirada. |
| ❌ | 403 Forbidden | Chave sem o escopo necessário, ou recurso administrativo inacessível via API. |
| ❌ | 404 Not Found | Recurso ou rota inexistente (ou pertencente a outra organização). |
| ❌ | 409 Conflict | Conflito de estado — reuso de X-Idempotency-Key, transição inválida. |
| ❌ | 422 Unprocessable Entity | Requisição bem formada, mas os dados não passam na validação de negócio. |
| ❌ | 429 Too Many Requests | Limite de requisições excedido — aguarde o Retry-After. |
| ❌ | 5xx | Erro no servidor — veja abaixo como re-tentar. |
Erros 5xx e retry
500, 502, 503 e 504 indicam falha no nosso lado, quase sempre transitória. Sua integração deve:
- Re-tentar com backoff exponencial (ex.: 1s, 2s, 4s, 8s...) e um teto de tentativas — nunca em loop imediato.
- Usar
X-Idempotency-Keynas mutações — o retry devolve a resposta original em vez de duplicar a operação. - Tratar timeout de rede como 5xx: não receber resposta não significa que a operação não executou; a idempotência resolve a ambiguidade.
Em 429, aguarde o número de segundos do header Retry-After antes da próxima tentativa.
Próximos passos
- Autenticação — chaves de API e escopos.
- Endpoints — ambientes e URLs base.
- Especificações OpenAPI — o contrato completo em OpenAPI 3.1.
- Rate limiting — limites e headers de resposta.
- Paginação e filtros — listagens e iteração.
- Idempotência — retries seguros em mutações.
- Webhooks — eventos em tempo real, sem polling.