Source: https://ailoot.ai/models/pt-pt/gpt-6-sol/
Canonical: https://ailoot.ai/models/pt-pt/gpt-6-sol/
Language: pt-pt

# OpenAI: GPT-6 Sol

[Markdown](https://ailoot.ai/models/pt-pt/gpt-6-sol/index.md) · [JSON](https://ailoot.ai/models/pt-pt/gpt-6-sol/facts.json)

## [OpenAI: GPT-6 Sol](https://ailoot.ai/models/pt-pt/gpt-6-sol/)

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-0)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-1)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-2)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-3)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-4)
- [**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-5)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-6)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-7)
- [**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/gpt-6-sol/#method-8)

Sobre o modelo

Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.

#### Programação com continuidade do trabalho

O GPT-6 Sol é um modelo da OpenAI para programação complexa e tarefas com várias etapas e ferramentas. Recebe texto e imagens e devolve texto. O modelo foi concebido para trabalhos em que uma resposta pode dar origem a uma ação, e o resultado dessa ação, a um novo passo da resolução.

As suas capacidades incluem transmissão em fluxo, saída estruturada e chamadas de funções. Isto permite escolher o formato necessário para o resultado: uma explicação, um texto preparado ou dados com uma estrutura previamente definida. Quando a tarefa exige uma ação externa, o modelo utiliza o conjunto de ferramentas disponibilizado.

#### Raciocínio e formato escolhido

Podem definir-se `none`, `low`, `medium`, `high`, `xhigh` e `max`; o valor predefinido é `medium`. O valor `none` significa processamento sem raciocínio. Os restantes níveis definem o esforço de resolução, enquanto a extensão e o estilo da resposta final são determinados separadamente.

Independentemente do esforço de raciocínio, o fabricante prevê modos de execução normal e alargado. O modo normal é o predefinido. O alargado realiza trabalho adicional numa tarefa difícil e pode exigir mais tempo e tokens. O modo define a forma de processamento, e o nível de esforço, a profundidade da análise dentro desse modo. A escolha está prevista para `Responses` e exige o suporte correspondente da aplicação; a sua disponibilidade no método Ailoot atual não está confirmada separadamente.

O formato `Responses` destina-se ao raciocínio com ferramentas. No formato `Chat Completions`, as chamadas de funções só são suportadas com `none`. Esta é uma característica relevante deste modelo: a escolha do formato e do modo determina se é possível combinar raciocínio e ações no mesmo processo.

#### Materiais e limites de volume

A janela de contexto do fabricante é de 1 050 000 tokens. O máximo de entrada é 922 000, e o máximo de saída é 128 000 tokens. A data de corte do conhecimento é 20 de abril de 2026. As imagens fazem parte dos materiais de entrada; o resultado direto do Sol continua a ser textual.

Num pedido extenso, é necessário considerar tanto os materiais de origem como o histórico. O raciocínio interno também ocupa o orçamento de saída, pelo que o limite máximo de saída não deve ser entendido como a promessa de um texto visível igualmente longo. O suporte de contexto alargado ajuda a manter os materiais da tarefa no mesmo espaço de trabalho.

#### Código, pesquisa e funções ligadas

A OpenAI enumera pesquisa na Internet e em ficheiros, execução de código e comandos, alteração de ficheiros, ações no computador e procura de ferramentas. O modelo pode utilizar estas funções para trabalhar sequencialmente num projeto e considerar os seus resultados ao preparar o passo seguinte.

Quando existe a ligação correspondente, o fabricante prevê também uma ferramenta separada de geração de imagens, trabalho com competências e ferramentas externas através de MCP. A resposta direta do modelo continua a ser textual; o resultado da geração de uma imagem é criado por uma ferramenta separada. A disponibilidade destas capacidades no fabricante não significa que estejam ligadas em qualquer método Ailoot.

No caso de funções definidas pelo utilizador, a aplicação recebe a ação escolhida e os argumentos, executa-a e transmite o resultado ao modelo. O suporte deste intercâmbio não significa que qualquer ferramenta já esteja ligada. O conjunto de funções de um pedido concreto depende do método escolhido e das capacidades disponibilizadas.

As partes repetidas do início do pedido suportam cache. A saída estruturada define o formato dos dados segundo um esquema JSON; respeitar esse formato não substitui a verificação do conteúdo. Em tarefas prolongadas, estão previstas formas de preservar o estado útil e reduzir o contexto acumulado.

Tarefa prática

### Tarefa prática

Exemplo técnico em inglês

```
Patch a pagination termination bug

A paginator requests pages with a cursor. Its loop stops only when items is empty, but the service can return a nonempty final page with next_cursor absent. Draft corrected pseudocode preserving every returned item exactly once. Include checks for an empty first page, a full final page without a cursor and two pages with distinct cursors.
```

#### Resultado esperado

```
Corrected pagination pseudocode and three behavior checks against the stated response cases.
```

#### Verificar o resultado

```
The loop processes the final nonempty page before stopping on its absent next cursor.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-6-sol`

[`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=messages)

OpenAI /`gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto · Imagens

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · Anthropic Messages** `POST /v1/messages`

Entrada

`text`, `image`

Saída

`text`

Contexto

1 050 000 tokens

Saída máxima

128 000 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites gpt-6-sol | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_block[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`system` | Tipo`string\|content_block[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObrigatório | Valores e limites Mínimo: 1 O limite aplica-se a: Limite exato do modelo ou da ficha selecionados | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop_sequences` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].name` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Ferramenta fornecida | Predefinição— |
| Campo`tools[].description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].input_schema` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.budget_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`output_config.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`metadata` | Tipo`object` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`cache_control` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content ou bloco type=text`

**Texto + imagem**

`{type:image,source:{type:base64,media_type,data}} ou origem type=url`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext, image |
| Parâmetro`required` | Contratomodel, messages, max\_tokens |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,002 US$ */ 1K*

Saída

0,01 US$ */ 1K*

Leitura da cache

0,0002 US$ */ 1K*

Escrita na cache

0,0025 US$ */ 1K*

Escrita na cache, 5 min

0,0025 US$ */ 1K tokens*

Multiplicador fast

×2

Multiplicador flex

×0.5

#### Preços por comprimento do pedido · Anthropic Messages

| Tamanho do pedido, em tokens | Entrada | Saída | Leitura da cache | Escrita na cache | Cache de 5 min | Cache de 1 hora |
| --- | --- | --- | --- | --- | --- | --- |
| Tamanho do pedido, em tokens(0; 272 000\] | Entrada0,002 US$ | Saída0,01 US$ | Leitura da cache0,0002 US$ | Escrita na cache0,0025 US$ | Cache de 5 min0,0025 US$ | Cache de 1 horaBase: — |
| Tamanho do pedido, em tokens(272 000; ∞) | Entrada0,004 US$ | Saída0,015 US$ | Leitura da cache0,0004 US$ | Escrita na cache0,005 US$ | Cache de 5 min0,005 US$ | Cache de 1 horaBase: — |

Tarifas em USD por 1K tokens. Se não estiver definida nenhuma tarifa, é herdada a tarifa base deste método; «—» significa que não está definida nenhuma tarifa base.

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · Anthropic Messages

Exemplo de textoEntrada, imagemPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-6-sol", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-6-sol", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="gpt-6-sol",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
```

```js
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "gpt-6-sol",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
```

```python
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='gpt-6-sol',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · Anthropic Messages

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=messages)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=messages), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=messages)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=messages), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=messages), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-6-sol`

[`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=responses)

OpenAI /`gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto · Imagens

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · OpenAI Responses** `POST /v1/responses`

Entrada

`text`, `image`

Saída

`text`

Contexto

1 050 000 tokens

Saída máxima

128 000 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites gpt-6-sol | Predefinição— |
| Campo`input` | Tipo`string\|input_item[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`input[].type` | Tipo`string` | RequisitoOpcional | Valores e limites message, reasoning, function\_call, function\_call\_output | Predefinição— |
| Campo`input[].content` | Tipo`string\|content_part[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`input[].call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: function\_call\_output; conserve o call\_id realmente devolvido | Predefinição— |
| Campo`input[].output` | Tipo`string\|content_part[]` | RequisitoOpcional | Valores e limites Aplica-se quando: function\_call\_output | Predefinição— |
| Campo`max_output_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning.summary` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`text.format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`text.verbosity` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`include` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`store` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`previous_response_id` | Tipo`string` | RequisitoOpcional | Valores e limites Requisito do ID: Só um ID de resposta real de uma continuação suportada Depende do modelo | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_key` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`Texto de entrada ou parte input_text`

**Texto + imagem**

`{type:input_image,image_url}`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext, image |
| Parâmetro`required` | Contratomodel, input |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,002 US$ */ 1K*

Saída

0,01 US$ */ 1K*

Leitura da cache

0,0002 US$ */ 1K*

Escrita na cache

0,0025 US$ */ 1K*

Escrita na cache, 5 min

0,0025 US$ */ 1K tokens*

Multiplicador fast

×2

Multiplicador flex

×0.5

#### Preços por comprimento do pedido · OpenAI Responses

| Tamanho do pedido, em tokens | Entrada | Saída | Leitura da cache | Escrita na cache | Cache de 5 min | Cache de 1 hora |
| --- | --- | --- | --- | --- | --- | --- |
| Tamanho do pedido, em tokens(0; 272 000\] | Entrada0,002 US$ | Saída0,01 US$ | Leitura da cache0,0002 US$ | Escrita na cache0,0025 US$ | Cache de 5 min0,0025 US$ | Cache de 1 horaBase: — |
| Tamanho do pedido, em tokens(272 000; ∞) | Entrada0,004 US$ | Saída0,015 US$ | Leitura da cache0,0004 US$ | Escrita na cache0,005 US$ | Cache de 5 min0,005 US$ | Cache de 1 horaBase: — |

Tarifas em USD por 1K tokens. Se não estiver definida nenhuma tarifa, é herdada a tarifa base deste método; «—» significa que não está definida nenhuma tarifa base.

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · OpenAI Responses

Exemplo de textoEntrada, imagemPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-6-sol", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-6-sol", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="gpt-6-sol", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "gpt-6-sol", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="gpt-6-sol", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · OpenAI Responses

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada elemento de saída e parte de conteúdo, o call\_id real da função, o raciocínio cifrado e os dados de utilização. Em streaming, mantenha a identidade completa dos eventos e elementos.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`status` | Tipostring |
| Campo`output[]` | Tipomessage\|reasoning\|function\_call\|other item |
| Campo`output[].content[]` | Tipocontent part |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=responses)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=responses), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=responses)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=responses), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=responses), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=responses)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-sol`

[`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=chat)

OpenAI /`gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto · Imagens

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

Entrada

`text`, `image`

Saída

`text`

Contexto

1 050 000 tokens

Saída máxima

128 000 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites gpt-6-sol | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites Exemplos: system, user, assistant, tool, function Condições: Estes papéis são representados explicitamente pelos tipos de compatibilidade do código-fonte; o conjunto exato de papéis continua específico do modelo. Depende do modelo | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_part[]\|null` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_calls` | Tipo`tool_call[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: role=tool; use o ID realmente devolvido | Predefinição— |
| Campo`messages[].name` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].reasoning_content` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Reintroduza o raciocínio realmente devolvido quando este modelo o utiliza | Predefinição— |
| Campo`messages[].reasoning_details` | Tipo`object\|array` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`max_completion_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`stream_options.include_usage` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop` | Tipo`string\|string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`function_tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].function.name` | Tipo`string` | RequisitoObrigatório | Valores e limites Aplica-se quando: Função fornecida como ferramenta | Predefinição— |
| Campo`tools[].function.description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].function.parameters` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`response_format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning_effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites Campo de compatibilidade | Predefinição— |
| Campo`functions` | Tipo`function[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`function_call` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content`

**Texto + imagem**

`{type:image_url,image_url:{url,detail}}`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext, image |
| Parâmetro`required` | Contratomodel, messages |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,002 US$ */ 1K*

Saída

0,01 US$ */ 1K*

Leitura da cache

0,0002 US$ */ 1K*

Escrita na cache

0,0025 US$ */ 1K*

Escrita na cache, 5 min

0,0025 US$ */ 1K tokens*

Multiplicador fast

×2

Multiplicador flex

×0.5

#### Preços por comprimento do pedido · OpenAI Chat

| Tamanho do pedido, em tokens | Entrada | Saída | Leitura da cache | Escrita na cache | Cache de 5 min | Cache de 1 hora |
| --- | --- | --- | --- | --- | --- | --- |
| Tamanho do pedido, em tokens(0; 272 000\] | Entrada0,002 US$ | Saída0,01 US$ | Leitura da cache0,0002 US$ | Escrita na cache0,0025 US$ | Cache de 5 min0,0025 US$ | Cache de 1 horaBase: — |
| Tamanho do pedido, em tokens(272 000; ∞) | Entrada0,004 US$ | Saída0,015 US$ | Leitura da cache0,0004 US$ | Escrita na cache0,005 US$ | Cache de 5 min0,005 US$ | Cache de 1 horaBase: — |

Tarifas em USD por 1K tokens. Se não estiver definida nenhuma tarifa, é herdada a tarifa base deste método; «—» significa que não está definida nenhuma tarifa base.

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Responses · Escalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · OpenAI Chat

Exemplo de textoEntrada, imagemPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-6-sol", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-6-sol", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="gpt-6-sol",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "gpt-6-sol",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='gpt-6-sol',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · OpenAI Chat

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=chat)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=chat), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=chat)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=chat), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=chat), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=chat)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gpt-6-sol`

[`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=chat)

