Zanim zgłosisz błąd
Większość "błędów" to problemy z konfiguracją, które można naprawić w 60 sekund — najpierw przejdź przez tę listę kontrolną.
Jeśli coś nie działa, najszybszym sposobem sprawdzenia, czy problem leży po Twojej stronie czy naszej, jest wysłanie tego samego żądania z innego narzędzia.
Około 9 na 10 zgłoszeń "API nie działa" okazuje się błędnie skonfigurowanym base URL, nieaktualnym kluczem API, błędną nazwą modelu lub ciałem żądania skopiowanym z tutorialu opartego na wersji SDK sprzed trzech generacji.
Szybki test własny
Skopiuj to polecenie curl do terminala. Zastąp YOUR_KEY swoim kluczem API z Dashboard i uruchom je. Jeśli otrzymasz prawidłową odpowiedź, Twój klucz API, sieć i nasze zaplecze działają poprawnie — cokolwiek jest nie tak, problem leży w kodzie klienta lub środowisku.
cURL
curl https://api.airforce/v1/chat/completions \
-H "Authorization: Bearer sk-air-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [{"role": "user", "content": "ping"}]
}'Krok po kroku — lista kontrolna
Czy Twój klucz API jest prawidłowy?
Otwórz Dashboard → API Keys i upewnij się, że klucz odpowiada temu, którego używa Twój kod. Częstą pułapką jest spacja przed prefiksem "sk-air-" wstawiona podczas kopiowania i wklejania.
Objaw: 401 Unauthorized.
Czy base URL jest prawidłowy?
Base URL musi mieć postać https://api.airforce/v1 — nie http, a sufiks /v1 jest wymagany. Tutoriale sprzed wprowadzenia ścieżki v1 przez OpenAI czasem go pomijają.
Objaw: 404 Not Found lub curl zawiesza się.
Czy nazwa modelu jest napisana poprawnie?
Identyfikatory modeli rozróżniają wielkość liter. Odwiedź stronę Models lub wywołaj GET /v1/models, aby potwierdzić dokładny ID. Literówka lub zdeprecjonowany model zwróci czytelny komunikat błędu, a nie "działa, ale źle".
Objaw: 400 unknown_model lub 404 model_not_found.
Czy treść żądania ma właściwą strukturę?
Uzupełnienia czatu używają tablicy messages. Obrazy używają prompt + n. Audio TTS używa input + voice. Wysłanie ciała w formacie czatu do /v1/images/generations zwróci 400 — łatwo to przeoczyć podczas kopiowania fragmentów między dokumentacjami.
Objaw: 400 z nazwą problematycznego pola w treści odpowiedzi.
Czy osiągnąłeś limit żądań lub limit przydziału?
429 = zbyt wiele żądań w tej minucie. 402 = Twój plan lub saldo zostały wyczerpane. Oba stany widoczne są w Dashboard. Żądania w ramach darmowego planu mają osobne limity od żądań w planach płatnych, więc płatny model może odpowiadać normalnie, gdy darmowy jest ograniczany.
Objaw: 429 Too Many Requests lub 402 Payment Required.
Czy model faktycznie działa w tej chwili?
Sprawdź stronę Models — awarie providerów widoczne są jako "degraded" lub "major outage". Jeśli jeden model jest niedostępny, a inne działają, to problem po stronie providera, który obchodzimy w routingu — nie błąd klienta.
Objaw: konkretny model zwraca 5xx, podczas gdy inne działają.
Znaczenie kodów statusu HTTP
Każda odpowiedź z błędem zawiera standardowy kod statusu HTTP. Znajomość znaczenia każdego kodu pozwala zaoszczędzić czas i uniknąć zbędnych zgłoszeń.
| 400 | Twoja strona | Bad Request — nieprawidłowy JSON, brakujące wymagane pole, nieznany parametr. Popraw treść żądania. |
| 401 | Twoja strona | Unauthorized — brakujący lub nieprawidłowy klucz API. Sprawdź, czy nagłówek Authorization zawiera prefiks "Bearer ". |
| 402 | Twoja strona | Payment Required — wyczerpany plan lub puste saldo Pay-as-you-go. Wykup subskrypcję lub doładuj konto. |
| 403 | Twoja strona | Forbidden — Twój plan lub uprawnienia przypisane do klucza nie zezwalają na ten model lub endpoint. |
| 404 | Twoja strona | Not Found — nieznany endpoint lub ID modelu. Sprawdź ścieżkę URL i pisownię nazwy modelu. |
| 413 | Twoja strona | Payload Too Large — dane wejściowe przekraczają okno kontekstu modelu. Skróć prompt. |
| 429 | Twoja strona | Too Many Requests — limit żądań przekroczony (RPM, RPD lub dzienny limit tokenów). Zwolnij tempo lub przejdź na wyższy plan. |
| 500 | Nasza strona | Internal Server Error — błąd po naszej stronie. Zgłoś go, jeśli utrzymuje się dłużej niż minutę. |
| 502 | Nasza strona | Bad Gateway — zaplecze w trakcie restartu (wdrożenia przeprowadzamy kilka razy dziennie). Poczekaj 5–10 sekund i ponów próbę. |
| 503 | Nasza strona | Service Unavailable — wszystkie upstream providery dla tego modelu są w tej chwili niedostępne. Zgłoś, jeśli problem utrzymuje się dłużej niż kilka minut. |
Kiedy to naprawdę błąd
Jeśli powyższy test curl działa, ale to samo żądanie wysłane z Twojego kodu już nie — problem tkwi w kliencie (lub bibliotece, której używa). Jeśli sam test kończy się błędem 5xx albo zwraca 4xx z komunikatem, który nie pasuje do Twojego żądania, warto to zgłosić.
Jak skutecznie zgłosić problem
Otwórz zgłoszenie z Dashboard lub napisz na #support na Discord. Dołącz:
- Pełny kod statusu HTTP i treść odpowiedzi (a jeśli jest dostępny, również nagłówek odpowiedzi cf-ray).
- Przybliżony znacznik czasu w UTC.
- Nazwę modelu i wywołany endpoint.
- Minimalny przykład cURL odtwarzający problem (zamaskuj swój prawdziwy klucz API!).
- Czy powyższy test własny działa u Ciebie na tym samym kluczu.
Masz problem z konfiguracją lub chcesz darmowy klucz? Zapytaj społeczność na naszym Discordzie.
Dołącz do naszego Discorda