Modele czatu
Wywołuj Claude, Gemini, DeepSeek, GLM, Grok i Kimi przez API PopNow za pomocą SDK OpenAI, Anthropic lub Gemini, którego już używasz. Jeden klucz API, rozliczenie za tokeny w USD.
API PopNow obsługuje też modele czatu: Claude, Gemini, DeepSeek, GLM, Grok i Kimi. Wywołujesz je przez protokoły, z których twój kod już korzysta — OpenAI Chat Completions i Responses, Anthropic Messages oraz Gemini generateContent — więc oficjalne SDK działają po zmianie bazowego adresu URL. Korzystają z tego samego klucza sk-popnow- i tego samego osobnego salda API w USD co obrazy, wideo i audio przez API. Początkowo wynosi ono 0 USD; doładuj je w rozliczeniach API. Kredyty strony nie opłacają tych wywołań.
Wywołania czatu są synchroniczne: odpowiedź (lub strumień) wraca w tym samym wywołaniu. Nie ma zadania do odpytywania.
Najważniejsze informacje
| Bazowy URL OpenAI | https://api.popnow.ai/v1 (Chat Completions, Responses, lista modeli) |
| Bazowy URL Anthropic | https://api.popnow.ai (SDK dodaje /v1/messages) |
| Gemini | POST https://api.popnow.ai/v1beta/models/{model}:generateContent |
| Klucz | Authorization: Bearer sk-popnow-…; działają też nagłówki x-api-key z SDK Anthropic i x-goog-api-key od Google |
| ID modeli | publisher/model/chat, np. anthropic/claude-haiku-5.5/chat. Pełna lista jest niżej |
| Cena | Za token, w USD, bez minimalnej opłaty za zapytanie. Nieudane i odrzucone zapytania są zwracane |
| Strumieniowanie | stream: true w każdym protokole (:streamGenerateContent?alt=sse dla Gemini) |
Twoje pierwsze zapytanie do czatu
curl https://api.popnow.ai/v1/chat/completions \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-5.5/chat",
"messages": [
{ "role": "system", "content": "You are a concise, friendly assistant." },
{ "role": "user", "content": "Suggest three names for a kite shop by the sea." }
],
"max_tokens": 512
}'Odpowiedź to standardowy obiekt chat.completion z polami choices[0].message.content i usage. Nagłówek odpowiedzi X-PopNow-Task-Id wskazuje zadanie, w którym zapisano obciążenie.
SDK OpenAI
Ustaw adres klienta na https://api.popnow.ai/v1 i przekaż klucz PopNow. Niczego więcej nie trzeba zmieniać.
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.popnow.ai/v1", api_key=os.environ["POPNOW_API_KEY"])
reply = client.chat.completions.create(
model="anthropic/claude-haiku-5.5/chat",
messages=[{"role": "user", "content": "Write a haiku about kites."}],
max_tokens=200,
)
print(reply.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.popnow.ai/v1', apiKey: process.env.POPNOW_API_KEY });
const reply = await client.chat.completions.create({
model: 'google/gemini-3.7-flash/chat',
messages: [{ role: 'user', content: 'Write a haiku about kites.' }],
max_tokens: 200,
});
console.log(reply.choices[0].message.content);Działa też Responses API (client.responses.create), w wariancie bez przechowywania stanu: za każdym razem wyślij całą rozmowę w input. previous_response_id zwraca 400.
SDK Anthropic
SDK Anthropic samo dodaje /v1/messages, więc bazowy URL nie zawiera /v1.
import os
import anthropic
client = anthropic.Anthropic(base_url="https://api.popnow.ai", api_key=os.environ["POPNOW_API_KEY"])
message = client.messages.create(
model="anthropic/claude-sonnet-5.5/chat",
max_tokens=512,
messages=[{"role": "user", "content": "Explain idempotency keys in two sentences."}],
)
print(message.content[0].text)Ten endpoint obsługuje każdy model czatu, nie tylko Claude. Błędy wracają w formacie Anthropic {"type": "error", "error": {...}}.
Gemini generateContent
Umieść pełne ID modelu w ścieżce; może zawierać ukośniki.
curl "https://api.popnow.ai/v1beta/models/google/gemini-3.7-flash/chat:generateContent" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{ "role": "user", "parts": [{ "text": "Name three colours of a sunset." }] }],
"generationConfig": { "maxOutputTokens": 256 }
}'Aby otrzymać strumień, użyj :streamGenerateContent?alt=sse. Błędy mają format Google {"error": {"code", "message", "status"}}.
Strumieniowanie
Ustaw stream: true i odczytuj Server-Sent Events. W Chat Completions każdy fragment to chat.completion.chunk, a strumień kończy się komunikatem data: [DONE]. Tak jak w OpenAI strumień nie zawiera usage, chyba że poprosisz o nie przez stream_options: { "include_usage": true }; dane o zużyciu pojawią się wtedy w ostatnim fragmencie z pustą tablicą choices.
stream = client.chat.completions.create(
model="anthropic/claude-haiku-5.5/chat",
messages=[{"role": "user", "content": "Count from one to five."}],
max_tokens=100,
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")Narzędzia, wynik JSON i parametry
Każdy model deklaruje obsługiwane pola zapytania — tools, tool_choice, response_format, temperature, reasoning_effort i inne. Wymienia je kolumna Parameters w tabeli modeli, a GET /v1/models zwraca je w supported_parameters.
- Ustawienie próbkowania nieobsługiwane przez model (
temperature,top_p,frequency_penalty…) jest pomijane zamiast powodować błąd; jego nazwa trafia do nagłówka odpowiedziX-PopNow-Ignored-Params. - Wartość spoza zakresu modelu jest zmieniana na najbliższą dozwoloną wartość i zgłaszana w
X-PopNow-Adjusted-Paramsjakoname=value. - Każde inne pole, którego model nie deklaruje, zwraca
400zcode: unsupported_parameteriparamwskazującym pole, np. część z obrazem wysłana do modelu obsługującego tylko tekst.
Modele i ceny
Korzystaj z cen w USD za 1 milion tokenów, osobno dla wejścia i wyjścia; wejście z pamięci podręcznej jest tańsze w modelach, które ją obsługują. Niektóre modele stosują wyższą stawkę po przekroczeniu progu długości kontekstu — jest on podany pod nazwą modelu.
| Model | ID modelu | Kontekst | Wejście za 1 mln tokenów (USD) | Wyjście za 1 mln tokenów (USD) | Parametry |
|---|---|---|---|---|---|
| Claude Fable 5Anthropic | anthropic/claude-fable-5/chat | 1MMaks. odpowiedź 128K | $9cache $0.9zapis cache $11 | $45 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Haiku 5.5AnthropicWejście > 100K tokenów na żądanie: $0.5 / $2.5 · cache $0.1 | anthropic/claude-haiku-5.5/chat | 1MMaks. odpowiedź 128K | $0.1zapis cache $0.1 | $0.5 | max_tokensparallel_tool_callstool_choicetools |
| Claude Opus 4.5Anthropic | anthropic/claude-opus-4.5/chat | 198KMaks. odpowiedź 33K | $4.5cache $0.45zapis cache $5.5 | $22.5 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p |
| Claude Opus 4.6Anthropic | anthropic/claude-opus-4.6/chat | 1MMaks. odpowiedź 128K | $5cache $0.5zapis cache $6.25 | $25 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p |
| Claude Opus 5Anthropic | anthropic/claude-opus-5/chat | 1MMaks. odpowiedź 128K | $4.5cache $0.45zapis cache $5.5 | $22.5 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Opus 5.5Anthropic | anthropic/claude-opus-5.5/chat | 1MMaks. odpowiedź 128K | $3.6cache $0.18zapis cache $4.5 | $18 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Sonnet 4.5Anthropic | anthropic/claude-sonnet-4.5/chat | 198KMaks. odpowiedź 64K | $2.7cache $0.27zapis cache $3.3 | $13.5 | max_tokensparallel_tool_callsstoptemperaturetool_choicetoolstop_ktop_p |
| Claude Sonnet 4.6Anthropic | anthropic/claude-sonnet-4.6/chat | 1MMaks. odpowiedź 64K | $3cache $0.3zapis cache $3.75 | $15 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_ktop_p |
| Claude Sonnet 5Anthropic | anthropic/claude-sonnet-5/chat | 1MMaks. odpowiedź 64K | $1.9cache $0.19zapis cache $2.375 | $9.5 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Sonnet 5.5Anthropic | anthropic/claude-sonnet-5.5/chat | 1MMaks. odpowiedź 128K | $2cache $0.2zapis cache $2.5 | $10 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| DeepSeek V4.1 FlashDeepSeek | deepseek/v4.1-flash/chat | 1MMaks. odpowiedź 384K | $0.3cache $0.006 | $1.2 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
| DeepSeek V4 FlashDeepSeek | deepseek/v4-flash/chat | 1MMaks. odpowiedź 66K | $0.44cache $0.014 | $1.32 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
| DeepSeek V4 ProDeepSeek | deepseek/v4-pro/chat | 1MMaks. odpowiedź 384K | $1.32cache $0.044 | $3.96 | max_tokensparallel_tool_callsreasoning_effortresponse_formatstoptool_choicetools |
| Gemini 2.5 FlashGoogle | google/gemini-2.5-flash/chat | 1MMaks. odpowiedź 66K | $0.285cache $0.0285 | $2.375 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.1 Pro PreviewGoogleWejście > 200K tokenów na żądanie: $3.8 / $17.1 · cache $0.38 | google/gemini-3.1-pro-preview/chat | 1MMaks. odpowiedź 33K | $1.9cache $0.19 | $11.4 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.5 Flash-LiteGoogle | google/gemini-3.5-flash-lite/chat | 1MMaks. odpowiedź 66K | $0.3cache $0.03 | $2.5 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.7 FlashGoogle | google/gemini-3.7-flash/chat | 1MMaks. odpowiedź 66K | $0.675cache $0.0675 | $3.375 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3 Flash PreviewGoogle | google/gemini-3-flash-preview/chat | 256KMaks. odpowiedź 66K | $0.45cache $0.045 | $2.7 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| GLM 5.2Z.ai | zai/glm-5.2/chat | 1MMaks. odpowiedź 131K | $0.98cache $0.182 | $3.08 | max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p |
| GLM 5.3Z.ai | zai/glm-5.3/chat | 1MMaks. odpowiedź 131K | $1.05cache $0.195 | $3.3 | max_tokensparallel_tool_callsreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| GLM 5.3 FlashZ.ai | zai/glm-5.3-flash/chat | 1MMaks. odpowiedź 131K | $0.1275cache $0.0255 | $0.425 | max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p |
| Grok 4.3xAIWejście ≥ 200K tokenów na żądanie: $2.5 / $5 · cache $0.4 | xai/grok-4.3/chat | 1MMaks. odpowiedź 900K | $1.25cache $0.2 | $2.5 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.5xAIWejście ≥ 200K tokenów na żądanie: $4 / $12 · cache $0.6 | xai/grok-4.5/chat | 500KMaks. odpowiedź 450K | $2cache $0.3 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.6xAIWejście ≥ 200K tokenów na żądanie: $4 / $12 · cache $1 | xai/grok-4.6/chat | 500KMaks. odpowiedź 450K | $2cache $0.5 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.7xAIWejście ≥ 200K tokenów na żądanie: $4 / $12 · cache $1 | xai/grok-4.7/chat | 500KMaks. odpowiedź 450K | $2cache $0.5 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Kimi K3Moonshot AI | moonshot/kimi-k3/chat | 1MMaks. odpowiedź 1M | $2.7cache $0.3 | $13.5 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
Ta sama lista jest dostępna przez API, wraz z cenami, długością kontekstu i obsługiwanymi parametrami:
curl "https://api.popnow.ai/v1/models?modality=text" \
-H "Authorization: Bearer $POPNOW_API_KEY"Jak rozliczane jest zapytanie do czatu
- Blokada. Gdy zapytanie zostanie przyjęte, z salda odkładany jest jego maksymalny możliwy koszt, wyliczony z danych wejściowych i
max_tokens. Jeśli pominieszmax_tokens, używana jest maksymalna długość odpowiedzi modelu, więc ustaw ten parametr, by ograniczyć blokadę. - Obciążenie. Po zakończeniu odpowiedzi płacisz za faktycznie zużyte tokeny, w USD, bez minimalnej opłaty za zapytanie. Reszta blokady jest zwalniana.
- Zwrot. Zapytanie, które się nie powiedzie lub które model odrzuci, jest w całości zwracane.
Saldo niższe od wymaganej blokady lub przekroczenie limitu wydatków klucza zwraca 402, zanim cokolwiek zostanie wysłane do modelu. Aby sprawdzić dokładne obciążenie, odczytaj zadanie wskazane w X-PopNow-Task-Id przez GET /api/v1/jobs/recordInfo: costUsd to ciąg dziesiętny w USD do wyświetlania i księgowości. Starsze pola kredytów mogą nadal występować; nie zaokrąglaj obciążeń w USD do pełnych kredytów.
Długie odpowiedzi i błędy
- Długie wywołania bez strumieniowania. Jeśli odpowiedź trwa dłużej niż około 30 sekund, najpierw wysyłany jest status
200z nagłówkiemX-PopNow-Keepalive: 1, następnie co 15 sekund znak nowego wiersza, a na końcu treść JSON. Błąd po tym momencie przychodzi jako zwykły obiekt błędu danego protokołu w treści odpowiedzi200, więc przy tym nagłówku sprawdzaj obecność kluczaerror. Strumieniowanie pozwala tego uniknąć. 404model_not_found. ID modelu nie istnieje. Błąd wskazuje najbardziej zbliżony model czatu, który możesz wywołać.400zparam: model. ID należy do modelu obrazu, wideo lub audio; te działają jako zadania.400content_rejected. Zasady treści danego modelu spowodowały odrzucenie zapytania. Nic nie płacisz.402. Za mało USD w API na blokadę lub osiągnięty limit wydatków klucza. Zobacz Rozliczenia API.
Prywatność
Zapytania trafiają do modelu w takiej postaci, w jakiej je wysyłasz; PopNow nie dodaje własnego promptu systemowego. Obowiązują zasady korzystania z danego modelu. Tekst wiadomości nie jest przechowywany po rozliczeniu opłaty.

