Documentazione API Hop
Completamenti chat comuni
API di chat unificata per cambiare modelli di testo tramite il parametro `model`. Il formato della richiesta è compatibile con OpenAI Chat Completions.
https://api.apihop.ai/v1/chat-completionsAPI di chat unificata per cambiare modelli di testo tramite il parametro model. Il formato della richiesta è compatibile con OpenAI Chat Completions.
Claude Sonnet 4.6 (claude-sonnet-4-6) è supportato dal fornitore a monte, ma non è attualmente pubblicato su RequestBeam. Non è il modello predefinito di un’integrazione attiva. Prima di chiamare qualsiasi modello, verifica l’accesso con la tua risposta di GET https://api.apihop.ai/v1/models.
Questo endpoint restituisce per impostazione predefinita una risposta JSON completa. Imposta esplicitamente stream: true quando serve lo streaming SSE.
POST https://api.apihop.ai/v1/chat-completionsAutenticazione
Tutte le richieste richiedono l’autenticazione con token Bearer.
Authorization: Bearer YOUR_API_KEYSe l’autenticazione non riesce, controlla:
- Che la chiave API sia corretta
- Che la chiave sia valida per questo URL di base dell’API
- Che l’intestazione della richiesta sia scritta correttamente
- Che un proxy non riscriva l’intestazione di autorizzazione
Corpo della richiesta
modelstringobbligatorioPredefinito: gpt-5.4ID dei modelli di testo documentati (verifica l’accesso con GET https://api.apihop.ai/v1/models):
- OpenAI:
gpt-5.4,gpt-5.5,gpt-5.6-sol,gpt-5.6-terra,gpt-6-astra - Anthropic:
claude-fable-5,claude-fable-5-1,claude-opus-4-6,claude-opus-4-7,claude-opus-4-8,claude-opus-5,claude-opus-5-5,claude-sonnet-5,claude-sonnet-5-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro,deepseek-v4.1-flash
(V4.1 Flash è un ID di modello distinto, disponibile solo dopo distribuzione e attivazione; controlla GET https://api.apihop.ai/v1/models).
- Gemini:
gemini-3.6-flash,gemini-3.7-flash,gemini-3.8-flash,gemini-3.5-flash-lite,gemini-4-argon(dopo distribuzione e attivazione) - Kimi:
kimi-k3 - MiniMax:
minimax-m3
Consulta il Catalogo dei modelli per l’elenco completo e i modelli visibili alla chiave API corrente. Usa la tua risposta di GET https://api.apihop.ai/v1/models come fonte attuale della disponibilità. Consulta le guide DeepSeek, Gemini, Kimi e MiniMax per note di selezione ed esempi specifici della famiglia.
messagesobject[]obbligatorioMessaggi di chat. Ogni messaggio dovrebbe includere:
role:system,useroassistantcontent: contenuto del messaggio
Esempio:
[
{"role": "system", "content": "You are a helpful Python tutor."},
{"role": "user", "content": "How should I learn programming?"}
]Limiti di campionamento specifici del modello: gpt-6-astra non accetta i precedenti temperature, top_p o top_logprobs; ometti questi campi anche se un client più vecchio li include. Il Playground GPT-6 Astra di RequestBeam nasconde anche i vecchi controlli di campionamento e penalità. claude-sonnet-5 ha rifiutato top_p in una verifica di integrazione documentata, quindi omettilo anche per quel modello. Inoltrare un campo opzionale tramite un proxy non dimostra che il modello del fornitore scelto lo supporti.
temperaturenumberPredefinito: 1.0Temperatura di campionamento. I client compatibili con OpenAI usano comunemente valori da 0 a 2, ma la decisione finale di validazione spetta al modello scelto.
max_tokensintegerMassimo opzionale di token di output, come intero positivo. Ometti questo campo per usare il valore predefinito del fornitore per il modello scelto; valori predefiniti e limiti massimi variano secondo modello e configurazione del fornitore.
A seconda del modello, il budget può includere token di ragionamento e testo finale. Un budget piccolo può causare finish_reason: "length", troncare la risposta o esaurirsi prima del testo finale. Aumentarlo può aumentare il costo.
max_completion_tokensintegerAlternativa opzionale di compatibilità a max_tokens, con le stesse considerazioni sul budget. Un modello può accettare solo uno dei due campi: quando cambi modello, inizia con un corpo minimo. Ometti entrambi per usare il valore predefinito del fornitore.
streambooleanPredefinito: falseIndica se trasmettere la risposta in streaming.
true: restituisce Server-Sent Eventsfalse: restituisce una risposta completa
top_pnumberPredefinito: 1.0Parametro di campionamento nucleus. I client compatibili con OpenAI usano comunemente valori da 0 a 1; il modello scelto effettua la validazione finale.
frequency_penaltynumberPredefinito: 0Penalità di frequenza. I client compatibili con OpenAI usano comunemente valori da -2.0 a 2.0; il modello scelto effettua la validazione finale.
presence_penaltynumberPredefinito: 0Penalità di presenza. I client compatibili con OpenAI usano comunemente valori da -2.0 a 2.0; il modello scelto effettua la validazione finale.
stopstring | arrayUna sequenza di arresto o un array di sequenze. Il modello scelto determina quantità accettata e comportamento.
nintegerPredefinito: 1Numero di risposte da generare. Usa un numero come 1, non una stringa tra virgolette.
Differenze tra parametri dei modelli
I modelli di testo attuali supportano richieste Chat minime con e senza streaming, ma accettazione ed effetti dei parametri opzionali variano secondo il modello scelto e la sua implementazione di compatibilità.
L’ultima verifica del 2026-09-26 ha accettato claude-fable-5 con temperature: 0 e restituito testo. La stessa verifica ha rifiutato claude-sonnet-5 con top_p: 0.9, restituendo HTTP 400 e top_p is deprecated. Ometti top_p per quel modello. L’accettazione non dimostra un effetto sul campionamento né garantisce altri modelli o richieste future; non presumere che tutti i parametri di campionamento siano supportati.
Le verifiche OpenAI del 2026-09-26 hanno accettato stop per gpt-5.6-sol e gpt-5.6-terra. L’accettazione dei parametri può cambiare con il fornitore e non dimostra l’efficacia di una sequenza di arresto.
L’inoltro Chat nativo compatibile con OpenAI conserva top_p e stop nella richiesta al fornitore. Una route che converte Chat in Responses conserva top_p ma non inoltra stop. Inoltrare un campo non dimostra il supporto del fornitore né il suo effetto; nessuno dei due campi ha una garanzia valida per tutte le route della piattaforma.
Quando cambi modello, inizia con una richiesta minima e verifica separatamente campionamento, sequenze di arresto e parametri avanzati degli strumenti. Per le sequenze di arresto, esamina il testo reale e il motivo dell’arresto, non solo lo stato HTTP. HTTP 200 non dimostra un effetto sul campionamento. I budget di output devono coprire sia il ragionamento sia il testo finale del modello.
Esempio di richiesta
{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "Hello, introduce yourself briefly."
}
],
"stream": false
}Risposta
idstringIdentificatore univoco della risposta.
objectstringTipo di oggetto, solitamente chat.completion o chat.completion.chunk per lo streaming.
createdintegerTimestamp Unix di creazione.
modelstringIdentificatore del modello restituito nella risposta.
choicesarrayScelte generate, con contenuto del messaggio, indice e motivo di completamento.
usageobjectStatistiche di utilizzo dei token.
Esempio di successo
{
"id": "chatcmpl-9876543210",
"object": "chat.completion",
"created": 1677652288,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I am an AI assistant that can help with writing, coding, and analysis."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 42,
"total_tokens": 70
}
}Risposta di errore
Consulta Codici di errore e risoluzione dei problemi per il riferimento completo, le differenze tra protocolli e i passaggi diagnostici.
Gli errori HTTP di Chat Completions usano un corpo JSON piatto, compresi gli errori HTTP del fornitore restituiti prima dell’inizio di uno stream SSE. Per esempio, HTTP 402 restituisce:
{
"code": 40000,
"message": "Insufficient credit. Required: 30000, Available: 20000",
"type": "api_error"
}code: codice numerico di errore della piattaforma, distinto dallo stato HTTP e non una stringamessage: descrizione leggibile dell’erroretype:api_errorrequestId: identificatore opzionale della richiesta per la diagnosi
| Stato HTTP | code | Significato |
|---|---|---|
| 400 | 10000 | Richiesta non valida |
| 401 | 20000 | Autenticazione mancante o non valida |
| 402 | 40000 | Credito insufficiente |
| 403 | 20001 | Accesso negato o modello non disponibile per questa chiave |
| 404 | 30000 | Modello o risorsa non trovato |
| 409 | 30001 | Conflitto della richiesta |
| 422 | 10001 | Errore di validazione |
| 429 | 40001 | Limite di frequenza superato |
| 500 | 50003 | Errore interno |
| 502 | 50000 | Errore del fornitore a monte |
| 503 | 50001 | Servizio non disponibile |
| 504 | 50002 | Timeout del gateway |
Controlla prima lo stato HTTP per determinare se la richiesta è riuscita, poi confronta il code numerico per la gestione specifica dell’applicazione. Non confrontare code con stringhe come "400", non presumere che coincida con lo stato HTTP e non interpretare message come identificatore stabile dell’errore. messages mancante o di tipo errato viene rifiutato con HTTP 400 e code: 10000 prima di chiamare il fornitore.
Questo formato di errore vale per le risposte HTTP di Chat Completions, non per errori all’interno di uno stream SSE già avviato o di altri protocolli API. Il catalogo dei modelli e gli endpoint dei protocolli nativi hanno formati di errore documentati propri.