OpenAI /`gpt-6-sol`

ID do modelo

- `gpt-6-sol`
- `openai/gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Entrada

`text`

Saída

`text`

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites gpt-6-sol | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites Depende do modelo | Predefinição— |
| Campo`messages[].content` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Conversação textual | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`required` | Contratomodel, messages |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`messages` | ContratoLista de mensagens com estrutura role/content |
| Parâmetro`file_material` | ContratoDocumento UTF-8 real inserido como texto literal; nenhum ID de ficheiro inferido |
| Parâmetro`optional_controls` | Contratostream |
| Parâmetro`control_scope` | ContratoConversação textual; stream é um booleano e tem false como predefinição. |
| Parâmetro`output_modalities` | Contratotext |
| Parâmetro`hosted_operations` | Contratofalse |
| Parâmetro`multimodal_input_binding` | Contratonull |

Aliases do método: `/chat/completions`

Ciclo de vida: `synchronous_or_streamed`

Envie o ID exato do modelo com messages.

O comprimento do contexto não é um limite de saída.

Um ficheiro de texto pode fornecer texto literal; as entradas de imagem/áudio/objeto de ficheiro exigem uma associação exata.

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · elevado

Tarifa normal Quando o esforço de raciocínio é elevado

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · máximo

Tarifa normal Quando o esforço de raciocínio é máximo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

Esforço de raciocínio · nenhum

Tarifa normal Quando não há esforço de raciocínio

Esforço de raciocínio · xhigh

Tarifa normal Quando o esforço de raciocínio é xhigh

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · OpenAI Chat

curlPython SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gpt-6-sol","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gpt-6-sol", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

### Receber e guardar os resultados

#### Ailoot Ultra · OpenAI Chat

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=chat)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=chat), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=chat)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=chat), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=chat), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gpt-6-sol`

