Riferimento API
L’API segue il formato OpenAI su https://ai.geraikita.com/v1 e il formato Anthropic su https://ai.geraikita.com. Tutti i body di richiesta e risposta sono in JSON (UTF-8).
| Endpoint | Funzione |
|---|---|
| POST /v1/chat/completions | Chat in formato OpenAI (stream e non stream) |
| POST /v1/messages | Messages in formato Anthropic (stream e non stream) |
| POST /v1/messages/count_tokens | Conteggio dei token del prompt in formato Anthropic — gratuito |
| GET /v1/models | Elenco dei modelli utilizzabili |
| POST /v1/images/generations | Genera immagini da un prompt testuale, addebito per immagine — vedi Generazione di immagini |
/v1/responses, /v1/embeddings) non sono ancora supportati.Chat completions (OpenAI)
https://ai.geraikita.com/v1/chat/completionsGenera una risposta a partire da un elenco di messaggi. Header: Authorization: Bearer gk-… e Content-Type: application/json.
Body della richiesta
| Parametro | Tipo | Descrizione |
|---|---|---|
model | string | Obbligatorio. Id del modello esattamente come nell’elenco dei modelli, senza prefisso. |
messages | array | Obbligatorio. Array ordinato di messaggi; ogni messaggio contiene role e content. Almeno un messaggio. |
stream | boolean | true per ricevere la risposta a blocchi tramite Server-Sent Events. |
max_tokens | integer | Limite di token della risposta. Se il saldo non basta per il valore richiesto, il server può ridurlo automaticamente. |
temperature, top_p, stop | — | Passato al modello così com’è. Supporto e intervallo di valori dipendono dal modello. |
tools, tool_choice | array / object | Chiamata di funzioni (tool calling) in formato OpenAI, passata ai modelli che la supportano. |
Esempio di richiesta
curl https://ai.geraikita.com/v1/chat/completions \
-H "Authorization: Bearer gk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Ciao!"}]
}'Esempio di risposta
{
"id": "chatcmpl-…",
"object": "chat.completion",
"model": "claude-sonnet-5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 12, "completion_tokens": 9, "total_tokens": 21 }
}L’oggetto usage contiene il numero di token su cui si basa la fatturazione — vedi Prezzi e fatturazione.
Messages (Anthropic)
https://ai.geraikita.com/v1/messagesEndpoint nativo Anthropic per l’SDK Anthropic e Claude Code CLI. Base URL nel client = https://ai.geraikita.com (senza /v1).
Header
| Header | Valore | Descrizione |
|---|---|---|
| x-api-key | gk-… | La tua chiave API gk- (è accettato anche Authorization: Bearer). |
| anthropic-version | 2023-06-01 | Versione dell’API Anthropic; inviata automaticamente dall’SDK. |
| content-type | application/json | — |
Body della richiesta
| Parametro | Tipo | Descrizione |
|---|---|---|
model | string | Obbligatorio. Id del modello esattamente come nell’elenco dei modelli, senza prefisso. |
messages | array | Obbligatorio. Array di messaggi in formato Anthropic, almeno un messaggio. |
max_tokens | integer | Limite di token della risposta (obbligatorio nel formato Anthropic). |
system | string / array | Istruzioni di sistema (facoltative). |
stream | boolean | true per ricevere la risposta a blocchi tramite Server-Sent Events. |
Esempio di richiesta
curl https://ai.geraikita.com/v1/messages \
-H "x-api-key: gk-xxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Ciao!"}]
}'Devi contare i token prima dell’invio? POST https://ai.geraikita.com/v1/messages/count_tokens accetta lo stesso body e non viene fatturato.
Elenco dei modelli
https://ai.geraikita.com/v1/modelsRestituisce l’elenco degli id dei modelli che puoi inviare nel campo model. Se chiamato con una chiave limitata da allowlist, compaiono solo i modelli consentiti. Con l’header x-api-key o anthropic-version, la risposta segue il formato Anthropic.
curl https://ai.geraikita.com/v1/models \
-H "Authorization: Bearer gk-xxxxxxxx"Streaming (SSE)
Con "stream": true, la risposta viene inviata come text/event-stream. Il server invia subito gli header, poi una riga di commento keepalive : ka ogni 10 secondi durante l’attesa, così la connessione non viene considerata morta. Imposta il timeout totale della tua app ad almeno 300 secondi.
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}
: ka
data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}
data: [DONE]- Formato OpenAI: ogni blocco è una riga
data:con un JSON contenentechoices[].delta, e si chiude condata: [DONE]. - Formato Anthropic: eventi
message_start,content_block_delta, …,message_stopcome nell’API Anthropic. - Ignora le righe che iniziano con i due punti (
:): sono keepalive, non dati. Le guide per i singoli strumenti sono in Impostazioni degli strumenti agentici.