Limity i kody błędów
API używa standardowych kodów statusu HTTP. Body błędu ma format zgodny z klientem, którego używasz, więc SDK OpenAI i Anthropic odczytają je bez zmian.
Format błędów
Endpointy w formacie OpenAI zwracają obiekt error z polami message, type i code. Endpointy w formacie Anthropic zwracają "type": "error" z obiektem error zawierającym type i message. Błędy występujące w trakcie streamu są wysyłane jako zdarzenie o tej samej strukturze.
402
{
"error": {
"message": "GeraiPoints tidak cukup, silakan top up",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}Treść
message jest w języku indonezyjskim i może się zmieniać. W logice programu sprawdzaj kod statusu HTTP oraz type/code, a nie tekst komunikatu.Kody statusu
| Status | type / code | Znaczenie | Co zrobić |
|---|---|---|---|
| 400 | invalid_request_error | Nieprawidłowe zapytanie: body nie jest JSON-em, model jest pusty albo brakuje messages lub jest puste. Pojawia się też przy błędnym base URL, przez który ścieżka zmienia się w /v1/v1/…. | Sprawdź body i base URL. |
| 401 | authentication_error | Klucz API nie został przesłany, jest błędny lub unieważniony — albo użyto go na niewłaściwej ścieżce (klucz bansos na płatnym endpoincie i odwrotnie). | Sprawdź klucz i base URL — Uwierzytelnianie. |
| 402 | insufficient_quota | Za mało GeraiPoints na to zapytanie. | Doładuj GeraiPoints i wyślij ponownie. |
| 403 | permission_error | Modelu nie ma na allowliście tego klucza albo jest to model dostępny tylko w planie, którego jeszcze nie masz. | Dodaj model do allowlisty klucza albo użyj innego klucza. |
| 404 | model_not_found | Nieznane id modelu lub model chwilowo niedostępny. Nazwy z prefiksem, np. gp/… czy openai/…, również dają 404. | Skopiuj dokładne id z listy modeli. |
| 413 | — | Body zapytania jest zbyt duże, aby serwer je przyjął. | Skróć historię rozmowy lub zmniejsz załączniki. |
| 429 | rate_limit_error | Za dużo zapytań: przepustowość modelu jest wyczerpana albo przekroczono limit planu Unlimited/Bansos. | Odczekaj czas z Retry-After (jeśli jest), a potem ponów z przerwami. |
| 502 | api_error | Usługa modelu jest przeciążona lub ma problemy; zapytanie nie jest rozliczane. | Spróbuj ponownie za kilka sekund albo użyj innego modelu. |
| 503 | api_error | Model jest w trakcie konserwacji lub chwilowo niedostępny; zapytanie nie jest rozliczane. | Spróbuj ponownie później albo użyj innego modelu. |
Limity użycia
| Rodzaj | Limit |
|---|---|
| Płatny klucz (gk-) | Brak stałego limitu częstotliwości na klucz; użycie ogranicza saldo GeraiPoints. 429 pojawia się tylko wtedy, gdy przepustowość modelu jest wyczerpana. |
| Plan Unlimited | Limit zapytań na minutę i jednoczesnych zapytań na konto. Odpowiedzi 429 zawierają Retry-After i x-ratelimit-*. Szczegóły na stronie Unlimited. |
| Darmowy plan (Bansos) | Dzienny limit zapytań i limit na minutę. Odpowiedzi 429 zawierają Retry-After i x-ratelimit-*. Pozostały limit na stronie Bansos. |
| Rozmiar i odpowiedź | Zbyt duże body jest odrzucane kodem 413. Długość odpowiedzi (max_tokens) może zostać automatycznie obniżona, jeśli saldo nie wystarcza na żądaną wartość. |
| Klucz API | Limit aktywnych kluczy na konto: 20; allowlista do 64 modeli na klucz. |
| Klucze klientów | Limity działają przed przetworzeniem: żądanie, które przekroczyłoby pozostały limit, jest odrzucane. Limit jednorazowy wyczerpany → 402 KEY_BATAS_HABIS (zwiększ limit, aby dodać); limit dzienny/miesięczny osiągnięty → 429 KEY_BATAS_HARIAN / KEY_BATAS_BULANAN z nagłówkiem Retry-After. Wstrzymany klucz → 403 KEY_DIJEDA. Modeli -unli i bansos nie można używać z kluczami klientów. |
Prawidłowe ponawianie
- Ponawiaj tylko przy 429, 502 i 503, z coraz dłuższymi przerwami (np. 1, 2, 4, 8 sekund) i maksymalnie 2–3 razy.
- Nie ponawiaj przy 400, 401, 402, 403, 404 — najpierw popraw zapytanie, bo wynik będzie taki sam.
- Respektuj nagłówek
Retry-After, jeśli jest obecny. - Każde ponowienie to nowe, płatne zapytanie. Jeśli przyczyną jest timeout w aplikacji, zwiększ go — zobacz Ustawienia narzędzi agentowych.