[`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=messages)

OpenAI /`gpt-6-sol`

ID do modelo

- `gpt-6-sol`
- `openai/gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto

Resultados

json · sse

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Entrada

`text`

Saída

`json`, `sse`

Formato de saída

JSON ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites gpt-6-sol | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
| Campo`messages[].content` | Tipo`string` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |

Combinações de materiais de entrada

**Texto** · Texto UTF-8

`Cadeia de caracteres messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`required` | Contratomodel, messages, max\_tokens |
| Parâmetro`optional_controls` | Contratostream |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`text_file_material` | ContratoLeia o documento UTF-8 real e coloque o texto na entrada indicada ou na cadeia de conteúdo da mensagem. |

Ciclo de vida: `synchronous_or_streamed`

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · elevado

Tarifa normal Quando o esforço de raciocínio é elevado

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · máximo

Tarifa normal Quando o esforço de raciocínio é máximo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

Esforço de raciocínio · nenhum

Tarifa normal Quando não há esforço de raciocínio

Esforço de raciocínio · xhigh

Tarifa normal Quando o esforço de raciocínio é xhigh

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · Anthropic Messages

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo

```json
{
  "model": "gpt-6-sol",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gpt-6-sol', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gpt-6-sol', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Receber e guardar os resultados

#### Ailoot Ultra · Anthropic Messages

JSON ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=messages)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=messages), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=messages)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=messages), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=messages), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=messages)

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `gpt-6-sol`

