PopNowDokumentacja API
Czat i zgodne API
Treść główna

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 OpenAIhttps://api.popnow.ai/v1 (Chat Completions, Responses, lista modeli)
Bazowy URL Anthropichttps://api.popnow.ai (SDK dodaje /v1/messages)
GeminiPOST https://api.popnow.ai/v1beta/models/{model}:generateContent
KluczAuthorization: Bearer sk-popnow-…; działają też nagłówki x-api-key z SDK Anthropic i x-goog-api-key od Google
ID modelipublisher/model/chat, np. anthropic/claude-haiku-5.5/chat. Pełna lista jest niżej
CenaZa token, w USD, bez minimalnej opłaty za zapytanie. Nieudane i odrzucone zapytania są zwracane
Strumieniowaniestream: 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ć.

Python
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)
JavaScript (Node.js 18+)
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.

Python
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.

Python
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 odpowiedzi X-PopNow-Ignored-Params.
  • Wartość spoza zakresu modelu jest zmieniana na najbliższą dozwoloną wartość i zgłaszana w X-PopNow-Adjusted-Params jako name=value.
  • Każde inne pole, którego model nie deklaruje, zwraca 400 z code: unsupported_parameter i param wskazują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.

ModelID modeluKontekstWejście za 1 mln tokenów (USD)Wyjście za 1 mln tokenów (USD)Parametry
Claude Fable 5Anthropicanthropic/claude-fable-5/chat1MMaks. odpowiedź 128K$9cache $0.9zapis cache $11$45max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Haiku 5.5AnthropicWejście > 100K tokenów na żądanie: $0.5 / $2.5 · cache $0.1anthropic/claude-haiku-5.5/chat1MMaks. odpowiedź 128K$0.1zapis cache $0.1$0.5max_tokensparallel_tool_callstool_choicetools
Claude Opus 4.5Anthropicanthropic/claude-opus-4.5/chat198KMaks. odpowiedź 33K$4.5cache $0.45zapis cache $5.5$22.5max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p
Claude Opus 4.6Anthropicanthropic/claude-opus-4.6/chat1MMaks. odpowiedź 128K$5cache $0.5zapis cache $6.25$25max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p
Claude Opus 5Anthropicanthropic/claude-opus-5/chat1MMaks. odpowiedź 128K$4.5cache $0.45zapis cache $5.5$22.5max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Opus 5.5Anthropicanthropic/claude-opus-5.5/chat1MMaks. odpowiedź 128K$3.6cache $0.18zapis cache $4.5$18max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Sonnet 4.5Anthropicanthropic/claude-sonnet-4.5/chat198KMaks. odpowiedź 64K$2.7cache $0.27zapis cache $3.3$13.5max_tokensparallel_tool_callsstoptemperaturetool_choicetoolstop_ktop_p
Claude Sonnet 4.6Anthropicanthropic/claude-sonnet-4.6/chat1MMaks. odpowiedź 64K$3cache $0.3zapis cache $3.75$15max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_ktop_p
Claude Sonnet 5Anthropicanthropic/claude-sonnet-5/chat1MMaks. odpowiedź 64K$1.9cache $0.19zapis cache $2.375$9.5max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Sonnet 5.5Anthropicanthropic/claude-sonnet-5.5/chat1MMaks. odpowiedź 128K$2cache $0.2zapis cache $2.5$10max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
DeepSeek V4.1 FlashDeepSeekdeepseek/v4.1-flash/chat1MMaks. odpowiedź 384K$0.3cache $0.006$1.2max_tokensreasoning_effortresponse_formatstoptool_choicetools
DeepSeek V4 FlashDeepSeekdeepseek/v4-flash/chat1MMaks. odpowiedź 66K$0.44cache $0.014$1.32max_tokensreasoning_effortresponse_formatstoptool_choicetools
DeepSeek V4 ProDeepSeekdeepseek/v4-pro/chat1MMaks. odpowiedź 384K$1.32cache $0.044$3.96max_tokensparallel_tool_callsreasoning_effortresponse_formatstoptool_choicetools
Gemini 2.5 FlashGooglegoogle/gemini-2.5-flash/chat1MMaks. odpowiedź 66K$0.285cache $0.0285$2.375max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.1 Pro PreviewGoogleWejście > 200K tokenów na żądanie: $3.8 / $17.1 · cache $0.38google/gemini-3.1-pro-preview/chat1MMaks. odpowiedź 33K$1.9cache $0.19$11.4max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.5 Flash-LiteGooglegoogle/gemini-3.5-flash-lite/chat1MMaks. odpowiedź 66K$0.3cache $0.03$2.5max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.7 FlashGooglegoogle/gemini-3.7-flash/chat1MMaks. odpowiedź 66K$0.675cache $0.0675$3.375max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3 Flash PreviewGooglegoogle/gemini-3-flash-preview/chat256KMaks. odpowiedź 66K$0.45cache $0.045$2.7max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
GLM 5.2Z.aizai/glm-5.2/chat1MMaks. odpowiedź 131K$0.98cache $0.182$3.08max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p
GLM 5.3Z.aizai/glm-5.3/chat1MMaks. odpowiedź 131K$1.05cache $0.195$3.3max_tokensparallel_tool_callsreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
GLM 5.3 FlashZ.aizai/glm-5.3-flash/chat1MMaks. odpowiedź 131K$0.1275cache $0.0255$0.425max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p
Grok 4.3xAIWejście ≥ 200K tokenów na żądanie: $2.5 / $5 · cache $0.4xai/grok-4.3/chat1MMaks. odpowiedź 900K$1.25cache $0.2$2.5max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.5xAIWejście ≥ 200K tokenów na żądanie: $4 / $12 · cache $0.6xai/grok-4.5/chat500KMaks. odpowiedź 450K$2cache $0.3$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.6xAIWejście ≥ 200K tokenów na żądanie: $4 / $12 · cache $1xai/grok-4.6/chat500KMaks. odpowiedź 450K$2cache $0.5$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.7xAIWejście ≥ 200K tokenów na żądanie: $4 / $12 · cache $1xai/grok-4.7/chat500KMaks. odpowiedź 450K$2cache $0.5$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Kimi K3Moonshot AImoonshot/kimi-k3/chat1MMaks. odpowiedź 1M$2.7cache $0.3$13.5max_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

  1. 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 pominiesz max_tokens, używana jest maksymalna długość odpowiedzi modelu, więc ustaw ten parametr, by ograniczyć blokadę.
  2. 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.
  3. 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 200 z nagłówkiem X-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 odpowiedzi 200, więc przy tym nagłówku sprawdzaj obecność klucza error. Strumieniowanie pozwala tego uniknąć.
  • 404 model_not_found. ID modelu nie istnieje. Błąd wskazuje najbardziej zbliżony model czatu, który możesz wywołać.
  • 400 z param: model. ID należy do modelu obrazu, wideo lub audio; te działają jako zadania.
  • 400 content_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.

Na tej stronie