Limites de pedidos e retentativas

120 leituras, 30 escritas e 10 operações de faturamento eletrônico por minuto e credencial, com cabeçalhos X-RateLimit-*.

120 leituras, 30 escritas e 10 operações de faturamento eletrônico por minuto e credencial, com cabeçalhos X-RateLimit-*.

← Voltar à documentação da API

A primeira fatura em 6 passos

  1. Os limites são por credencial e por minuto: 120 leituras, 30 escritas e 10 operações de faturamento eletrônico.
  2. O limite de faturamento eletrônico abrange efactura/submit, submissions/{id}/refresh e efactura/inbox/sync.
  3. Cada resposta inclui X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset, incluindo a 429.
  4. Um 429 fornece Retry-After em segundos; aguarde esse tempo antes de tentar de novo.

O que é a API 4invoices

http
HTTP/2 429
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1785312000
Retry-After: 17
Content-Type: application/json

{"error":{"type":"rate_limit_error","code":"rate_limit_exceeded",
 "message":"...","doc_url":"https://4invoices.net/ro/api-dezvoltatori#errors",
 "request_id":"req_..."}}
javascript
// Respeite o Retry-After; nunca repita um 4xx que não seja 429.
async function call(url, init, attempt = 0) {
  const res = await fetch(url, init);
  if (res.status === 429 || res.status >= 500) {
    if (attempt >= 5) return res;
    const retryAfter = Number(res.headers.get("Retry-After")) || 2 ** attempt;
    await new Promise((r) => setTimeout(r, retryAfter * 1000));
    return call(url, init, attempt + 1);
  }
  return res;
}

// Uma nova tentativa de escrita TEM de reutilizar o MESMO Idempotency-Key, senão emite
// um segundo documento fiscal.

https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json

Limites de pedidos

BucketPedidos / minutoO que significa
read120GET *, POST /invoices/preview-totals, POST /invoices/{id}/efactura/validate
write30POST /invoices, POST /invoices/{id}/storno, POST|DELETE /invoices/{id}/payments, POST /clients
submit10POST /invoices/{id}/efactura/submit, POST /efactura/submissions/{id}/refresh, POST /efactura/inbox/sync

Erros

EstadoTipoCódigo
429rate_limit_errorrate_limit_exceeded

Erros frequentes

  • O limite de 10 por minuto não é arbitrário: na Roménia, a própria ANAF permite aproximadamente uma chamada de listagem de mensagens por minuto e por CIF.
  • Ao repetir uma escrita, reutilize a MESMA Idempotency-Key; caso contrário, emite um segundo documento.
  • O endpoint de tokens tem um limite por IP separado. Guarde o token em cache durante toda a sua validade de uma hora.
  • GET /v1/me mostra os limites atuais da credencial — útil numa verificação do estado da integração.
  • Precisa de limites mais elevados? Escreva-nos através da página de Contato, indicando o volume diário previsto.

Perguntas e respostas para desenvolvedores

O limite é por conta ou por credencial?

Por credencial. Repartir o tráfego por credenciais por sistema garante que uma importação em massa não deixa sem capacidade o fluxo em tempo real da sua loja.

Que backoff recomendam?

Respeite Retry-After quando estiver presente; caso contrário, backoff exponencial a partir de 1–2 segundos, com um máximo de 5 tentativas. Nada de ciclos apertados.

O 429 também inclui os cabeçalhos X-RateLimit?

Sim. Emitimo-los no próprio 429, que é precisamente onde um cliente precisa deles para calcular a pausa.