[`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=responses)

OpenAI /`gpt-6-sol`

ID do modelo

- `gpt-6-sol`
- `openai/gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses`

Entrada

`text`

Saída

`text`

Formato de saída

json or SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites gpt-6-sol | Predefinição— |
| Campo`input` | Tipo`string\|input_item[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`input[].type` | Tipo`string` | RequisitoOpcional | Valores e limites message, reasoning, function\_call, function\_call\_output | Predefinição— |
| Campo`input[].content` | Tipo`string\|content_part[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`input[].call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: function\_call\_output; conserve o call\_id realmente devolvido | Predefinição— |
| Campo`input[].output` | Tipo`string\|content_part[]` | RequisitoOpcional | Valores e limites Aplica-se quando: function\_call\_output | Predefinição— |
| Campo`max_output_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning.summary` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`text.format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`text.verbosity` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`include` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`store` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`previous_response_id` | Tipo`string` | RequisitoNão suportado | Valores e limites Requisito do ID: Só um ID de resposta real de uma continuação suportada Condições: Reenvie o histórico real da conversa com cada pedido. | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_key` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`input text or input_text part`

**Texto + imagem**

`{type:input_image,image_url}`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, input |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoLeia o documento UTF-8 real e coloque o texto na entrada indicada ou na cadeia de conteúdo da mensagem. |

Ciclo de vida: `exact retained published method`

Envie o ID exato do modelo e os campos obrigatórios.

Conserve todos os elementos devolvidos e os respetivos identificadores originais.

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · elevado

Tarifa normal Quando o esforço de raciocínio é elevado

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · máximo

Tarifa normal Quando o esforço de raciocínio é máximo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

Esforço de raciocínio · nenhum

Tarifa normal Quando não há esforço de raciocínio

Esforço de raciocínio · xhigh

Tarifa normal Quando o esforço de raciocínio é xhigh

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · OpenAI Responses

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo

```json
{
  "model": "gpt-6-sol",
  "input": [
    {
      "content": "Hello, how are you?",
      "role": "user",
      "type": "message"
    }
  ]
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gpt-6-sol', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gpt-6-sol', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'Authorization': 'Bearer PLACEHOLDER_KEY', 'Content-Type': 'application/json'}
headers['Authorization'] = 'Bearer ' + api_key
request = Request('https://api.ailoot.ai/v1/responses', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Receber e guardar os resultados

#### Ailoot Ultra · OpenAI Responses

json or SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada elemento de saída e parte de conteúdo, o call\_id real da função, o raciocínio cifrado e os dados de utilização. Em streaming, mantenha a identidade completa dos eventos e elementos.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`status` | Tipostring |
| Campo`output[]` | Tipomessage\|reasoning\|function\_call\|other item |
| Campo`output[].content[]` | Tipocontent part |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=responses)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=responses), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=responses)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=responses), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=responses), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=responses)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `openai/gpt-6-sol`

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=chat)

OpenAI /`openai/gpt-6-sol`

ID do modelo

- `gpt-6-sol`
- `openai/gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Entrada

`text`

Saída

`text`

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites openai/gpt-6-sol | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites Exemplos: system, user, assistant, tool, function Condições: Estes papéis são representados explicitamente pelos tipos de compatibilidade do código-fonte; o conjunto exato de papéis continua específico do modelo. Depende do modelo | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_part[]\|null` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_calls` | Tipo`tool_call[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: role=tool; use o ID realmente devolvido | Predefinição— |
| Campo`messages[].name` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].reasoning_content` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Reintroduza o raciocínio realmente devolvido quando este modelo o utiliza | Predefinição— |
| Campo`messages[].reasoning_details` | Tipo`object\|array` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`max_completion_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`stream_options.include_usage` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop` | Tipo`string\|string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`function_tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].type` | Tipo`string` | RequisitoOpcional | Valores e limites function Depende do modelo | Predefinição— |
| Campo`tools[].function.name` | Tipo`string` | RequisitoObrigatório | Valores e limites Aplica-se quando: Função fornecida como ferramenta | Predefinição— |
| Campo`tools[].function.description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].function.parameters` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`response_format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning_effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites Campo de compatibilidade | Predefinição— |
| Campo`functions` | Tipo`function[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`function_call` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`modalities` | Tipo`string[]` | RequisitoOpcional | Valores e limites text | Predefinição— |
| Campo`provider` | Tipo`object` | RequisitoOpcional | Valores e limites Condições: provider.options é rejeitado nesta rota textual Ultra | Predefinição— |
| Campo`cache_control.ttl` | Tipo`string` | RequisitoOpcional | Valores e limites Condições: 1h é rejeitado nos locais efetivos da cache de prompts | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`required` | Contratomodel, messages |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`messages` | ContratoLista de mensagens com estrutura role/content |
| Parâmetro`file_material` | ContratoDocumento UTF-8 real inserido como texto literal; nenhum ID de ficheiro inferido |
| Parâmetro`optional_controls` | Contratostream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parâmetro`control_scope` | ContratoEspecífico do modelo; as ferramentas de funções do utilizador diferem das ferramentas alojadas |
| Parâmetro`output_modalities` | Contratotext |
| Parâmetro`hosted_operations` | Contratofalse |
| Parâmetro`multimodal_input_binding` | Contratonull |

Ciclo de vida: `synchronous_or_streamed`

Envie o ID exato do modelo com messages.

O comprimento do contexto não é um limite de saída.

Um ficheiro de texto pode fornecer texto literal; as entradas de imagem/áudio/objeto de ficheiro exigem uma associação exata.

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · elevado

Tarifa normal Quando o esforço de raciocínio é elevado

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · máximo

Tarifa normal Quando o esforço de raciocínio é máximo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

Esforço de raciocínio · nenhum

Tarifa normal Quando não há esforço de raciocínio

Esforço de raciocínio · xhigh

Tarifa normal Quando o esforço de raciocínio é xhigh

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · OpenAI Chat

curlPython SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/gpt-6-sol", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='openai/gpt-6-sol',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='openai/gpt-6-sol',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot Ultra · OpenAI Chat

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=chat)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=chat), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=chat)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=chat), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=chat), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `openai/gpt-6-sol`

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=messages)

OpenAI /`openai/gpt-6-sol`

ID do modelo

- `gpt-6-sol`
- `openai/gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Entrada

