Introdução
Um endpoint de chat compatível com OpenAI para o Grok 4.6 da xAI, em que uma captura de tela e a pergunta sobre ela chegam no mesmo turno.
O Grok 4.6 vem da xAI e responde em POST https://api.spicyapi.ai/v1/chat/completions sob o nome de modelo xai/grok-4.6. A requisição tem o formato conhecido: um array messages com no máximo 256 turnos ordenados, um teto de saída, dois botões de amostragem, uma lista de ferramentas, um formato de resposta e reasoning_effort para dizer o quanto o modelo trabalha antes de escrever. A janela guarda 500.000 tokens e uma única resposta pode levar 450.000 deles, de modo que a maior parte do orçamento fica do lado da resposta e não do lado do prompt. O conteúdo aceita partes text e image_url; neste endpoint não existe parte de arquivo nem de PDF, e a modalidade é texto e imagens na entrada, texto na saída.
Recursos e destaques
Uma imagem e a frase sobre ela, no mesmo turno
O conteúdo pode ser uma string simples ou um array de partes, e uma parte de imagem carrega uma url mais uma dica detail de auto, low ou high. A captura e a pergunta chegam juntas, então o modelo lê os pixels em vez da sua descrição deles, e é justamente aí que está a diferença quando a resposta depende de um eixo com rótulo errado, de um rastro de chamadas cortado na borda ou de um layout que só quebra em uma largura. O conteúdo das imagens é contabilizado dentro da janela de 500.000 tokens e não ao lado dela, então várias capturas grandes e um histórico longo disputam o mesmo orçamento.
Quase todo o orçamento pode ir para a resposta
Uma única resposta chega a 450.000 tokens, um formato incomum para um modelo de chat: a maior parte da janela pode ser gasta escrevendo em vez de lendo. max_tokens continua em 4.096 por padrão, então uma geração longa é algo que você pede, não algo em que você cai por acaso, e um corte no padrão chega sem aviso. reasoning_effort aceita low, medium, high ou xhigh e parte de high; o esforço é cobrado como tokens de saída, então pesa ao mesmo tempo no seu teto e na sua fatura.
No caminho não há nada nosso
Não colocamos nenhum classificador de conteúdo próprio entre você e este modelo. O que ele se recusa a escrever é comportamento dele, não uma camada inserida aqui, e o que você envia não é vasculhado, pontuado nem reescrito no trajeto. Os direitos sobre o material que você envia são seus, e você responde pelo uso que se faz da resposta.
Parâmetros da requisição
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
messages | Sim | No máximo 256 turnos. O conteúdo pode misturar partes de texto e |
reasoning_effort | Não | low, medium, high ou xhigh; o padrão é high. O esforço é cobrado como saída. |
max_tokens | Não | Limita a resposta visível a 450.000; o padrão de 4.096 trunca uma resposta longa em silêncio. |
temperature | Não | De 0 a 2, padrão 0,7. Use 0 ao comparar dois mockups ou duas execuções. |
top_p | Não | De 0,01 a 1. Mexa neste ou em temperature, não nos dois juntos. |
tools | Não | Até 128 definições de função por requisição. no máximo 128 itens |
parallel_tool_calls | Não | true ou false, padrão true: o modelo pode pedir várias chamadas de ferramenta no mesmo turno. Valor padrão: |
tool_choice | Não | auto, none, required ou um objeto nomeando a função a chamar. |
response_format | Não | Peça um objeto JSON quando a resposta for lida por código, e não por uma pessoa. |
Preços
Entrada $2 / Saída $6 por 1 milhão de tokens; Prompts com 200K tokens ou mais: Entrada $4 / Saída $12
A entrada total inclui os tokens em cache. A partir de 200.000 tokens de entrada, as tarifas de contexto longo se aplicam a toda a entrada, à entrada em cache e à saída da requisição; abaixo disso valem as tarifas padrão. A saída inclui tokens de raciocínio. Confira o orçamento antes do envio. A reserva inicial não considera economia de cache; na liquidação, a diferença é devolvida conforme o uso medido.
Casos de uso
Triar uma captura em vez de descrevê-la
Mande a captura em detail high ao lado da pergunta em uma única mensagem de usuário e o modelo trabalha em cima dos pixels: o rótulo de eixo errado, a linha que sumiu, o quadro cortado na borda. Duas capturas com uma hora de diferença no mesmo turno deixam você perguntar qual número se mexeu, em vez de perguntar sobre um resumo digitado à mão.
Escrever algo do tamanho de um livro em uma chamada
Puxe max_tokens na direção de 450.000 e o guia de migração, o relatório longo ou a bateria inteira de testes volta como uma resposta em vez de uma corrente de continuações, cada uma perdendo um pouco do fio. Com stream: true o texto chega enquanto ainda está sendo escrito.
Manter legível um loop de ferramentas
Declare até 128 definições de função, combine-as com tool_choice e devolva cada resultado no turno seguinte como uma mensagem de papel tool. Deixe reasoning_effort fixo no loop inteiro e a única coisa que muda entre as iterações é a conversa, que é o que faz valer a leitura do rastro quando o loop sai do trilho.
Entregar a resposta ao código, não a uma pessoa
Peça um objeto JSON com response_format e baixe temperature para 0, e a resposta volta como uma estrutura que o seu parser pega direto. Junte isso a uma parte de imagem e você tem extração direto de um comprovante, de um gráfico ou da captura de um formulário, sem uma etapa de transcrição no meio.
Guia de prompt e dicas práticas
Coloque a imagem onde está a pergunta
Mantenha a parte text e as partes image_url dentro da mesma mensagem de usuário em vez de mandar primeiro a imagem e depois a pergunta. Diga o que quer que seja lido dali, se um número, uma diferença ou um veredito, e nomeie o painel quando houver mais de um: detail high compra resolução, não atenção.
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
}
Gaste o esforço onde ele muda a resposta
reasoning_effort parte de high, então um campo omitido já paga por um ajuste mais cauteloso e pelos tokens de saída que vêm com ele. Guarde xhigh para o trabalho que precisa sair certo de primeira, use medium para a revisão comum e desça para low nos turnos curtos e mecânicos. O esforço é cobrado como saída e divide o teto com a própria resposta, então um teto generoso em xhigh é uma requisição grande nos dois sentidos.
Veja em que faixa a requisição cai
Entrada e entrada em cache são somadas, e a partir de 200.000 tokens a requisição inteira é cobrada na tarifa de contexto longo, não apenas a parte acima da linha. Cortar um histórico de 210.000 tokens para 190.000 muda, portanto, mais do que o custo dos tokens que você tirou. A reserva feita antes da chamada não supõe nenhuma economia de cache e a liquidação devolve a diferença conforme o uso medido, então o número que você vê no começo é um teto e não o preço.
Início rápido da 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'
Consulte a referência da API para autenticação, esquema completo, polling e tratamento de erros.










