Wprowadzenie
Zgodny z OpenAI endpoint czatu dla Grok 4.6 od xAI, w którym zrzut ekranu i pytanie o niego trafiają do tej samej tury.
Grok 4.6 pochodzi od xAI i odpowiada pod POST https://api.spicyapi.ai/v1/chat/completions na nazwę modelu xai/grok-4.6. Żądanie ma znajomy kształt: tablica messages z najwyżej 256 uporządkowanymi turami, limit wyjścia, dwa pokrętła próbkowania, lista narzędzi, format odpowiedzi oraz reasoning_effort, czyli to, jak długo model pracuje, zanim zacznie pisać. Okno mieści 500 000 tokenów, a pojedyncza odpowiedź może zabrać 450 000 z nich, więc większa część budżetu leży po stronie odpowiedzi, a nie po stronie promptu. Treść przyjmuje części text i image_url; na tym endpoincie nie ma części z plikiem ani z PDF-em, a modalność to tekst i obrazy na wejściu, tekst na wyjściu.
Najważniejsze funkcje
Obraz i zdanie o nim w jednej turze
Treść może być zwykłym łańcuchem znaków albo tablicą części, a część obrazowa niesie url i podpowiedź detail o wartości auto, low albo high. Zrzut i pytanie o niego docierają razem, więc model czyta piksele, a nie twój opis pikseli — i na tym polega cała różnica, gdy odpowiedź wisi na źle podpisanej osi, na urwanym przy krawędzi stosie wywołań albo na układzie, który psuje się tylko przy jednej szerokości. Treść obrazów liczy się wewnątrz okna 500 000 tokenów, a nie obok niego, więc kilka dużych zrzutów i długa historia rozmowy biją się o ten sam budżet.
Prawie cały budżet może pójść w odpowiedź
Pojedyncza odpowiedź sięga 450 000 tokenów, co jest nietypowym kształtem dla modelu czatowego: większość okna da się wydać na pisanie, a nie na czytanie. max_tokens nadal domyślnie wynosi 4 096, więc o długą generację prosisz świadomie i nie wpadasz w nią przypadkiem, a ucięcie na wartości domyślnej przychodzi bez ostrzeżenia. reasoning_effort przyjmuje wartości low, medium, high albo xhigh i domyślnie wynosi high; za wysiłek rozumowania płaci się tokenami wyjścia, więc zjada naraz twój limit i twój rachunek.
Na drodze nie stoi nic naszego
Między tobą a tym modelem nie stawiamy własnego klasyfikatora treści. To, czego model odmawia napisać, jest jego własnym zachowaniem, a nie warstwą wstawioną tutaj, a to, co wysyłasz, nie jest po drodze prześwietlane, oceniane ani przepisywane. Prawa do wysyłanego materiału zostają przy tobie i to ty odpowiadasz za to, jak zostanie użyta odpowiedź.
Parametry żądania
| Parametr | Wymagane | Uwaga |
|---|---|---|
messages | Tak | Najwyżej 256 tur. Treść może mieszać części text i |
reasoning_effort | Nie | low, medium, high albo xhigh; domyślnie high. Wysiłek rozumowania rozlicza się jako wyjście. |
max_tokens | Nie | Ogranicza widoczną odpowiedź do 450 000 tokenów; domyślne 4 096 po cichu ucina długą odpowiedź. |
temperature | Nie | Od 0 do 2, domyślnie 0,7. Ustaw 0, gdy porównujesz dwie makiety albo dwa przebiegi. |
top_p | Nie | Od 0,01 do 1. Ruszaj ten parametr albo temperature, a nie oba naraz. |
tools | Nie | Do 128 definicji funkcji na żądanie. do 128 elementów |
parallel_tool_calls | Nie | true lub false, domyślnie true: model może w jednej turze zażądać kilku wywołań narzędzi. Domyślnie: |
tool_choice | Nie | auto, none, required albo obiekt wskazujący funkcję do wywołania. |
response_format | Nie | Poproś o obiekt JSON, gdy odpowiedź będzie przetwarzana przez kod, a nie czytana przez człowieka. |
Cennik
Wejście $2 / Wyjście $6 za 1 mln tokenów; Prompty od 200K tokenów wzwyż: Wejście $4 / Wyjście $12
Łączne wejście obejmuje tokeny z pamięci podręcznej. Od 200 000 tokenów wejścia stawki długiego kontekstu dotyczą całego wejścia, wejścia z pamięci podręcznej i wyjścia żądania; przy mniejszym wejściu obowiązują stawki standardowe. Wyjście zawiera tokeny rozumowania. Sprawdź budżet żądania przed wysłaniem. Wstępna rezerwacja nie zakłada oszczędności z pamięci podręcznej, a po rozliczeniu według zmierzonego zużycia nadwyżka zostaje zwrócona.
Zastosowania
Daj zrzut do obejrzenia, zamiast go opisywać
Wyślij zrzut z detail high obok pytania w jednej wiadomości użytkownika, a model pracuje na pikselach: na błędnym podpisie osi, na zniknionym wierszu, na kadrze urwanym przy krawędzi. Dwa zrzuty w odstępie godziny w tej samej turze pozwalają zapytać, która liczba się ruszyła, zamiast pytać o streszczenie wystukane ręcznie.
Napisz rzecz długości książki w jednym wywołaniu
Podnieś max_tokens w stronę 450 000, a przewodnik migracyjny, długi raport albo cały zestaw testów wraca jedną odpowiedzią zamiast łańcuchem kontynuacji, z których każda gubi kawałek wątku. Z stream: true tekst dociera, kiedy jeszcze powstaje.
Utrzymaj czytelną pętlę narzędziową
Zadeklaruj do 128 definicji funkcji, zestaw je z tool_choice i oddawaj każdy wynik w następnej turze jako wiadomość o roli tool. Ustal reasoning_effort na całą pętlę, a między iteracjami zmienia się tylko rozmowa — i właśnie to sprawia, że ślad warto czytać, kiedy pętla schodzi na manowce.
Oddaj odpowiedź kodowi, a nie człowiekowi
Poproś o obiekt JSON przez response_format i zejdź z temperature do 0, a odpowiedź wróci jako struktura, którą twój parser bierze wprost. Dołóż do tego część obrazową i masz ekstrakcję prosto z paragonu, wykresu albo zrzutu formularza, bez kroku przepisywania po drodze.
Wskazówki
Połóż obraz tam, gdzie stoi pytanie
Trzymaj część text i części image_url w tej samej wiadomości użytkownika, zamiast wysyłać najpierw obraz, a potem pytanie. Powiedz, co ma zostać z niego odczytane: liczba, różnica czy werdykt, i nazwij panel, gdy jest ich więcej niż jeden. Wartość high w detail kupuje rozdzielczość, a nie uwagę.
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
}
Wydawaj wysiłek tam, gdzie zmienia odpowiedź
reasoning_effort domyślnie wynosi high, więc pominięte pole oznacza już ostrożniejsze ustawienie i idące z nim tokeny wyjścia. Zostaw xhigh na pracę, która musi być dobra za pierwszym razem, bierz medium do zwykłego przeglądu, a schodź do low przy krótkich, mechanicznych turach. Wysiłek rozliczany jest jako wyjście i dzieli limit z samą odpowiedzią, więc hojny limit przy xhigh to duże żądanie w obu znaczeniach.
Sprawdź, w który próg trafia żądanie
Wejście i wejście z pamięci podręcznej sumują się, a od 200 000 tokenów według stawki długiego kontekstu rozliczane jest całe żądanie, a nie tylko część powyżej granicy. Skrócenie historii z 210 000 tokenów do 190 000 zmienia więc więcej niż koszt usuniętych tokenów. Rezerwacja pobrana przed wywołaniem nie zakłada żadnych oszczędności z pamięci podręcznej, a rozliczenie zwraca różnicę wobec zmierzonego zużycia: liczba, którą widzisz z góry, to sufit, a nie cena.
Szybki start z 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'
Uwierzytelnianie, pełny schemat, odpytywanie i obsługę błędów opisuje dokumentacja API.










