Introduction
Un endpoint de chat compatible OpenAI pour Grok 4.6 de xAI, où une capture d’écran et la question qui l’accompagne arrivent dans le même tour.
Grok 4.6 vient de xAI et répond sur POST https://api.spicyapi.ai/v1/chat/completions sous le nom de modèle xai/grok-4.6. La requête a la forme familière : un tableau messages de 256 tours ordonnés au maximum, un plafond de sortie, deux réglages d’échantillonnage, une liste d’outils, un format de réponse et reasoning_effort pour dire jusqu’où le modèle travaille avant d’écrire. La fenêtre porte 500 000 tokens et une seule réponse peut en prendre 450 000, si bien que la plus grande part du budget se place du côté de la réponse plutôt que du côté du prompt. Le contenu accepte des blocs text et image_url ; il n’existe pas de bloc fichier ou PDF sur ce point de terminaison, et la modalité est texte et images en entrée, texte en sortie.
Fonctionnalités et points forts
Une image et la phrase qui va avec, dans le même tour
Le contenu peut être une simple chaîne ou un tableau de blocs, et un bloc image porte une url ainsi qu’un indice detail valant auto, low ou high. La capture et la question arrivent ensemble, donc le modèle lit les pixels et non votre description : c’est toute la différence quand la réponse tient à un axe mal étiqueté, à une trace d’appels coupée au bord ou à une mise en page qui ne casse qu’à une largeur. Le contenu des images est compté à l’intérieur de la fenêtre de 500 000 tokens et non à côté, donc plusieurs grandes captures et un long historique se disputent le même budget.
Presque tout le budget peut partir dans la réponse
Une seule réponse atteint 450 000 tokens, une forme inhabituelle pour un modèle de chat : l’essentiel de la fenêtre peut servir à écrire plutôt qu’à lire. max_tokens reste à 4 096 par défaut, une longue génération se demande donc et ne s’obtient pas par accident, et une coupure à la valeur par défaut arrive sans avertissement. reasoning_effort prend low, medium, high ou xhigh et vaut high par défaut ; l’effort se paie en tokens de sortie et pèse donc à la fois sur votre plafond et sur votre facture.
Rien de notre côté ne se trouve sur le chemin
Nous ne plaçons aucun classificateur de contenu à nous entre vous et ce modèle. Ce qu’il refuse d’écrire relève de son propre comportement et non d’une couche ajoutée ici, et ce que vous envoyez n’est ni analysé, ni noté, ni réécrit au passage. Les droits sur le matériel que vous envoyez vous appartiennent, et vous répondez de l’usage fait de la réponse.
Paramètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
messages | Oui | 256 tours au maximum. Le contenu peut mélanger des blocs text et |
reasoning_effort | Non | low, medium, high ou xhigh ; high par défaut. L’effort est facturé au tarif de sortie. |
max_tokens | Non | Plafonne la réponse visible à 450 000 ; la valeur par défaut, 4 096, tronque sans prévenir une réponse longue. |
temperature | Non | 0 à 2, 0,7 par défaut. Mettez 0 pour comparer deux maquettes ou deux exécutions. |
top_p | Non | 0,01 à 1. Réglez ce paramètre ou temperature, pas les deux à la fois. |
tools | Non | Jusqu’à 128 définitions de fonctions par requête. 128 éléments maximum |
parallel_tool_calls | Non | true ou false, true par défaut : le modèle peut demander plusieurs appels d’outils dans un même tour. Valeur par défaut: |
tool_choice | Non | auto, none, required, ou un objet qui nomme la fonction à appeler. |
response_format | Non | Demandez un objet JSON quand la réponse est lue par du code et non par une personne. |
Tarification
Entrée $2 / Sortie $6 par 1 million de tokens; Prompts de 200K tokens ou plus: Entrée $4 / Sortie $12
L’entrée totale inclut les tokens mis en cache. À partir de 200 000 tokens d’entrée, les tarifs long contexte s’appliquent à toute l’entrée, à l’entrée en cache et à la sortie de la requête ; en dessous, les tarifs standard s’appliquent. La sortie inclut les tokens de raisonnement. Vérifiez le budget avant l’envoi. Le montant bloqué au départ ne suppose aucune économie de cache ; la régularisation rembourse ensuite la différence d’après l’usage mesuré.
Cas d’utilisation
Faire examiner une capture plutôt que la décrire
Envoyez la capture en detail high à côté de la question dans un seul message utilisateur et le modèle travaille sur les pixels : l’étiquette d’axe fausse, la ligne disparue, l’image coupée au bord. Deux captures prises à une heure d’intervalle dans le même tour vous laissent demander quel chiffre a bougé, au lieu d’interroger un résumé tapé à la main.
Écrire l’équivalent d’un livre en un seul appel
Poussez max_tokens vers 450 000 et le guide de migration, le long rapport ou tout un jeu de tests revient en une réponse plutôt qu’en une chaîne de reprises dont chacune perd un peu du fil. Avec stream: true, le texte arrive pendant qu’il s’écrit.
Garder une boucle d’outils lisible
Déclarez jusqu’à 128 définitions de fonctions, associez-les à tool_choice et renvoyez chaque résultat au tour suivant dans un message de rôle tool. Fixez reasoning_effort pour toute la boucle et la seule chose qui varie d’une itération à l’autre est la conversation, ce qui rend la trace lisible le jour où la boucle déraille.
Remettre la réponse au code, pas à une personne
Demandez un objet JSON via response_format et ramenez temperature à 0 : la réponse revient sous une forme que votre parseur prend telle quelle. Associez cela à un bloc image et vous obtenez une extraction directe depuis un reçu, un graphique ou la capture d’un formulaire, sans étape de recopie intermédiaire.
Guide de prompt et conseils pratiques
Mettre l’image là où se trouve la question
Gardez le bloc text et les blocs image_url dans le même message utilisateur au lieu d’envoyer l’image d’abord et la question ensuite. Dites ce qu’il faut en tirer, un chiffre, un écart ou un verdict, et nommez le panneau quand il y en a plusieurs : detail high achète de la résolution, pas de l’attention.
POST https://api.spicyapi.ai/v1/chat/completions
{
"model": "xai/grok-4.6",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "These two captures are an hour apart on the same dashboard. Which metric regressed, and what in the second image explains it?"},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/c681580c3c6a0b63.jpeg", "detail": "high"}},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/59f0bc6291069978.jpeg", "detail": "high"}}
]
}
],
"reasoning_effort": "high",
"max_tokens": 4000
}
Dépenser l’effort là où il change la réponse
reasoning_effort vaut high par défaut : un champ omis vous fait donc déjà payer un réglage prudent et les tokens de sortie qui vont avec. Gardez xhigh pour ce qui doit être juste du premier coup, prenez medium pour une relecture ordinaire et low pour les tours courts et mécaniques. L’effort est facturé comme de la sortie et partage donc son plafond avec la réponse elle-même ; un plafond généreux en xhigh fait une grande requête dans les deux sens.
Vérifier le palier avant d’envoyer
L’entrée et l’entrée en cache s’additionnent, et à partir de 200 000 tokens la requête entière est facturée au tarif long contexte, pas seulement la part au-dessus du seuil. Ramener un historique de 210 000 tokens à 190 000 change donc davantage que le prix des tokens retirés. Le montant bloqué avant l’appel ne suppose aucune économie de cache, et la régularisation rembourse l’écart d’après la consommation mesurée : le chiffre affiché en amont est un plafond, pas un prix.
Démarrage rapide de l’API
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "xai/grok-4.6/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
La référence API détaille l’authentification, le schéma complet, le polling et la gestion des erreurs.










