Por recurso

Chat

Escolha um modelo, copie a requisição e leia a resposta. Todos os modelos de chat usam a mesma requisição no estilo OpenAI.

#1. Escolha um modelo

gpt-5.6-luna$0.20 entrada · $1.20 saída / 1MLimites e status

5 modelos online para isto. Trocar de modelo altera o código abaixo.

#2. Copie a requisição

Substitua YOUR_API_KEY pela sua chave e execute. As opções mostradas são as que este modelo aceita.

POSThttps://www.aisplice.store/v1/chat/completionsBearer API keyRetorno direto
API_KEY="${API_KEY:-YOUR_API_KEY}"

curl --fail-with-body -sS https://www.aisplice.store/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "GPT-5.6 Luna",
  "messages": [
    {
      "role": "user",
      "content": "Say hello."
    }
  ],
  "stream": false
}'

Todos os parâmetros

Todos os campos que este modelo aceita, com os valores permitidos.

model
stringobrigatório

Identificador exato do modelo para esta requisição.

messages
arrayopcional

Required on /v1/chat/completions.

input
string|arrayopcional

Required on /v1/responses.

Ciclo de vida da resposta

Exemplo de resposta bem-sucedida deste endpoint.

Resposta
{
  "id": "chatcmpl_xxx",
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Hello!"
      }
    }
  ]
}

Todos os campos: /v1/chat/completions na referência da API →

#3. Obtenha o resultado

Uma resposta 200 traz o texto em choices[0].message.content. Adicione "stream": true para recebê-lo enquanto é escrito.

#Quando algo dá errado

  • 400 com o nome de um campo: essa opção não é aceita por este modelo; use os valores listados na etapa 2.
  • 402: o saldo não cobre esta requisição; recarregue em Carteira e tente novamente.
  • 429: diminua o ritmo e tente novamente após os segundos de Retry-After.
  • 503 model_not_found: o nome do modelo está errado ou o modelo está offline; escolha um na etapa 1.

Consultar qualquer outro erro →

StreamingMostre a resposta enquanto ela é escrita.

#Como funciona

Defina stream:true e o gateway repassa os Server-Sent Events exatamente como a OpenAI os emite: um frame data: por delta, encerrado por data: [DONE]. Qualquer cliente SSE ou os SDKs oficiais os consomem sem alteração.

#Executar

terminal — live
curl -N https://www.aisplice.store/v1/chat/completions \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-luna",
    "stream": true,
    "messages": [
      {
        "role": "user",
        "content": "Write a haiku about the sea."
      }
    ]
  }'
streaming.py
from openai import OpenAI

client = OpenAI(base_url="https://www.aisplice.store/v1", api_key="sk-YOUR_KEY")

stream = client.chat.completions.create(
    model="gpt-5.6-luna",
    stream=True,
    messages=[{"role": "user", "content": "Write a haiku about the sea."}],
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

#Cobrança parcial

Pague só pelo que foi transmitido

Se um cliente se desconectar no meio do stream, o gateway registra o uso parcial que de fato foi transmitido — você só paga pelo que foi entregue.
Chamada de ferramentasDeixe o modelo chamar as suas próprias funções.

#Declarar ferramentas

Envie o array tools padrão da OpenAI. O gateway o repassa a todo modelo com suporte a ferramentas — OpenAI, Claude, Gemini, DeepSeek — e normaliza a resposta de volta em tool_calls. Deltas de chamadas de ferramentas em streaming são suportados.

tools.sh
curl https://www.aisplice.store/v1/chat/completions \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-luna",
    "messages": [{"role":"user","content":"Weather in Tokyo?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "parameters": {
          "type": "object",
          "properties": {"city": {"type": "string"}},
          "required": ["city"]
        }
      }
    }]
  }'

#Tratar tool_calls

Quando o modelo decide chamar uma ferramenta, a escolha chega com finish_reason:"tool_calls" e uma string arguments que o seu código interpreta e executa.

response.json
{
  "choices": [{
    "finish_reason": "tool_calls",
    "message": {
      "role": "assistant",
      "tool_calls": [{
        "id": "call_abc123",
        "type": "function",
        "function": {
          "name": "get_weather",
          "arguments": "{\"city\": \"Tokyo\"}"
        }
      }]
    }
  }]
}

#Devolver os resultados

Adicione o turno do assistente e uma mensagem role:"tool" por chamada (associada por tool_call_id) e faça a requisição de novo — o modelo incorpora o resultado na resposta final.

round-trip.sh
curl https://www.aisplice.store/v1/chat/completions \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-luna",
    "messages": [
      {"role":"user","content":"Weather in Tokyo?"},
      {"role":"assistant","tool_calls":[{"id":"call_abc123","type":"function",
        "function":{"name":"get_weather","arguments":"{\"city\":\"Tokyo\"}"}}]},
      {"role":"tool","tool_call_id":"call_abc123","content":"{\"temp_c\": 22, \"sky\": \"clear\"}"}
    ]
  }'
Entrada de imagemEnvie imagens junto com o texto.

#Enviar uma imagem

Modelos de chat com visão recebem um array content que mistura partes de texto e partes image_url. Use uma URL pública ou uma data URL base64 inline — o campo é o mesmo nos dois casos.

vision.sh
curl https://www.aisplice.store/v1/chat/completions \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-luna",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "What is in this image?"},
        {"type": "image_url", "image_url": {"url": "https://example.com/cat.png"}}
      ]
    }]
  }'

#Imagens em Base64

Para arquivos locais, use uma data URL inline: "url": "data:image/png;base64,<bytes>". Os tokens de imagem são cobrados como tokens de entrada; o tamanho máximo e a quantidade de imagens por requisição dependem do provedor — reduza a resolução antes de enviar para economizar.

base64.py
import base64
from openai import OpenAI

client = OpenAI(base_url="https://www.aisplice.store/v1", api_key="sk-YOUR_KEY")
b64 = base64.b64encode(open("photo.png", "rb").read()).decode()

resp = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "Describe this photo."},
        {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
    ]}],
)
print(resp.choices[0].message.content)

Ainda com problemas?

Envie para nós o ID da requisição ou a mensagem de erro e vamos investigar.