Modelli di chat
Chiama Claude, Gemini, DeepSeek, GLM, Grok e Kimi tramite l’API di PopNow con l’SDK OpenAI, Anthropic o Gemini che già usi. Una sola chiave API, prezzo a token in USD.
L’API di PopNow gestisce anche modelli di chat: Claude, Gemini, DeepSeek, GLM, Grok e Kimi. Li chiami con i protocolli che il tuo codice già usa — OpenAI Chat Completions e Responses, Anthropic Messages e Gemini generateContent — quindi gli SDK ufficiali funzionano non appena cambi l’URL di base. Usano la stessa chiave sk-popnow- e lo stesso saldo API separato in USD di immagini, video e audio tramite API. Parte da $0; aggiungi fondi in Fatturazione API. I crediti del sito non finanziano queste chiamate.
Le chiamate di chat sono sincrone: ricevi la risposta (o uno stream) nella stessa risposta HTTP. Non c’è alcuna attività da interrogare.
Vista d’insieme
| URL di base OpenAI | https://api.popnow.ai/v1 (Chat Completions, Responses, elenco dei modelli) |
| URL di base Anthropic | https://api.popnow.ai (l’SDK aggiunge /v1/messages) |
| Gemini | POST https://api.popnow.ai/v1beta/models/{model}:generateContent |
| Chiave | Authorization: Bearer sk-popnow-…; funzionano anche gli header x-api-key dell’SDK Anthropic e x-goog-api-key di Google |
| ID dei modelli | publisher/model/chat, per esempio anthropic/claude-haiku-5.5/chat. L’elenco completo è più sotto |
| Prezzo | A token, in USD, senza minimo per richiesta. Le richieste fallite o rifiutate vengono rimborsate |
| Streaming | stream: true su ogni protocollo (:streamGenerateContent?alt=sse per Gemini) |
La tua prima richiesta di chat
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
}'La risposta è un normale oggetto chat.completion con choices[0].message.content e usage. L’header di risposta X-PopNow-Task-Id indica l’attività che ha registrato l’addebito.
SDK OpenAI
Punta il client a https://api.popnow.ai/v1 e passa la tua chiave PopNow. Non cambia altro.
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);Anche la Responses API (client.responses.create) funziona, nella sua forma senza stato: invia ogni volta l’intera conversazione in input. previous_response_id restituisce 400.
SDK Anthropic
L’SDK Anthropic aggiunge da solo /v1/messages, quindi l’URL di base non ha /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)Su questo endpoint funziona qualsiasi modello di chat, non solo Claude. Gli errori tornano nel formato Anthropic {"type": "error", "error": {...}}.
Gemini generateContent
Metti l’ID completo del modello nel percorso; può contenere barre.
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 }
}'Usa :streamGenerateContent?alt=sse per uno stream. Gli errori usano il formato Google {"error": {"code", "message", "status"}}.
Streaming
Imposta stream: true e leggi i Server-Sent Events. Su Chat Completions ogni blocco è un chat.completion.chunk e lo stream termina con data: [DONE]. Come con OpenAI, uno stream non porta usage a meno che tu non lo chieda con stream_options: { "include_usage": true }; in quel caso l’usage arriva in un ultimo blocco con un array choices vuoto.
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="")Strumenti, output JSON e parametri
Ogni modello dichiara i campi della richiesta che accetta — tools, tool_choice, response_format, temperature, reasoning_effort e così via. La colonna Parameters nella tabella dei modelli li elenca, e GET /v1/models li restituisce in supported_parameters.
- Un’impostazione di campionamento che il modello non accetta (
temperature,top_p,frequency_penalty…) viene eliminata invece di far fallire la richiesta, e indicata nell’header di rispostaX-PopNow-Ignored-Params. - Un valore fuori dall’intervallo del modello viene portato al valore accettato più vicino e segnalato in
X-PopNow-Adjusted-Paramscomename=value. - Qualsiasi altro campo che il modello non dichiara restituisce
400concode: unsupported_parametereparamche indica il campo, per esempio un’immagine inviata a un modello solo testo.
Modelli e prezzi
I prezzi sono in USD per 1 milione di token, input e output separati; l’input in cache costa meno sui modelli che fanno caching. Alcuni modelli applicano una tariffa più alta quando una richiesta supera una soglia di contesto lungo, indicata sotto il nome del modello.
| Modello | ID modello | Contesto | Input per milione di token (USD) | Output per milione di token (USD) | Parametri |
|---|---|---|---|---|---|
| Claude Fable 5Anthropic | anthropic/claude-fable-5/chat | 1MOutput max 128K | $9cache $0.9scrittura cache $11 | $45 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Haiku 5.5AnthropicInput > 100K token per richiesta: $0.5 / $2.5 · cache $0.1 | anthropic/claude-haiku-5.5/chat | 1MOutput max 128K | $0.1scrittura cache $0.1 | $0.5 | max_tokensparallel_tool_callstool_choicetools |
| Claude Opus 4.5Anthropic | anthropic/claude-opus-4.5/chat | 198KOutput max 33K | $4.5cache $0.45scrittura cache $5.5 | $22.5 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p |
| Claude Opus 4.6Anthropic | anthropic/claude-opus-4.6/chat | 1MOutput max 128K | $5cache $0.5scrittura cache $6.25 | $25 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p |
| Claude Opus 5Anthropic | anthropic/claude-opus-5/chat | 1MOutput max 128K | $4.5cache $0.45scrittura cache $5.5 | $22.5 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Opus 5.5Anthropic | anthropic/claude-opus-5.5/chat | 1MOutput max 128K | $3.6cache $0.18scrittura cache $4.5 | $18 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Sonnet 4.5Anthropic | anthropic/claude-sonnet-4.5/chat | 198KOutput max 64K | $2.7cache $0.27scrittura cache $3.3 | $13.5 | max_tokensparallel_tool_callsstoptemperaturetool_choicetoolstop_ktop_p |
| Claude Sonnet 4.6Anthropic | anthropic/claude-sonnet-4.6/chat | 1MOutput max 64K | $3cache $0.3scrittura cache $3.75 | $15 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_ktop_p |
| Claude Sonnet 5Anthropic | anthropic/claude-sonnet-5/chat | 1MOutput max 64K | $1.9cache $0.19scrittura cache $2.375 | $9.5 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Sonnet 5.5Anthropic | anthropic/claude-sonnet-5.5/chat | 1MOutput max 128K | $2cache $0.2scrittura cache $2.5 | $10 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| DeepSeek V4.1 FlashDeepSeek | deepseek/v4.1-flash/chat | 1MOutput max 384K | $0.3cache $0.006 | $1.2 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
| DeepSeek V4 FlashDeepSeek | deepseek/v4-flash/chat | 1MOutput max 66K | $0.44cache $0.014 | $1.32 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
| DeepSeek V4 ProDeepSeek | deepseek/v4-pro/chat | 1MOutput max 384K | $1.32cache $0.044 | $3.96 | max_tokensparallel_tool_callsreasoning_effortresponse_formatstoptool_choicetools |
| Gemini 2.5 FlashGoogle | google/gemini-2.5-flash/chat | 1MOutput max 66K | $0.285cache $0.0285 | $2.375 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.1 Pro PreviewGoogleInput > 200K token per richiesta: $3.8 / $17.1 · cache $0.38 | google/gemini-3.1-pro-preview/chat | 1MOutput max 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 | 1MOutput max 66K | $0.3cache $0.03 | $2.5 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.7 FlashGoogle | google/gemini-3.7-flash/chat | 1MOutput max 66K | $0.675cache $0.0675 | $3.375 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3 Flash PreviewGoogle | google/gemini-3-flash-preview/chat | 256KOutput max 66K | $0.45cache $0.045 | $2.7 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| GLM 5.2Z.ai | zai/glm-5.2/chat | 1MOutput max 131K | $0.98cache $0.182 | $3.08 | max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p |
| GLM 5.3Z.ai | zai/glm-5.3/chat | 1MOutput max 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 | 1MOutput max 131K | $0.1275cache $0.0255 | $0.425 | max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p |
| Grok 4.3xAIInput ≥ 200K token per richiesta: $2.5 / $5 · cache $0.4 | xai/grok-4.3/chat | 1MOutput max 900K | $1.25cache $0.2 | $2.5 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.5xAIInput ≥ 200K token per richiesta: $4 / $12 · cache $0.6 | xai/grok-4.5/chat | 500KOutput max 450K | $2cache $0.3 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.6xAIInput ≥ 200K token per richiesta: $4 / $12 · cache $1 | xai/grok-4.6/chat | 500KOutput max 450K | $2cache $0.5 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.7xAIInput ≥ 200K token per richiesta: $4 / $12 · cache $1 | xai/grok-4.7/chat | 500KOutput max 450K | $2cache $0.5 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Kimi K3Moonshot AI | moonshot/kimi-k3/chat | 1MOutput max 1M | $2.7cache $0.3 | $13.5 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
Lo stesso elenco è disponibile dall’API, con prezzi, lunghezza del contesto e parametri supportati:
curl "https://api.popnow.ai/v1/models?modality=text" \
-H "Authorization: Bearer $POPNOW_API_KEY"Come viene addebitata una richiesta di chat
- Trattenuta. Quando la richiesta viene accettata, il massimo che potrebbe costare viene messo da parte sul tuo saldo, calcolato dall’input e da
max_tokens. Se omettimax_tokens, si usa l’output massimo del modello, quindi impostalo per tenere basse le trattenute. - Addebito. Quando la risposta termina paghi i token effettivamente usati, in USD, senza minimo per richiesta. Il resto della trattenuta viene rilasciato.
- Rimborso. Una richiesta che fallisce, o che il modello rifiuta, viene rimborsata per intero.
Un saldo inferiore alla trattenuta, oppure un tetto di spesa della chiave che verrebbe superato, restituisce 402 prima che qualcosa venga inviato al modello. Per vedere l’addebito esatto, leggi l’attività indicata in X-PopNow-Task-Id con GET /api/v1/jobs/recordInfo: costUsd è la stringa decimale in USD da mostrare e usare per la contabilità. Possono apparire anche i vecchi campi in crediti; non arrotondare gli addebiti USD ai crediti interi.
Risposte lunghe ed errori
- Chiamate lunghe senza streaming. Se una risposta impiega più di circa 30 secondi, vengono inviati prima lo stato
200e l’headerX-PopNow-Keepalive: 1, poi un a capo ogni 15 secondi, infine il corpo JSON. Un errore dopo quel punto arriva come il normale oggetto di errore del protocollo dentro il corpo200, quindi controlla la presenza di una chiaveerrorquando quell’header c’è. Lo streaming evita tutto questo. 404model_not_found. L’ID del modello non esiste. L’errore indica il modello di chat più vicino che puoi chiamare.400conparam: model. L’ID appartiene a un modello di immagini, video o audio; questi girano come attività.400content_rejected. La politica sui contenuti del modello ha rifiutato la richiesta. Non viene addebitato nulla.402. USD API insufficienti per la trattenuta, oppure un limite di spesa della chiave. Vedi Fatturazione API.
Privacy
Le richieste vengono inviate al modello così come le hai scritte; PopNow non aggiunge un proprio prompt di sistema. Si applica la politica d’uso di ciascun modello. Il testo dei messaggi non viene conservato dopo che l’addebito è stato chiuso.

