Référence API
Chat completions
POST /v1/chat/completions — le corps standard OpenAI, le streaming et les images.
POST /v1/chat/completionsLe corps est du JSON OpenAI standard. model et messages sont obligatoires ;
tout autre champ reconnu par le modèle en amont est transmis tel quel.
stream vaut false par défaut#
Sans streaming#
curl https://api.gamra.dev/v1/chat/completions \
-H "Authorization: Bearer $GAMRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{ "role": "user", "content": "Explique les millimes." }],
"stream": false
}'Avec streaming#
Passez stream: true et la réponse arrive en text/event-stream, au format
SSE d'OpenAI, terminée par data: [DONE].
const stream = await client.chat.completions.create({
model: "deepseek-v4-flash",
messages: [{ role: "user", content: "Explique les millimes." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}La passerelle force stream_options.include_usage en amont : le décompte de
jetons arrive donc dans le dernier événement, et la facturation porte sur la
consommation réelle plutôt que sur une estimation.
Images#
Un message contenant des parties image_url n'est accepté que si le modèle
déclare vision: true dans /v1/models. Sinon la
requête est refusée avec un 400 et le code model_lacks_vision.
Modèles disponibles#
GET /v1/models renvoie le catalogue filtré par votre formule :
{
"object": "list",
"data": [
{
"id": "deepseek-v4-flash",
"object": "model",
"created": 0,
"owned_by": "gamra",
"min_tier": "free",
"vision": false
}
]
}