# Błędy, rate limit i ponowienia

> Każdy błąd LLM API: status HTTP, kod i przyczyna, które ponawiać, rate limit i co robić przy 402 insufficient balance. Błędy są darmowe.

- URL: https://llmwithcrypto.com/pl/docs/errors/
- Ostatnia aktualizacja: 2026-10-23
- Wydawca: LLMwithCrypto (https://llmwithcrypto.com)

Błędy wracają w formacie OpenAI, więc SDK zgłaszają je jako zwykłe wyjątki. Ta strona wymienia każdy status i kod, mówi, które warto ponowić, i pokazuje pętlę ponowień, która respektuje rate limit.

**Krótka odpowiedź — Jakie błędy może zwracać LLMwithCrypto API i czy są płatne?**

API odpowiada na błędy statusem HTTP i treścią w stylu OpenAI: `{"error": {"message", "type", "param", "code"}}`. **LLMwithCrypto** używa 400 dla złego zapytania, 401 dla złego klucza, 402, gdy kredyty nie mogą zapłacić, 404 dla nieznanego modelu, 429 dla rate limit oraz 500 lub 503 po naszej stronie. Zapytanie, które kończy się błędem, nic nie kosztuje, zgodnie z dokumentacją z 23 października 2026.

## Jakie błędy istnieją?

Żaden błąd nie zużywa kredytów. `code` to stabilna wartość do testowania w kodzie; `message` jest dla ludzi i może się zmienić.

| HTTP | `code` | Przyczyna | Ponowić? |
| --- | --- | --- | --- |
| 400 | `invalid_parameter` | Brakuje wymaganego pola albo wartość jest poza zakresem lub złego typu | Nie: popraw zapytanie |
| 400 | `context_length_exceeded` | Wiadomości plus `max_tokens` nie mieszczą się w oknie kontekstu modelu | Nie: skróć dane wejściowe lub zmniejsz `max_tokens` |
| 400 | `unsupported_parameter` | Pole, którego ten model nie obsługuje, takie jak `response_format` w modelu bez trybu JSON | Nie: usuń je lub zmień model |
| 401 | `invalid_api_key` | Klucz API brakuje, jest błędnie wpisany lub unieważniony | Nie: sprawdź klucz |
| 402 | `insufficient_balance` | Pozostałe saldo nie pokrywa tego wywołania | Nie: kup pakiet kredytów |
| 404 | `model_not_found` | Identyfikatora `model` nie ma na naszej liście | Nie: użyj identyfikatora z `GET /api/v1/models` |
| 429 | `rate_limit_exceeded` | Więcej zapytań lub tokenów na minutę, niż pozwala konto | Tak, po przerwie |
| 500 | `server_error` | Coś zawiodło po naszej stronie | Tak, z backoffem |
| 503 | `model_overloaded` | Model jest chwilowo na granicy wydajności | Tak, z backoffem albo spróbuj innego modelu |

*Treść błędu: nieznany model*

```json
{
  "error": {
    "message": "The model `gpt-4o` does not exist or is not available to your key.",
    "type": "invalid_request_error",
    "param": "model",
    "code": "model_not_found"
  }
}

```

## Dlaczego dostaję 404 dla gpt-4o lub claude?

Ponieważ te modele nie są tu sprzedawane. Nie sprzedajemy dostępu do GPT, Claude, Gemini ani Grok: ich twórcy zabraniają odsprzedaży dostępu do API bez ich zgody, a my jej nie mamy. Kod pisany pod OpenAI API często wymienia model w kilku miejscach; przeszukaj projekt pod starym name i zastąp go identyfikatorem ze [strony modeli](https://llmwithcrypto.com/pl/models/), na przykład `deepseek-v4-pro` lub `gpt-oss-120b`.

## Kiedy mój kod powinien ponawiać?

Ponawiaj `429`, `500` i `503` oraz błędy sieci, takie jak timeout czy zerwane połączenie. Nigdy nie ponawiaj `400`, `401`, `402` ani `404`: to samo zapytanie zawiedzie tak samo.

Odczekaj przed każdą kolejną próbą. Gdy odpowiedź ma nagłówek `Retry-After`, odczekaj tyle sekund; w przeciwnym razie podwajaj pauzę za każdym razem (1, 2, 4, 8 sekund…) i dodaj trochę losowego czasu, żeby wiele workerów nie ponawiało w rytmie. Odpuść po kilku próbach i zaloguj błąd. SDK OpenAI same ponawiają; poniższy przykład to wyłącza, żeby pokazać logikę w całości.

*Python: ponawiaj 429, 500 i 503 z wykładniczym backoffem*

```python
import os
import random
import time

from openai import APIConnectionError, APIStatusError, OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
    max_retries=0,
)
RETRY = {429, 500, 503}


def chat(messages, model="deepseek-v4-pro", attempts=5):
    for attempt in range(attempts):
        try:
            return client.chat.completions.create(model=model, messages=messages, max_tokens=500)
        except APIStatusError as err:
            if err.status_code not in RETRY or attempt == attempts - 1:
                raise
            wait = err.response.headers.get("retry-after")
            delay = float(wait) if wait else min(30, 2**attempt) + random.random()
        except APIConnectionError:
            if attempt == attempts - 1:
                raise
            delay = min(30, 2**attempt) + random.random()
        time.sleep(delay)

```

## Co robić przy 402 insufficient_balance?

Doładuj. Wywołanie nie zostało obciążone, a nic innego na koncie się nie zmienia: Twoje klucze znów działają, gdy tylko pojawi się saldo. Gdy Twoje doładowanie kryptowalutą zostanie potwierdzone i kupisz pack kredytów, Twój klucz API czeka w dashboardzie.

Żeby uniknąć niespodzianek na produkcji, od czasu do czasu odczytuj `GET https://llmwithcrypto.com/api/v1/credits` i ustaw alert poniżej wybranego progu; [strona modeli i kredytów](https://llmwithcrypto.com/pl/docs/models/) pokazuje wywołanie. Kredyty nie mają daty ważności: to, czego nie wydasz w tym miesiącu, nadal będzie tam w przyszłym roku, więc większy pakiet kupiony wcześniej nic nie kosztuje dodatkowo.

## Jak trzymać się poniżej rate limit?

Każde konto ma limit zapytań i tokenów na minutę, widoczny w dashboardzie; poproś support, a można go podnieść.

- **Ogranicz współbieżność.** Uruchamiaj stałą liczbę zapytań równolegle, zamiast wysyłać całą partię naraz.
- **Ogranicz output.** Limity tokenów liczą też to, co pisze model, więc rozsądny `max_tokens` utrzymuje więcej zapytań w limicie.
- **Rozłóż partie.** Przy dużych zadaniach offline rozłóż zapytania na całą minutę, zamiast wysyłać je seriami.

## Błędy: najczęstsze pytania

### Czy płacę za nieudane wywołanie?

Nie. Płacisz za token z salda: tokeny wejściowe i wyjściowe są liczone przez tokenizer danego modelu i rozliczane według ceny tego modelu za 1M tokenów. Wywołanie zakończone błędem nic nie kosztuje.

### Gdzie sprawdzę, czy jest awaria?

Na [stronie statusu](https://llmwithcrypto.com/pl/status/). Seria błędów `500` lub `503` na kilku modelach zwykle oznacza incydent po naszej stronie; napisz na support@llmwithcrypto.com, jeśli się utrzymuje.

### Czy mogę zobaczyć, które zapytanie zawiodło?

Nie po naszej stronie. Nie przechowujemy Twoich promptów ani odpowiedzi modelu: gdy odpowiedź zostanie wysłana, jej tekst znika. Każde wywołanie zostawia jedną linię logu z czasem, kontem, modelem i liczbą tokenów, usuwaną po 30 dniach. Zaloguj błąd `code` i własny identyfikator zapytania w swojej aplikacji.

---

LLMwithCrypto: LLMwithCrypto to zgodne z OpenAI API LLM dla modeli z otwartymi wagami — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — płatne za token z przedpłaconego salda kryptowalutowego, o 5% poniżej mediany ceny publicznych hostów. Bez KYC: bez dowodu, bez selfie, bez dokumentów. Prompty i odpowiedzi nie są przechowywane.