`text`

Saída

`text`

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites openai/gpt-6-sol | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_block[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`system` | Tipo`string\|content_block[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObrigatório | Valores e limites Mínimo: 1 O limite aplica-se a: Limite exato do modelo ou da ficha selecionados | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop_sequences` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].name` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Ferramenta fornecida | Predefinição— |
| Campo`tools[].description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].input_schema` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.budget_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`output_config.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`metadata` | Tipo`object` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`cache_control` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content ou bloco type=text`

**Texto + imagem**

`{type:image,source:{type:base64,media_type,data}} ou origem type=url`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, messages, max\_tokens |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoLeia o documento UTF-8 real e coloque o texto na entrada indicada ou na cadeia de conteúdo da mensagem. |

Ciclo de vida: `exact retained published method`

Envie o ID exato do modelo e os campos obrigatórios.

Conserve todos os elementos devolvidos e os respetivos identificadores originais.

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · elevado

Tarifa normal Quando o esforço de raciocínio é elevado

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · máximo

Tarifa normal Quando o esforço de raciocínio é máximo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

Esforço de raciocínio · nenhum

Tarifa normal Quando não há esforço de raciocínio

Esforço de raciocínio · xhigh

Tarifa normal Quando o esforço de raciocínio é xhigh

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · Anthropic Messages

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo

```json
{
  "model": "openai/gpt-6-sol",
  "max_tokens": 4096,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ]
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-6-sol', 'max_tokens': 4096, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-6-sol', 'max_tokens': 4096, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Receber e guardar os resultados

