PopNowDocs API
Chat e API compatibili
Contenuto principale

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 OpenAIhttps://api.popnow.ai/v1 (Chat Completions, Responses, elenco dei modelli)
URL di base Anthropichttps://api.popnow.ai (l’SDK aggiunge /v1/messages)
GeminiPOST https://api.popnow.ai/v1beta/models/{model}:generateContent
ChiaveAuthorization: Bearer sk-popnow-…; funzionano anche gli header x-api-key dell’SDK Anthropic e x-goog-api-key di Google
ID dei modellipublisher/model/chat, per esempio anthropic/claude-haiku-5.5/chat. L’elenco completo è più sotto
PrezzoA token, in USD, senza minimo per richiesta. Le richieste fallite o rifiutate vengono rimborsate
Streamingstream: 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.

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);

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.

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)

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.

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="")

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 risposta X-PopNow-Ignored-Params.
  • Un valore fuori dall’intervallo del modello viene portato al valore accettato più vicino e segnalato in X-PopNow-Adjusted-Params come name=value.
  • Qualsiasi altro campo che il modello non dichiara restituisce 400 con code: unsupported_parameter e param che 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.

ModelloID modelloContestoInput per milione di token (USD)Output per milione di token (USD)Parametri
Claude Fable 5Anthropicanthropic/claude-fable-5/chat1MOutput max 128K$9cache $0.9scrittura cache $11$45max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Haiku 5.5AnthropicInput > 100K token per richiesta: $0.5 / $2.5 · cache $0.1anthropic/claude-haiku-5.5/chat1MOutput max 128K$0.1scrittura cache $0.1$0.5max_tokensparallel_tool_callstool_choicetools
Claude Opus 4.5Anthropicanthropic/claude-opus-4.5/chat198KOutput max 33K$4.5cache $0.45scrittura cache $5.5$22.5max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p
Claude Opus 4.6Anthropicanthropic/claude-opus-4.6/chat1MOutput max 128K$5cache $0.5scrittura cache $6.25$25max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p
Claude Opus 5Anthropicanthropic/claude-opus-5/chat1MOutput max 128K$4.5cache $0.45scrittura cache $5.5$22.5max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Opus 5.5Anthropicanthropic/claude-opus-5.5/chat1MOutput max 128K$3.6cache $0.18scrittura cache $4.5$18max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Sonnet 4.5Anthropicanthropic/claude-sonnet-4.5/chat198KOutput max 64K$2.7cache $0.27scrittura cache $3.3$13.5max_tokensparallel_tool_callsstoptemperaturetool_choicetoolstop_ktop_p
Claude Sonnet 4.6Anthropicanthropic/claude-sonnet-4.6/chat1MOutput max 64K$3cache $0.3scrittura cache $3.75$15max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_ktop_p
Claude Sonnet 5Anthropicanthropic/claude-sonnet-5/chat1MOutput max 64K$1.9cache $0.19scrittura cache $2.375$9.5max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Sonnet 5.5Anthropicanthropic/claude-sonnet-5.5/chat1MOutput max 128K$2cache $0.2scrittura cache $2.5$10max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
DeepSeek V4.1 FlashDeepSeekdeepseek/v4.1-flash/chat1MOutput max 384K$0.3cache $0.006$1.2max_tokensreasoning_effortresponse_formatstoptool_choicetools
DeepSeek V4 FlashDeepSeekdeepseek/v4-flash/chat1MOutput max 66K$0.44cache $0.014$1.32max_tokensreasoning_effortresponse_formatstoptool_choicetools
DeepSeek V4 ProDeepSeekdeepseek/v4-pro/chat1MOutput max 384K$1.32cache $0.044$3.96max_tokensparallel_tool_callsreasoning_effortresponse_formatstoptool_choicetools
Gemini 2.5 FlashGooglegoogle/gemini-2.5-flash/chat1MOutput max 66K$0.285cache $0.0285$2.375max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.1 Pro PreviewGoogleInput > 200K token per richiesta: $3.8 / $17.1 · cache $0.38google/gemini-3.1-pro-preview/chat1MOutput max 33K$1.9cache $0.19$11.4max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.5 Flash-LiteGooglegoogle/gemini-3.5-flash-lite/chat1MOutput max 66K$0.3cache $0.03$2.5max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.7 FlashGooglegoogle/gemini-3.7-flash/chat1MOutput max 66K$0.675cache $0.0675$3.375max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3 Flash PreviewGooglegoogle/gemini-3-flash-preview/chat256KOutput max 66K$0.45cache $0.045$2.7max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
GLM 5.2Z.aizai/glm-5.2/chat1MOutput max 131K$0.98cache $0.182$3.08max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p
GLM 5.3Z.aizai/glm-5.3/chat1MOutput max 131K$1.05cache $0.195$3.3max_tokensparallel_tool_callsreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
GLM 5.3 FlashZ.aizai/glm-5.3-flash/chat1MOutput max 131K$0.1275cache $0.0255$0.425max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p
Grok 4.3xAIInput ≥ 200K token per richiesta: $2.5 / $5 · cache $0.4xai/grok-4.3/chat1MOutput max 900K$1.25cache $0.2$2.5max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.5xAIInput ≥ 200K token per richiesta: $4 / $12 · cache $0.6xai/grok-4.5/chat500KOutput max 450K$2cache $0.3$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.6xAIInput ≥ 200K token per richiesta: $4 / $12 · cache $1xai/grok-4.6/chat500KOutput max 450K$2cache $0.5$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.7xAIInput ≥ 200K token per richiesta: $4 / $12 · cache $1xai/grok-4.7/chat500KOutput max 450K$2cache $0.5$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Kimi K3Moonshot AImoonshot/kimi-k3/chat1MOutput max 1M$2.7cache $0.3$13.5max_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

  1. 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 ometti max_tokens, si usa l’output massimo del modello, quindi impostalo per tenere basse le trattenute.
  2. Addebito. Quando la risposta termina paghi i token effettivamente usati, in USD, senza minimo per richiesta. Il resto della trattenuta viene rilasciato.
  3. 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 200 e l’header X-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 corpo 200, quindi controlla la presenza di una chiave error quando quell’header c’è. Lo streaming evita tutto questo.
  • 404 model_not_found. L’ID del modello non esiste. L’errore indica il modello di chat più vicino che puoi chiamare.
  • 400 con param: model. L’ID appartiene a un modello di immagini, video o audio; questi girano come attività.
  • 400 content_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.

In questa pagina