Einführung
Ein OpenAI-kompatibler Chat-Endpunkt für Grok 4.6 von xAI, bei dem ein Screenshot und die Frage dazu im selben Zug ankommen.
Grok 4.6 stammt von xAI und antwortet unter POST https://api.spicyapi.ai/v1/chat/completions auf den Modellnamen xai/grok-4.6. Die Anfrage hat die vertraute Form: ein messages-Array mit höchstens 256 geordneten Zügen, eine Ausgabegrenze, zwei Sampling-Regler, eine Werkzeugliste, ein Antwortformat und reasoning_effort, mit dem Sie festlegen, wie gründlich das Modell arbeitet, bevor es schreibt. Das Fenster fasst 500.000 Token und eine einzelne Antwort darf 450.000 davon belegen, sodass der größere Teil des Budgets auf der Antwortseite liegt und nicht auf der Promptseite. Als Inhalt nimmt eine Nachricht text- und image_url-Teile; Datei- oder PDF-Teile gibt es an diesem Endpunkt nicht, die Modalität ist Text und Bild hinein, Text heraus.
Wichtige Funktionen und Highlights
Ein Bild und der Satz dazu, in einem Zug
Der Inhalt darf eine einfache Zeichenkette oder ein Array aus Teilen sein, und ein Bildteil trägt eine url sowie einen detail-Hinweis von auto, low oder high. Die Aufnahme und die Frage dazu treffen gemeinsam ein, also liest das Modell die Pixel statt Ihrer Beschreibung davon, und genau darauf kommt es an, wenn die Antwort an einer falsch beschrifteten Achse hängt, an einem am Rand abgeschnittenen Stacktrace oder an einem Layout, das nur bei einer Breite bricht. Bildinhalt wird innerhalb des Fensters von 500.000 Token gezählt und nicht daneben, sodass mehrere große Aufnahmen und ein langer Verlauf um dasselbe Budget konkurrieren.
Fast das gesamte Budget darf in die Antwort gehen
Eine einzelne Antwort reicht bis 450.000 Token, was für ein Chatmodell eine ungewöhnliche Form ist: Der größte Teil des Fensters lässt sich zum Schreiben statt zum Lesen ausgeben. max_tokens steht weiterhin auf 4.096; eine lange Generierung fordern Sie also ausdrücklich an und geraten nicht zufällig hinein, und wird an der Vorgabe abgeschnitten, kommt keine Warnung. reasoning_effort lässt sich auf low, medium, high oder xhigh stellen und steht standardmäßig auf high; der Denkaufwand wird als Ausgabe abgerechnet und belastet damit zugleich Ihre Grenze und Ihre Rechnung.
Auf dem Weg steht nichts von uns
Zwischen Ihnen und diesem Modell sitzt kein Inhaltsklassifikator von uns. Was es nicht schreiben will, ist sein eigenes Verhalten und keine hier eingezogene Schicht, und was Sie senden, wird unterwegs weder geprüft noch bewertet noch umgeschrieben. Die Rechte an dem Material, das Sie senden, liegen bei Ihnen, und Sie stehen dafür ein, was mit der Antwort geschieht.
Request-Parameter
| Parameter | Pflicht | Beschreibung |
|---|---|---|
messages | Ja | Höchstens 256 Züge. Der Inhalt darf Text- und image_url-Teile in einer Nutzernachricht mischen. mindestens 1 Einträge · höchstens 256 Einträge |
reasoning_effort | Nein | low, medium, high oder xhigh; Vorgabe ist high. Der Denkaufwand wird als Ausgabe abgerechnet. |
max_tokens | Nein | Begrenzt die sichtbare Antwort auf 450.000 Token; die Vorgabe von 4.096 schneidet lange Antworten stillschweigend ab. |
temperature | Nein | 0 bis 2, Vorgabe 0,7. Nehmen Sie 0, wenn Sie zwei Entwürfe oder zwei Läufe vergleichen. |
top_p | Nein | 0,01 bis 1. Ändern Sie entweder diesen Wert oder temperature, nicht beide. |
tools | Nein | Bis zu 128 Funktionsdefinitionen pro Anfrage. höchstens 128 Einträge |
parallel_tool_calls | Nein | true oder false, Standard true: Das Modell darf in einem Zug mehrere Tool-Aufrufe anfordern. Standardwert: |
tool_choice | Nein | auto, none, required – oder ein Objekt, das die aufzurufende Funktion benennt. |
response_format | Nein | Verlangen Sie ein JSON-Objekt, wenn die Antwort von Code gelesen wird und nicht von einem Menschen. |
Preis
Eingabe $2 / Ausgabe $6 je 1 Mio. Token; Prompts ab 200K Token: Eingabe $4 / Ausgabe $12
Die gesamte Eingabe umfasst auch gecachte Token. Ab 200.000 Eingabe-Token gelten die Langkontexttarife für die gesamte Eingabe, gecachte Eingabe und Ausgabe der Anfrage; darunter gelten die Standardtarife. Die Ausgabe enthält Reasoning-Token. Prüfen Sie das Budget vor dem Absenden. Die anfängliche Reservierung geht von keiner Cache-Ersparnis aus; bei der Abrechnung wird die Differenz zur gemessenen Nutzung freigegeben.
Anwendungsfälle
Eine Aufnahme prüfen lassen, statt sie zu beschreiben
Schicken Sie den Screenshot mit detail high neben der Frage in einer einzigen Nutzernachricht, dann arbeitet das Modell an den Pixeln: an der falschen Achsenbeschriftung, an der verschwundenen Zeile, an dem am Rand abgeschnittenen Frame. Zwei Aufnahmen im Abstand einer Stunde im selben Zug lassen Sie fragen, welche Zahl sich bewegt hat, statt nach einer von Hand getippten Zusammenfassung.
Etwas in Buchlänge in einem Aufruf schreiben
Ziehen Sie max_tokens Richtung 450.000, und der Migrationsleitfaden, der lange Bericht oder die ganze Testsuite kommt als eine Antwort zurück statt als Kette von Fortsetzungen, von denen jede ein Stück des Fadens verliert. Mit stream: true trifft der Text ein, während er noch geschrieben wird.
Eine Werkzeugschleife lesbar halten
Deklarieren Sie bis zu 128 Funktionsdefinitionen, paaren Sie sie mit tool_choice und geben Sie jedes Ergebnis im folgenden Zug als Nachricht mit der Rolle tool zurück. Halten Sie reasoning_effort über die ganze Schleife konstant, dann ändert sich zwischen den Durchläufen nur das Gespräch, und erst das macht eine Spur lesenswert, wenn die Schleife entgleist.
Die Antwort an Code übergeben, nicht an einen Menschen
Fordern Sie über response_format ein JSON-Objekt an und senken Sie temperature auf 0, dann kommt die Antwort als Struktur zurück, die Ihr Parser direkt nimmt. In Kombination mit einem Bildteil ergibt das eine Auswertung direkt aus einem Beleg, einem Diagramm oder der Aufnahme eines Formulars, ohne einen Abschreibschritt dazwischen.
Prompt-Leitfaden und Praxistipps
Das Bild dorthin legen, wo die Frage steht
Halten Sie den text-Teil und die image_url-Teile in derselben Nutzernachricht, statt erst das Bild und danach die Frage zu senden. Sagen Sie, was daraus gelesen werden soll, ob eine Zahl, ein Unterschied oder ein Urteil, und benennen Sie das Panel, wenn es mehrere gibt: detail high kauft Auflösung, keine Aufmerksamkeit.
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
}
Den Aufwand dort ausgeben, wo er die Antwort ändert
reasoning_effort steht standardmäßig auf high; wer das Feld weglässt, bezahlt also bereits die gründlichere Einstellung und die Ausgabe-Token, die dazugehören. Heben Sie sich xhigh für Arbeit auf, die beim ersten Mal stimmen muss, nehmen Sie medium für die gewöhnliche Durchsicht und low für kurze mechanische Züge. Der Denkaufwand wird als Ausgabe abgerechnet und teilt sich die Obergrenze mit der Antwort selbst; eine großzügige Grenze auf xhigh ist in beiderlei Hinsicht eine große Anfrage.
Vor dem Absenden den Tarif prüfen
Eingabe und gecachte Eingabe werden zusammengezählt, und ab 200.000 Token wird die gesamte Anfrage zum Langkontexttarif abgerechnet, nicht nur der Teil oberhalb der Grenze. Einen Verlauf von 210.000 auf 190.000 Token zu kürzen, ändert deshalb mehr als die Kosten der entfernten Token. Die vor dem Aufruf reservierte Summe nimmt überhaupt keine Cache-Ersparnis an, und die Abrechnung erstattet die Differenz zum gemessenen Verbrauch; die Zahl vorab ist also eine Obergrenze und kein Preis.
API-Schnellstart
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'
Authentifizierung, vollständiges Schema, Polling und Fehlerbehandlung stehen in der API-Referenz.










