Limites canônicos da API SignDocs Brasil, headers retornados, comportamento esperado e como pedir aumento de quota.
A API aplica rate limiting em duas camadas:
/oauth2/token.Quotas por tenant variam por plano, controladas pelo client_id do token Bearer. Quando você está rate-limited pelo Gateway, recebe HTTP 429 Too Many Requests com Problem Details no corpo:
{
"type": "https://signdocs.com.br/problems/rate-limit-exceeded",
"title": "Rate limit excedido",
"status": 429,
"detail": "Cliente excedeu a quota do plano. Tente novamente em 12 segundos.",
"instance": "/v1/transactions"
}
Todas as respostas da API (sucesso ou erro) carregam:
| Header | Significado | Exemplo |
|---|---|---|
RateLimit-Limit |
Máximo de requisições permitidas na janela atual | 100 |
RateLimit-Remaining |
Requisições ainda disponíveis na janela | 97 |
RateLimit-Reset |
Unix timestamp (segundos) para o reset da janela | 1714325400 |
Retry-After |
Segundos a aguardar (presente em 429) | 12 |
Padrão segue draft IETF draft-ietf-httpapi-ratelimit-headers.
Retry-After quando recebe 429.RateLimit-Remaining em métricas operacionais — se cair para perto de zero rotineiramente, a quota está dimensionada errada para o caso de uso.Exemplo de pseudocódigo:
async function callWithBackoff(req: () => Promise<Response>) {
const maxAttempts = 5;
let attempt = 0;
while (attempt < maxAttempts) {
const res = await req();
if (res.status !== 429) return res;
const retryAfter = Number(res.headers.get('Retry-After') ?? 1);
const jitter = Math.random() * 0.5;
await sleep((retryAfter + jitter) * 1000);
attempt += 1;
}
throw new Error('Rate limit persistente após retries');
}
Os números abaixo são padrão; clientes Enterprise podem negociar limites diferentes.
| Plano | Transações/mês | Sandbox/dia | Biometria/dia (HML) |
|---|---|---|---|
| Iniciante | 10 000 | 500 | 250 |
| Avançado | 50 000 | 500 | 250 |
| Enterprise | 250 000+ | conforme contrato | conforme contrato |
Para necessidades pontuais que excederão a quota habitual (campanhas de marketing, picos sazonais, importações em massa), abra ticket com pelo menos 5 dias úteis de antecedência em suporte@signdocs.com.br informando:
A SignDocs Brasil ajusta limites temporariamente sem custo dentro do dimensionamento do plano. Sustentado, requer upgrade.
Picos não anunciados e padrões suspeitos disparam o pipeline anti-abuso descrito em aup.md:
Retry-After mais longo)Disputa de classificação anti-abuso: suporte@signdocs.com.br. Caso envolva suspeita de comprometimento da chave: security@signdocs.com.br.
Apenas:
GET /health (probes externos)GET /v1/verify/{evidenceId} (verificador público — tem rate limit por IP do verificador, não por tenant)GET /v1/verify/envelope/{envelopeId} (idem)Esses endpoints continuam sujeitos ao WAF.