#### Ailoot Ultra · Anthropic Messages

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=messages)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=messages), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=messages)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=messages), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=messages), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=messages)

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses` `openai/gpt-6-sol`

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=responses)

OpenAI /`openai/gpt-6-sol`

ID do modelo

- `gpt-6-sol`
- `openai/gpt-6-sol`

### Introdução

O GPT-6 Sol destina-se a programação complexa e a tarefas com várias etapas e ferramentas. Trabalha com texto e imagens e permite configurar a profundidade do raciocínio.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · OpenAI Responses** `POST /v1/responses`

Entrada

`text`

Saída

`text`

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites openai/gpt-6-sol | Predefinição— |
| Campo`input` | Tipo`string\|input_item[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`input[].type` | Tipo`string` | RequisitoOpcional | Valores e limites message, reasoning, function\_call, function\_call\_output | Predefinição— |
| Campo`input[].content` | Tipo`string\|content_part[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`input[].call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: function\_call\_output; conserve o call\_id realmente devolvido | Predefinição— |
| Campo`input[].output` | Tipo`string\|content_part[]` | RequisitoOpcional | Valores e limites Aplica-se quando: function\_call\_output | Predefinição— |
| Campo`max_output_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning.summary` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`text.format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`text.verbosity` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`include` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`store` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`previous_response_id` | Tipo`string` | RequisitoNão suportado | Valores e limites Requisito do ID: Só um ID de resposta real de uma continuação suportada Condições: Reenvie o histórico real da conversa com cada pedido. | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_key` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`Texto de entrada ou parte input_text`

**Texto + imagem**

`{type:input_image,image_url}`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, input |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoLeia o documento UTF-8 real e coloque o texto na entrada indicada ou na cadeia de conteúdo da mensagem. |

Ciclo de vida: `exact retained published method`

Envie o ID exato do modelo e os campos obrigatórios.

Conserve todos os elementos devolvidos e os respetivos identificadores originais.

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · elevado

Tarifa normal Quando o esforço de raciocínio é elevado

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · máximo

Tarifa normal Quando o esforço de raciocínio é máximo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

Esforço de raciocínio · nenhum

Tarifa normal Quando não há esforço de raciocínio

Esforço de raciocínio · xhigh

Tarifa normal Quando o esforço de raciocínio é xhigh

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusive272 000 | Custo Entrada · Tokens de entrada **$0.004** / 1K tokens Saída · Tokens de saída **$0.02** / 1K tokens Entrada · Leitura da cache **$0.0004** / 1K tokens Entrada · Escrita na cache **$0.005** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 2 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de272 000 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.008** / 1K tokens Saída · Tokens de saída **$0.03** / 1K tokens Entrada · Leitura da cache **$0.0008** / 1K tokens Entrada · Escrita na cache **$0.01** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · OpenAI Responses

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo

```json
{
  "model": "openai/gpt-6-sol",
  "input": [
    {
      "content": "Hello, how are you?",
      "role": "user",
      "type": "message"
    }
  ]
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-6-sol', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-6-sol', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'Authorization': 'Bearer PLACEHOLDER_KEY', 'Content-Type': 'application/json'}
headers['Authorization'] = 'Bearer ' + api_key
request = Request('https://api.ailoot.ai/v1/responses', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Receber e guardar os resultados

#### Ailoot Ultra · OpenAI Responses

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada elemento de saída e parte de conteúdo, o call\_id real da função, o raciocínio cifrado e os dados de utilização. Em streaming, mantenha a identidade completa dos eventos e elementos.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`status` | Tipostring |
| Campo`output[]` | Tipomessage\|reasoning\|function\_call\|other item |
| Campo`output[].content[]` | Tipocontent part |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=responses)
**Ailoot Ultra** [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=responses), [`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=responses)

