120 читања, 30 запишувања и 10 операции на е-фактурирање во минута по акредитив, со X-RateLimit-* заглавија.
← Назад кон API документацијата
Првата фактура во 6 чекори
- Ограничувањата важат по акредитив, по минута: 120 читања, 30 запишувања, 10 операции на е-фактурирање.
- Кофата за е-фактурирање ги опфаќа efactura/submit, submissions/{id}/refresh и efactura/inbox/sync.
- Секој одговор носи X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset, вклучително и 429.
- 429 ви дава Retry-After во секунди; почекајте толку пред повторен обид.
Што е 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
// Почитувајте го 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) | Барања / минута | Значење |
|---|---|---|
| read | 120 | GET *, POST /invoices/preview-totals, POST /invoices/{id}/efactura/validate |
| write | 30 | POST /invoices, POST /invoices/{id}/storno, POST|DELETE /invoices/{id}/payments, POST /clients |
| submit | 10 | POST /invoices/{id}/efactura/submit, POST /efactura/submissions/{id}/refresh, POST /efactura/inbox/sync |
Грешки
| Статус | Тип | Код |
|---|---|---|
| 429 | rate_limit_error | rate_limit_exceeded |
Чести грешки
- Кофата од 10 во минута не е произволна: во Романија самата ANAF дозволува приближно едно барање за список на пораки по минута по CIF.
- При повторување на запишување користете ИСТ Idempotency-Key, инаку ќе издадете втор документ.
- Крајната точка за токени има посебно ограничување по IP. Чувајте го токенот во кеш цел негов еден-часовен век.
- GET /v1/me ги покажува тековните кофи на акредитивот — корисно при проверка на здравјето на интеграцијата.
- Ви требаат повисоки граници? Пишете ни преку страницата Контакт со вашиот очекуван дневен обем.
Прашања и одговори за програмери
Ограничувањето е по сметка или по акредитив?
По акредитив. Поделбата на сообраќајот по акредитив за секој систем значи дека масовен увоз не може да ја изгладни живата работа на вашата продавница.
Кој backoff го препорачувате?
Почитувајте го Retry-After кога го има, а инаку експоненцијален од 1–2 секунди со највеќе 5 обиди. Без стегнати јамки.
Дали 429 ги носи и X-RateLimit заглавијата?
Да. Ги испраќаме баш на самиот 429, а таму клиентот ги треба за да ја пресмета паузата.