Лимити на заявките и повторни опити

120 четения, 30 записа и 10 операции с националната система за е-фактуриране на минута за идентификатор, с X-RateLimit-* хедъри.

120 четения, 30 записа и 10 операции с националната система за е-фактуриране на минута за идентификатор, с X-RateLimit-* хедъри.

← Обратно към API документацията

Първата фактура в 6 стъпки

  1. Лимитите са за комплект идентификационни данни, на минута: 120 четения, 30 записа, 10 операции с националната система за е-фактуриране.
  2. Кошницата за националната система за е-фактуриране обхваща efactura/submit, submissions/{id}/refresh и efactura/inbox/sync.
  3. Всеки отговор съдържа X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset, включително 429.
  4. 429 ви дава Retry-After в секунди; изчакайте толкова, преди да опитате отново.

Какво е 4invoices API

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
// Спазвайте Retry-After; никога не опитвайте отново 4xx, различен от 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;
}

// Повторен опит за запис ТРЯБВА да използва СЪЩИЯ Idempotency-Key, иначе издавате
// втори фискален документ.

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

Лимити на заявките

BucketЗаявки / минутаКакво значи
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

Грешки

СтатусТипКод
429rate_limit_errorrate_limit_exceeded

Често срещани грешки

  • Кошницата от 10 на минута не е произволна: в Румъния ANAF позволява приблизително едно извикване за списък със съобщения на минута за CIF.
  • При повторен опит за запис използвайте СЪЩИЯ Idempotency-Key, иначе издавате втори документ.
  • Токен endpoint-ът има отделен лимит по IP. Кеширайте токена за целия му едночасов живот.
  • GET /v1/me показва текущите кошници на идентификационните данни — полезно в проверка на здравето на интеграцията.
  • Трябват ви по-високи тавани? Пишете ни през страницата Контакт с очаквания дневен обем.

Въпроси и отговори за разработчици

Лимитът за акаунт ли е или за идентификационни данни?

За идентификационни данни. Разделянето на трафика между отделни идентификационни данни за всяка система означава, че масов импорт не може да задуши живия поток на магазина ви.

Какъв експоненциално забавяне препоръчвате?

Спазвайте Retry-After, когато го има, иначе експоненциален от 1–2 секунди с най-много 5 опита. Без плътни цикли.

Съдържа ли 429 и заглавките X-RateLimit?

Да. Изпращаме ги и в самия 429 — точно там, където клиентът има нужда от тях, за да изчисли паузата.