#### Aliases dos caminhos dos métodos

`/chat/completions`

#### IDs de chamada relacionados

[`openai/gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=openai%2Fgpt-6-sol&fmt=responses), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Core&caller=gpt-6-sol&fmt=responses), [`gpt-6-sol`](https://ailoot.ai/models/pt-pt/#m=openai%2Fgpt-6-sol&route=Ultra&caller=gpt-6-sol&fmt=responses)

FAQ · OpenAI: GPT-6 Sol

Que entradas e resultados estão disponíveis?

`POST /v1/messages` · `gpt-6-sol`: `text`, `image` → `text` `POST /v1/responses` · `gpt-6-sol`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt-6-sol`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt-6-sol`: `text` → `text` `POST /v1/messages` · `gpt-6-sol`: `text` → `json`, `sse` `POST /v1/responses` · `gpt-6-sol`: `text` → `text` `POST /v1/chat/completions` · `openai/gpt-6-sol`: `text` → `text` `POST /v1/messages` · `openai/gpt-6-sol`: `text` → `text` `POST /v1/responses` · `openai/gpt-6-sol`: `text` → `text`

Que campos utiliza o pedido?

`POST /v1/messages` · `gpt-6-sol`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `gpt-6-sol`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `gpt-6-sol`: `model`, `messages`, `stream` `POST /v1/chat/completions` · `gpt-6-sol`: `model`, `messages`, `stream` `POST /v1/messages` · `gpt-6-sol`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/responses` · `gpt-6-sol`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `openai/gpt-6-sol`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `openai/gpt-6-sol`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `openai/gpt-6-sol`: `model`, `input`, `instructions`, `stream`

Que limites se aplicam?

`POST /v1/messages` · `gpt-6-sol`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `gpt-6-sol`: `ctx`: `1050000`; `max_out`: `128000` `POST /v1/chat/completions` · `gpt-6-sol`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1` `POST /v1/chat/completions` · `gpt-6-sol`: `messages.min_items`: `1` `POST /v1/chat/completions` · `openai/gpt-6-sol`: `messages.min_items`: `1` `POST /v1/messages` · `openai/gpt-6-sol`: `messages.min_items`: `1`; `max_tokens.minimum`: `1`

Ligue o Ailoot ao Claude Code, OpenCode, Hermes ou à sua aplicação.

## A empresa e a sua carteira de projetos

A empresa e a sua carteira de projetos: milhões de clientes; vendas mensais na ordem dos milhares de milhões.

## Compre tokens com desconto.

Desconto por subscrição para trabalho regular. Códigos promocionais — até 50% na compra de tokens.

Subscrição

Escolha um plano com desconto para os pedidos regulares.

Código promocional até 50%

Introduza o código na compra. O preço é recalculado conforme a campanha em vigor.

Custos no histórico

O modelo, os tokens e o montante são guardados para cada pedido.

[Escolher subscrição](https://ailoot.ai/docs/pt-pt/billing/subscriptions/) · [Ver preços dos modelos](https://ailoot.ai/models/pt-pt/)

## Ligue a API ao produto que vende.

SaaS, aplicações e bots — ao abrigo da oferta e do contrato de licença Ailoot. Para revenda, peça uma licença de revendedor.

Aplicação comercial

Integre geração de texto, imagens, vídeo e som nas funcionalidades pagas do seu serviço.

Licença de revendedor

Envie uma descrição do projeto e do modelo de acesso. Peça condições escritas de utilização e revenda.

Documentos no site

A oferta, o contrato de licença e a política de tratamento de dados estão disponíveis antes da ligação.

[Pedir licença de revendedor](mailto:support@ailoot.ai) · [Oferta e contrato de licença](https://ailoot.ai/legal/offer?lang=pt-pt)

## Ailoot · A empresa e a sua carteira de projetos





A Ailoot assenta numa experiência operacional consolidada, numa ampla base de clientes, num serviço estável e no acompanhamento contínuo dos KPI.





A empresa e a sua carteira de projetos: milhões de clientes; vendas mensais na ordem dos milhares de milhões.





A Ailoot aplica essa experiência operacional ao acesso por API a funcionalidades de IA nos produtos dos clientes, agentes, aplicações e automatizações.
