Rozwiązywanie problemów i FAQ
Znajdź żądanie, odczytaj przyczynę błędu i wybierz kolejne działanie.
Zacznij od identyfikatora żądania
Zapisz x-request-id i wyszukaj go w Analytics → Requests. Zachowaj też x-unused-listing: przy nieudanym wywołaniu może wskazywać ostatnią wypróbowaną ofertę, a nie zakończoną odpowiedź. Żądania odrzucone przed uwierzytelnieniem mogą nie pojawić się w historii konta.
Zapisz klienta, model, czas, status HTTP, treść błędu i informację, czy strumień już się rozpoczął. Nie dołączaj klucza API, danych dostawcy ani treści promptu, jeśli nie są potrzebne do odtworzenia problemu.
Dopasuj objaw do rozwiązania
Poniższe etykiety pochodzą z historii żądań. Status zapisany dla przerwanego strumienia nie zastępuje wcześniej wysłanego statusu HTTP.
| Status / przyczyna | Co sprawdzić | Działanie |
|---|---|---|
400 · Invalid request | Nieobsługiwana opcja, nieprawidłowa historia wiadomości lub narzędzi albo limit kontekstu i wyjścia. | Odczytaj parametr i komunikat błędu. Usuń nieobsługiwane pola; skróć historię lub zmniejsz budżet wyjścia. |
401 · Authentication failed | Brakujący, błędny lub unieważniony klucz kupującego; możliwy jest też błąd danych dostawcy. | Sprawdź pełny klucz unused.market. Jeśli działa w innych wywołaniach, podaj w zgłoszeniu identyfikatory żądania i oferty. |
402 · Insufficient credits | Blokada środków nie mieści się w saldzie lub miesięcznym budżecie klucza. | Doładuj kredyty, sprawdź limit klucza lub zmniejsz budżet wyjścia. Komunikat błędu wskazuje, czy chodzi o limit miesięczny. |
403 · Access denied | Ograniczenia modeli klucza lub routingu; możliwa odmowa dostawcy. | Sprawdź Selected models, Blacklist i Whitelist. Jeśli dopuszczają model, zachowaj identyfikatory. |
404 · Model not found | Nieznany identyfikator modelu. | Skopiuj dokładny identyfikator z Marketplace lub listy modeli. |
408 · Client stopped reading | Klient nie odbierał kolejnych danych strumienia. | Odbieraj strumień na bieżąco i sprawdź kontrolę przepływu w kliencie. |
429 · Rate limit exceeded | Limit liczby żądań klucza lub ograniczenie dostawcy. | Zmniejsz współbieżność i częstotliwość wywołań. Uwzględnij Retry-After, jeśli jest obecny. |
499 · Client disconnected | Klient anulował żądanie lub zamknął połączenie. | Sprawdź anulowanie, limit czasu klienta i sieć. Rozłączony klient nie może odebrać odpowiedzi 499. |
500 · Server error (500) | Błąd serwera lub dostawcy; historyczne wpisy nie potwierdzają dokładniejszej przyczyny. | Ponów odpowiednie żądanie później i zachowaj identyfikator, jeśli problem się powtarza. |
502 · Invalid or interrupted provider response | Błędna odpowiedź lub strumień bez prawidłowego zakończenia. | Traktuj częściowe wyjście jako niekompletne. Przed ponowieniem uwzględnij wykonaną część pracy. |
503 · Temporarily unavailable | Brak dostępnej oferty, limit ceny, czasowe wyłączenie ofert lub przeciążenie bramy. | Sprawdź Marketplace i Routing. Uwzględnij zwrócony Retry-After. |
504 · Request timed out | Upłynął limit bezczynności dostawcy lub całego żądania. | Spróbuj później albo poproś o krótszą odpowiedź; sprawdź, czy dotarł częściowy wynik. |
529 · Provider overloaded | Dostawca nie mógł przyjąć żądania. | Odczekaj i spróbuj później. |
Dokumentacja API opisuje dwa formaty błędów klientów. Na przykład 402 ma insufficient_credits w formacie OpenAI i billing_error w Anthropic.
Dlaczego żądanie trafiło do innej oferty?
Strategia ustala kolejność aktualnie dostępnych ofert tego samego modelu. Wybór zależy od ograniczeń klucza, limitu ceny, kontekstu i wyjścia, dostępnych zasobów, stanu ofert oraz fallbacku. Porównaj Routing z przykładem i zachowaj identyfikator oferty z odpowiedzi.
Dlaczego modelu nie ma na liście?
GET /v1/models zwraca modele dostępne dla klucza przy aktualnych ograniczeniach routingu. Publiczny wpis w Marketplace może być wykluczony przez dozwolone modele, limit ceny, czasowe wyłączenie ofert albo ich własność. Lista nie obejmuje każdego modelu kiedykolwiek zarejestrowanego.
Dlaczego nieudane żądanie ma koszt?
Po rozpoczęciu wyjścia późniejsze rozłączenie, przekroczenie czasu lub błąd dostawcy może pozostawić płatne dostarczone zużycie. Dla przerwanego strumienia brama rozlicza zgłoszone wejście, jeśli jest dostępne, a w przeciwnym razie jego szacunek, oraz szacowane dostarczone wyjście. Nie zgaduje brakujących danych cache. Error nie oznacza więc „bez tokenów i bez opłaty”.
Dlaczego dostępnych środków jest mniej niż oczekuję?
Trwające żądania rezerwują wejście bez cache oraz żądane budżety wyjścia. Ostateczna opłata może być znacznie niższa, a niewykorzystane środki są zwalniane po rozliczeniu. Zanim doładujesz konto ponownie, sprawdź równoległe zadania i zbyt wysokie limity wyjścia. Zobacz blokady środków.
Dlaczego nie ma oszczędności z cache?
Dostawca może nie zgłaszać odczytów z cache, efektywna stawka cache może być równa cenie wejścia albo prompt i sposób połączenia mogą nie spełniać warunków cache. Free cache również opiera się na zgłoszonych kategoriach. Sprawdź zapisany odczyt z cache, zamiast zakładać trafienie tylko dlatego, że prompt się powtarza.
Dlaczego strumień kończy się błędem po HTTP 200?
Odpowiedź HTTP już się rozpoczęła. Odczytaj zdarzenie błędu i nie traktuj częściowego strumienia jak zakończonej odpowiedzi. Brama nie przełącza się na inną ofertę po wysłaniu bajtów odpowiedzi do klienta.
Dlaczego agent żąda nieobsługiwanego endpointu?
Publiczne API wnioskowania obejmuje tylko Chat Completions i Messages. /v1/responses nie jest publicznie zaimplementowaną trasą. Użyj trybu zgodności narzędzia, jeśli taki istnieje. Zanim oprzesz się na instrukcji, sprawdź widoczny status Tested lub Untested.