Parcourir la documentation

Référence API

Chat completions

POST /v1/chat/completions — le corps standard OpenAI, le streaming et les images.

POST /v1/chat/completions

Le 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
    }
  ]
}