Source: https://ailoot.ai/models/hu/grok-4-7/
Canonical: https://ailoot.ai/models/hu/grok-4-7/
Language: hu

# SpaceXAI: Grok 4.7

[Markdown](https://ailoot.ai/models/hu/grok-4-7/index.md) · [JSON](https://ailoot.ai/models/hu/grok-4-7/facts.json)

## [SpaceXAI: Grok 4.7](https://ailoot.ai/models/hu/grok-4-7/)

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `grok-4.7`](https://ailoot.ai/models/hu/grok-4-7/#method-0)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `grok-4.7`](https://ailoot.ai/models/hu/grok-4-7/#method-1)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `grok-4.7`](https://ailoot.ai/models/hu/grok-4-7/#method-2)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `grok-4.7`](https://ailoot.ai/models/hu/grok-4-7/#method-3)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `grok-4.7`](https://ailoot.ai/models/hu/grok-4-7/#method-4)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `grok`](https://ailoot.ai/models/hu/grok-4-7/#method-5)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `grok`](https://ailoot.ai/models/hu/grok-4-7/#method-6)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `grok`](https://ailoot.ai/models/hu/grok-4-7/#method-7)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `grok-4.7-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-8)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `grok-4.7-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-9)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `grok-4.7-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-10)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `grok-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-11)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `grok-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-12)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `grok-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-13)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `x-ai/grok-4.7`](https://ailoot.ai/models/hu/grok-4-7/#method-14)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `x-ai/grok-4.7`](https://ailoot.ai/models/hu/grok-4-7/#method-15)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `~x-ai/grok-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-16)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `~x-ai/grok-latest`](https://ailoot.ai/models/hu/grok-4-7/#method-17)

A modellről

Ez a leírás a modell képességeit ismerteti. Az Ailootban elérhető bemenetek, kimenetek és lehetőségek alább, a kiválasztott metódusnál láthatók.

#### Fejlesztés és tudásmunka

A Grok 4.7 programozásra, ügynökfeladatokra és szakmai információfeldolgozásra készült. Az xAI az összetett, hosszú és egymást követő végrehajtást igénylő feladatokra, a saját munka ellenőrzésére és a hosszú kontextus kezelésére helyezte a hangsúlyt.

A tanítás nagyobb alapmodellt és hosszú, nehéz feladatokon végzett megerősítéses tanulási szakaszt használt. A gyakorlati irányok közé tartozik a szoftverfejlesztés, a dokumentum- és prezentációkészítés, a társalgási feladatok és a tudásmunka. A parancsfuttatás és a fájlkészítés a környezet eszközeivel történik, maga a modell szöveget ad vissza.

#### Fő jellemzők

- **Bemenet:** szöveg és kép.
- **Kimenet:** szöveg, beleértve a programkódot és a strukturált adatokat.
- **Kontextus:** 500 000 token.
- **A beépített tudás határnapja:** 2026. május.
- **Következtetés:** `low`, `medium`, `high` vagy `xhigh`; az alapértelmezés `high`.

Ezek a jellemzők a Grok 4.7-re vonatkoznak. A modell további adatokat és műveleti eredményeket az átadott kontextusból és a csatlakoztatott függvényekből kap.

Az xAI jellemzői szerint a Grok 4.7 szöveges kimenetének nincs külön hosszkorlátja. Ez a modelltulajdonság nem jelent korlátlan válaszra vonatkozó ígéretet az Ailoot API-n keresztül.

#### Következtetés többlépéses munkában

A `low` megőrzi a gondolkodást, és egyszerű műveletekre alkalmas; a `medium` adatelemzésre és hosszú anyagokra készült. A `high` több erőfeszítést szán összetett matematikára és logikára, az `xhigh` pedig a legnehezebb feladatokra. Az xAI szerint a mélység növelése nagyobb késleltetéssel jár. A következtetés nem kapcsolható ki.

Responses formátumban a Grok 4.7 **titkosított következtetési állapotot** ad vissza. Ezek az elemek változtatás nélkül átadhatók a következő körben az előzményekkel együtt a többlépéses munka állapotának megőrzéséhez. Nem tárják fel olvasható formában a rejtett következtetést. A Chat Completions nem tartalmaz ilyen titkosított tartalmú mezőt.

A modell külön támogatja a következtetés rövid bemutatását is, amely a válasz során továbbítható. Ez eltér a titkosított elemektől: az összefoglaló olvasásra, a titkosított állapot a folyamat folytatására szolgál.

#### Eszközök és eredményformátum

A felhasználói függvények a modellt az alkalmazás adataival és műveleteivel kapcsolják össze. A modell argumentumokat tartalmazó hívást készít, a program végrehajtja a függvényt, és visszaadja az eredményt. Támogatott az automatikus választás, a kötelező hívás, az eszköztiltás és egy konkrét függvény kiválasztása; egy válaszban több hívás is megjelenhet.

A kód által feldolgozott eredményekhez JSON és megadott séma szerinti JSON áll rendelkezésre. A séma a mezők típusát, a beágyazott szerkezetet és a megengedett lehetőségeket adja meg. Ez a mód adatkinyerésre, dokumentumfeldolgozásra és jelentéskészítésre használható; felhasználói függvényhívásokkal is kombinálható.

Az xAI által leírt mód webes keresést, X-bejegyzések keresését és kódfuttatást is biztosít; ezek felhasználói függvényekkel kombinálhatók. A beépített eszközök Ailoot API-n keresztüli elérhetőségét a választott metódus támogatása határozza meg.

#### Szabályozási korlátok

A `presencePenalty`, `frequencyPenalty` és `stop` nem használható ezzel a modellel. A JSON Schema támogatásának vannak határai: egyes feltételes szerkezetek és összetett korlátok a modell viselkedésére maradnak, ezért azokat a programnak kell ellenőriznie. A nagy kontextus segít terjedelmes anyagokkal dolgozni, de nem helyettesíti a friss tényeket beszerző vagy műveletet végrehajtó eszközt.

Gyakorlati feladat

### Gyakorlati feladat

Technikai példa angolul

```
Build a decision memo from supplied evidence

Prepare a procurement memo from these records: vendor A delivers in 5 days, costs 900 credits and offers a 12-month warranty; vendor B delivers in 9 days, costs 750 and offers 24 months. The team needs delivery within 7 days and budget below 1,000. Recommend an option, explain trade-offs and list missing evidence.
```

#### Várt eredmény

```
A concise decision memo with requirements, recommendation, trade-offs and unanswered questions tied to the records.
```

#### Az eredmény ellenőrzése

```
The recommendation applies both the delivery deadline and budget, while warranty length remains a separate trade-off.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `grok-4.7`

[`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages)

SpaceXAI /`grok-4.7`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7 | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_block[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`system` | Típus`string\|content_block[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok Minimum: 1 A korlát erre vonatkozik: a kiválasztott modell/kártya pontos felső korlátja | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop_sequences` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Eszköz megadva | Alapértelmezett— |
| Mező`tools[].description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].input_schema` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.budget_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_config.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`metadata` | Típus`object` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`cache_control` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content vagy type=text blokk`

**Szöveg + kép**

`{type:image,source:{type:base64,media_type,data}} vagy type=url típusú forrás`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · Anthropic Messages

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · Anthropic Messages

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-4.7", "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": "grok-4.7", "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="grok-4.7",
    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: "grok-4.7",
  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='grok-4.7',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")
```

### Eredmények fogadása és mentése

#### Ailoot · Anthropic Messages

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `grok-4.7`

[`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses)

SpaceXAI /`grok-4.7`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7 | Alapértelmezett— |
| Mező`input` | Típus`string\|input_item[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok message, reasoning, function\_call, function\_call\_output | Alapértelmezett— |
| Mező`input[].content` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output; őrizze meg a ténylegesen visszaadott call\_id értéket | Alapértelmezett— |
| Mező`input[].output` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output | Alapértelmezett— |
| Mező`max_output_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.summary` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.verbosity` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`include` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`store` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`previous_response_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok ID-követelmény: Csak támogatott folytatásból származó tényleges válaszazonosító Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_key` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`bemeneti szöveg vagy input_text rész`

**Szöveg + kép**

`{type:input_image,image_url}`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, input |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Responses

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Responses

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-4.7", "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": "grok-4.7", "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="grok-4.7", 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: "grok-4.7", 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="grok-4.7", 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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Responses

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizzen meg minden kimeneti elemet és tartalomrészt, a tényleges függvényhívási call\_id értéket, a titkosított gondolkodási tartalmat és a használati adatokat. Folyamatos átvitelkor őrizze meg az események és elemek összes azonosítóadatát.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`status` | Típusstring |
| Mező`output[]` | Típusmessage\|reasoning\|function\_call\|other item |
| Mező`output[].content[]` | Típuscontent part |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `grok-4.7`

[`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat)

SpaceXAI /`grok-4.7`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7 | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_part[]\|null` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_calls` | Típus`tool_call[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
| Mező`messages[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].reasoning_content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
| Mező`messages[].reasoning_details` | Típus`object\|array` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`max_completion_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`stream_options.include_usage` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop` | Típus`string\|string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`function_tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].function.name` | Típus`string` | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
| Mező`tools[].function.description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].function.parameters` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`response_format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning_effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
| Mező`functions` | Típus`function[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`function_call` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

**Szöveg + kép**

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

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Chat

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Chat

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-4.7", "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": "grok-4.7", "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="grok-4.7",
    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: "grok-4.7",
  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='grok-4.7',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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

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

[`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

SpaceXAI /`grok-4.7`

Modell ID-ja

- `grok-4.7`
- `x-ai/grok-4.7`
- `~x-ai/grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`text`

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7 | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Szöveges beszélgetés | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`messages` | Szerződésüzenettömb role/content szerkezettel |
| Paraméter`file_material` | Szerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító |
| Paraméter`optional_controls` | Szerződésstream |
| Paraméter`control_scope` | SzerződésSzöveges beszélgetés; a stream logikai érték, alapértéke false. |
| Paraméter`output_modalities` | Szerződéstext |
| Paraméter`hosted_operations` | Szerződésfalse |
| Paraméter`multimodal_input_binding` | Szerződésnull |

Metódus álnevei: `/chat/completions`

Életciklus: `synchronous_or_streamed`

Küldje el a pontos modellazonosítót a messages mellett.

A kontextushossz nem kimeneti felső korlát.

Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Gondolkodási ráfordítás · high

Normál díjszabás Ha a gondolkodási ráfordítás értéke high

Gondolkodási ráfordítás · low

Normál díjszabás Ha a gondolkodási ráfordítás értéke low

Gondolkodási ráfordítás · medium

Normál díjszabás Ha a gondolkodási ráfordítás értéke medium

Gondolkodási ráfordítás · xhigh

Normál díjszabás Ha a gondolkodási ráfordítás értéke xhigh

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### 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":"grok-4.7","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="grok-4.7", 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"))
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `grok-4.7`

[`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

SpaceXAI /`grok-4.7`

Modell ID-ja

- `grok-4.7`
- `x-ai/grok-4.7`
- `~x-ai/grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg

Eredmények

json · sse

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`json`, `sse`

Kimeneti formátum

JSON vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7 | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |

Bemeneti anyagok kombinációi

**Szöveg** · UTF-8 szöveg

`messages[].content karakterlánc`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésstream |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`text_file_material` | SzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába. |

Életciklus: `synchronous_or_streamed`

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Gondolkodási ráfordítás · high

Normál díjszabás Ha a gondolkodási ráfordítás értéke high

Gondolkodási ráfordítás · low

Normál díjszabás Ha a gondolkodási ráfordítás értéke low

Gondolkodási ráfordítás · medium

Normál díjszabás Ha a gondolkodási ráfordítás értéke medium

Gondolkodási ráfordítás · xhigh

Normál díjszabás Ha a gondolkodási ráfordítás értéke xhigh

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · Anthropic Messages

Teljes, minimális JSON-törzscurl · használd a saját UTF-8-dokumentumodatPython · mentsd el a teljes eredményt

```json
{
  "model": "grok-4.7",
  "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': 'grok-4.7', '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': 'grok-4.7', '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))
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · Anthropic Messages

JSON vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

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

[`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages)

SpaceXAI /`grok`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_block[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`system` | Típus`string\|content_block[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok Minimum: 1 A korlát erre vonatkozik: a kiválasztott modell/kártya pontos felső korlátja | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop_sequences` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Eszköz megadva | Alapértelmezett— |
| Mező`tools[].description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].input_schema` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.budget_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_config.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`metadata` | Típus`object` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`cache_control` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content vagy type=text blokk`

**Szöveg + kép**

`{type:image,source:{type:base64,media_type,data}} vagy type=url típusú forrás`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · Anthropic Messages

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · Anthropic Messages

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok", "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": "grok", "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="grok",
    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: "grok",
  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='grok',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")
```

### Eredmények fogadása és mentése

#### Ailoot · Anthropic Messages

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

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

[`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses)

SpaceXAI /`grok`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok | Alapértelmezett— |
| Mező`input` | Típus`string\|input_item[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok message, reasoning, function\_call, function\_call\_output | Alapértelmezett— |
| Mező`input[].content` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output; őrizze meg a ténylegesen visszaadott call\_id értéket | Alapértelmezett— |
| Mező`input[].output` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output | Alapértelmezett— |
| Mező`max_output_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.summary` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.verbosity` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`include` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`store` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`previous_response_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok ID-követelmény: Csak támogatott folytatásból származó tényleges válaszazonosító Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_key` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`bemeneti szöveg vagy input_text rész`

**Szöveg + kép**

`{type:input_image,image_url}`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, input |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Responses

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Responses

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok", "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": "grok", "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="grok", 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: "grok", 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="grok", 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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Responses

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizzen meg minden kimeneti elemet és tartalomrészt, a tényleges függvényhívási call\_id értéket, a titkosított gondolkodási tartalmat és a használati adatokat. Folyamatos átvitelkor őrizze meg az események és elemek összes azonosítóadatát.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`status` | Típusstring |
| Mező`output[]` | Típusmessage\|reasoning\|function\_call\|other item |
| Mező`output[].content[]` | Típuscontent part |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7)

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

[`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat)

SpaceXAI /`grok`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_part[]\|null` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_calls` | Típus`tool_call[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
| Mező`messages[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].reasoning_content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
| Mező`messages[].reasoning_details` | Típus`object\|array` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`max_completion_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`stream_options.include_usage` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop` | Típus`string\|string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`function_tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].function.name` | Típus`string` | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
| Mező`tools[].function.description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].function.parameters` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`response_format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning_effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
| Mező`functions` | Típus`function[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`function_call` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

**Szöveg + kép**

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

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Chat

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Chat

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok", "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": "grok", "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="grok",
    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: "grok",
  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='grok',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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

**Ailoot · Anthropic Messages** `POST /v1/messages` `grok-4.7-latest`

[`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages)

SpaceXAI /`grok-4.7-latest`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7-latest | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_block[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`system` | Típus`string\|content_block[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok Minimum: 1 A korlát erre vonatkozik: a kiválasztott modell/kártya pontos felső korlátja | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop_sequences` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Eszköz megadva | Alapértelmezett— |
| Mező`tools[].description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].input_schema` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.budget_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_config.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`metadata` | Típus`object` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`cache_control` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content vagy type=text blokk`

**Szöveg + kép**

`{type:image,source:{type:base64,media_type,data}} vagy type=url típusú forrás`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · Anthropic Messages

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · Anthropic Messages

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-4.7-latest", "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": "grok-4.7-latest", "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="grok-4.7-latest",
    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: "grok-4.7-latest",
  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='grok-4.7-latest',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")
```

### Eredmények fogadása és mentése

#### Ailoot · Anthropic Messages

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `grok-4.7-latest`

[`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses)

SpaceXAI /`grok-4.7-latest`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7-latest | Alapértelmezett— |
| Mező`input` | Típus`string\|input_item[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok message, reasoning, function\_call, function\_call\_output | Alapértelmezett— |
| Mező`input[].content` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output; őrizze meg a ténylegesen visszaadott call\_id értéket | Alapértelmezett— |
| Mező`input[].output` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output | Alapértelmezett— |
| Mező`max_output_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.summary` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.verbosity` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`include` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`store` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`previous_response_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok ID-követelmény: Csak támogatott folytatásból származó tényleges válaszazonosító Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_key` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`bemeneti szöveg vagy input_text rész`

**Szöveg + kép**

`{type:input_image,image_url}`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, input |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Responses

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Responses

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-4.7-latest", "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": "grok-4.7-latest", "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="grok-4.7-latest", 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: "grok-4.7-latest", 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="grok-4.7-latest", 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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Responses

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizzen meg minden kimeneti elemet és tartalomrészt, a tényleges függvényhívási call\_id értéket, a titkosított gondolkodási tartalmat és a használati adatokat. Folyamatos átvitelkor őrizze meg az események és elemek összes azonosítóadatát.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`status` | Típusstring |
| Mező`output[]` | Típusmessage\|reasoning\|function\_call\|other item |
| Mező`output[].content[]` | Típuscontent part |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `grok-4.7-latest`

[`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat)

SpaceXAI /`grok-4.7-latest`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-4.7-latest | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_part[]\|null` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_calls` | Típus`tool_call[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
| Mező`messages[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].reasoning_content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
| Mező`messages[].reasoning_details` | Típus`object\|array` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`max_completion_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`stream_options.include_usage` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop` | Típus`string\|string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`function_tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].function.name` | Típus`string` | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
| Mező`tools[].function.description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].function.parameters` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`response_format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning_effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
| Mező`functions` | Típus`function[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`function_call` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

**Szöveg + kép**

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

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Chat

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Chat

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-4.7-latest", "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": "grok-4.7-latest", "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="grok-4.7-latest",
    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: "grok-4.7-latest",
  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='grok-4.7-latest',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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

**Ailoot · Anthropic Messages** `POST /v1/messages` `grok-latest`

[`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)

SpaceXAI /`grok-latest`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-latest | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_block[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`system` | Típus`string\|content_block[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok Minimum: 1 A korlát erre vonatkozik: a kiválasztott modell/kártya pontos felső korlátja | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop_sequences` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Eszköz megadva | Alapértelmezett— |
| Mező`tools[].description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].input_schema` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`thinking.budget_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`output_config.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`metadata` | Típus`object` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`cache_control` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content vagy type=text blokk`

**Szöveg + kép**

`{type:image,source:{type:base64,media_type,data}} vagy type=url típusú forrás`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · Anthropic Messages

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · Anthropic Messages

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-latest", "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": "grok-latest", "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="grok-latest",
    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: "grok-latest",
  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='grok-latest',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")
```

### Eredmények fogadása és mentése

#### Ailoot · Anthropic Messages

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `grok-latest`

[`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses)

SpaceXAI /`grok-latest`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-latest | Alapértelmezett— |
| Mező`input` | Típus`string\|input_item[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok message, reasoning, function\_call, function\_call\_output | Alapértelmezett— |
| Mező`input[].content` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`input[].call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output; őrizze meg a ténylegesen visszaadott call\_id értéket | Alapértelmezett— |
| Mező`input[].output` | Típus`string\|content_part[]` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: function\_call\_output | Alapértelmezett— |
| Mező`max_output_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning.summary` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`text.verbosity` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`include` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`store` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`previous_response_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok ID-követelmény: Csak támogatott folytatásból származó tényleges válaszazonosító Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_key` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`bemeneti szöveg vagy input_text rész`

**Szöveg + kép**

`{type:input_image,image_url}`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, input |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Responses

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Responses

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-latest", "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": "grok-latest", "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="grok-latest", 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: "grok-latest", 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="grok-latest", 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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Responses

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizzen meg minden kimeneti elemet és tartalomrészt, a tényleges függvényhívási call\_id értéket, a titkosított gondolkodási tartalmat és a használati adatokat. Folyamatos átvitelkor őrizze meg az események és elemek összes azonosítóadatát.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`status` | Típusstring |
| Mező`output[]` | Típusmessage\|reasoning\|function\_call\|other item |
| Mező`output[].content[]` | Típuscontent part |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=responses), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=responses), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=responses), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=responses), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `grok-latest`

[`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)

SpaceXAI /`grok-latest`

Modell ID-ja

- `grok-4.7`
- `grok`
- `grok-4.7-latest`
- `grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg · Képek

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`, `image`

Kimenet

`text`

Kontextus

500 000 tokens

Maximális kimenet

500 000 tokens

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok grok-latest | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_part[]\|null` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_calls` | Típus`tool_call[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
| Mező`messages[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].reasoning_content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
| Mező`messages[].reasoning_details` | Típus`object\|array` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`max_completion_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`stream_options.include_usage` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop` | Típus`string\|string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`function_tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].function.name` | Típus`string` | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
| Mező`tools[].function.description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].function.parameters` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`response_format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning_effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
| Mező`functions` | Típus`function[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`function_call` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

**Szöveg + kép**

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

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`material_types` | Szerződéstext, image |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`optional_controls` | Szerződésnull |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`text_file_material` | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |

Életciklus: `exact retained published method`

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

### Díjcsomagok

#### Ailoot-metódusok díjai

Bemenet

0,002 USD */ 1K*

Kimenet

0,006 USD */ 1K*

Gyorsítótár olvasása

0,0005 USD */ 1K*

Írás a gyorsítótárba

0,00 USD */ 1K*

Írás a gyorsítótárba, 5 perc

0,00 USD */ 1K tokens*

Írás a gyorsítótárba, 1 óra

0,00 USD */ 1K tokens*

#### A kérés hosszától függő árak · OpenAI Chat

| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
| --- | --- | --- | --- | --- | --- | --- |
| A kérés mérete, tokenben(0; 200 000\] | Bemenet0,002 USD | Kimenet0,006 USD | Gyorsítótár olvasása0,0005 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,001 USD | Írás a gyorsítótárba0,00 USD | Gyorsítótár 5 perc0,00 USD | Gyorsítótár 1 óra0,00 USD |

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

#### A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

### Példakérések

#### Ailoot · OpenAI Chat

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam

```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": "grok-latest", "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": "grok-latest", "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="grok-latest",
    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: "grok-latest",
  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='grok-latest',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")
```

### Eredmények fogadása és mentése

#### Ailoot · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `x-ai/grok-4.7`

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat)

SpaceXAI /`x-ai/grok-4.7`

Modell ID-ja

- `grok-4.7`
- `x-ai/grok-4.7`
- `~x-ai/grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`text`

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok x-ai/grok-4.7 | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_part[]\|null` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_calls` | Típus`tool_call[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
| Mező`messages[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].reasoning_content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
| Mező`messages[].reasoning_details` | Típus`object\|array` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`max_completion_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`stream_options.include_usage` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop` | Típus`string\|string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`function_tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok function Modelltől függ | Alapértelmezett— |
| Mező`tools[].function.name` | Típus`string` | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
| Mező`tools[].function.description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].function.parameters` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`response_format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning_effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
| Mező`functions` | Típus`function[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`function_call` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`modalities` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok text | Alapértelmezett— |
| Mező`provider` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Feltételek: A provider.options elutasításra kerül ezen az Ultra szöveges útvonalon | Alapértelmezett— |
| Mező`cache_control.ttl` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Feltételek: Az 1h elutasításra kerül a tényleges prompt-gyorsítótárazási helyeken | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`messages` | Szerződésüzenettömb role/content szerkezettel |
| Paraméter`file_material` | Szerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító |
| Paraméter`optional_controls` | Szerződésstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Paraméter`control_scope` | Szerződésmodellspecifikus; a felhasználói függvényeszközök eltérnek a hosztolt eszközöktől |
| Paraméter`output_modalities` | Szerződéstext |
| Paraméter`hosted_operations` | Szerződésfalse |
| Paraméter`multimodal_input_binding` | Szerződésnull |

Életciklus: `synchronous_or_streamed`

Küldje el a pontos modellazonosítót a messages mellett.

A kontextushossz nem kimeneti felső korlát.

Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Gondolkodási ráfordítás · high

Normál díjszabás Ha a gondolkodási ráfordítás értéke high

Gondolkodási ráfordítás · low

Normál díjszabás Ha a gondolkodási ráfordítás értéke low

Gondolkodási ráfordítás · medium

Normál díjszabás Ha a gondolkodási ráfordítás értéke medium

Gondolkodási ráfordítás · xhigh

Normál díjszabás Ha a gondolkodási ráfordítás értéke xhigh

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython-adatfolyam

```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": "x-ai/grok-4.7", "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='x-ai/grok-4.7',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='x-ai/grok-4.7',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")
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `x-ai/grok-4.7`

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages)

SpaceXAI /`x-ai/grok-4.7`

Modell ID-ja

- `grok-4.7`
- `x-ai/grok-4.7`
- `~x-ai/grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg

Eredmények

json · sse

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`json`, `sse`

Kimeneti formátum

JSON vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok x-ai/grok-4.7 | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |

Bemeneti anyagok kombinációi

**Szöveg** · UTF-8 szöveg

`messages[].content karakterlánc`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésstream |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`text_file_material` | SzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába. |

Életciklus: `synchronous_or_streamed`

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Gondolkodási ráfordítás · high

Normál díjszabás Ha a gondolkodási ráfordítás értéke high

Gondolkodási ráfordítás · low

Normál díjszabás Ha a gondolkodási ráfordítás értéke low

Gondolkodási ráfordítás · medium

Normál díjszabás Ha a gondolkodási ráfordítás értéke medium

Gondolkodási ráfordítás · xhigh

Normál díjszabás Ha a gondolkodási ráfordítás értéke xhigh

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · Anthropic Messages

Teljes, minimális JSON-törzscurl · használd a saját UTF-8-dokumentumodatPython · mentsd el a teljes eredményt

```json
{
  "model": "x-ai/grok-4.7",
  "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': 'x-ai/grok-4.7', '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': 'x-ai/grok-4.7', '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))
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · Anthropic Messages

JSON vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `~x-ai/grok-latest`

[`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

SpaceXAI /`~x-ai/grok-latest`

Modell ID-ja

- `grok-4.7`
- `x-ai/grok-4.7`
- `~x-ai/grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg

Eredmények

Szöveg

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`text`

Kimeneti formátum

json vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok ~x-ai/grok-latest | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
| Mező`messages[].content` | Típus`string\|content_part[]\|null` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_calls` | Típus`tool_call[]` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].tool_call_id` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
| Mező`messages[].name` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].reasoning_content` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
| Mező`messages[].reasoning_details` | Típus`object\|array` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`max_completion_tokens` | Típus`integer` | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
| Mező`stream_options.include_usage` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`temperature` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`top_p` | Típus`number` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`stop` | Típus`string\|string[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools` | Típus`function_tool[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`tools[].type` | Típus`string` | KövetelményOpcionális | Értékek és korlátok function Modelltől függ | Alapértelmezett— |
| Mező`tools[].function.name` | Típus`string` | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
| Mező`tools[].function.description` | Típus`string` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tools[].function.parameters` | Típus`JSON_schema` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
| Mező`tool_choice` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`parallel_tool_calls` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`response_format` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning_effort` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`reasoning` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`service_tier` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`instructions` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
| Mező`functions` | Típus`function[]` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`function_call` | Típus`string\|object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`prompt_cache_options` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
| Mező`modalities` | Típus`string[]` | KövetelményOpcionális | Értékek és korlátok text | Alapértelmezett— |
| Mező`provider` | Típus`object` | KövetelményOpcionális | Értékek és korlátok Feltételek: A provider.options elutasításra kerül ezen az Ultra szöveges útvonalon | Alapértelmezett— |
| Mező`cache_control.ttl` | Típus`string` | KövetelményOpcionális | Értékek és korlátok Feltételek: Az 1h elutasításra kerül a tényleges prompt-gyorsítótárazási helyeken | Alapértelmezett— |

Bemeneti anyagok kombinációi

**Szöveg** · UTF8 szöveg

`messages[].content`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`messages` | Szerződésüzenettömb role/content szerkezettel |
| Paraméter`file_material` | Szerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító |
| Paraméter`optional_controls` | Szerződésstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Paraméter`control_scope` | Szerződésmodellspecifikus; a felhasználói függvényeszközök eltérnek a hosztolt eszközöktől |
| Paraméter`output_modalities` | Szerződéstext |
| Paraméter`hosted_operations` | Szerződésfalse |
| Paraméter`multimodal_input_binding` | Szerződésnull |

Életciklus: `synchronous_or_streamed`

Küldje el a pontos modellazonosítót a messages mellett.

A kontextushossz nem kimeneti felső korlát.

Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Gondolkodási ráfordítás · high

Normál díjszabás Ha a gondolkodási ráfordítás értéke high

Gondolkodási ráfordítás · low

Normál díjszabás Ha a gondolkodási ráfordítás értéke low

Gondolkodási ráfordítás · medium

Normál díjszabás Ha a gondolkodási ráfordítás értéke medium

Gondolkodási ráfordítás · xhigh

Normál díjszabás Ha a gondolkodási ráfordítás értéke xhigh

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython-adatfolyam

```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": "~x-ai/grok-latest", "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='~x-ai/grok-latest',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='~x-ai/grok-latest',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")
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · OpenAI Chat

json vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`choices[].index` | Típusinteger |
| Mező`choices[].message.content` | Típusstring\|null |
| Mező`choices[].message.tool_calls` | Típustool\_call\[\] |
| Mező`choices[].message.reasoning_content` | Típusstring |
| Mező`choices[].message.reasoning_details` | Típusobject\|array |
| Mező`choices[].finish_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=chat), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=chat), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=chat), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=chat), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=chat), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `~x-ai/grok-latest`

[`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

SpaceXAI /`~x-ai/grok-latest`

Modell ID-ja

- `grok-4.7`
- `x-ai/grok-4.7`
- `~x-ai/grok-latest`

### Kezdő lépések

A Grok 4.7 az xAI modellje szoftverfejlesztéshez és szakmai tudásmunkához. Támogatja a szöveget, a képeket, az 500 000 tokenes kontextust, a függvényhívásokat és a strukturált válaszokat.

Elfogadott bemenetek

Szöveg

Eredmények

json · sse

### Elérhető az Ailootban · bemenetek és metódusok

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

Bemenet

`text`

Kimenet

`json`, `sse`

Kimeneti formátum

JSON vagy SSE

| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
| --- | --- | --- | --- | --- |
| Mező`model` | Típus`string` | KövetelményKötelező | Értékek és korlátok ~x-ai/grok-latest | Alapértelmezett— |
| Mező`messages` | Típus`message[]` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`messages[].role` | Típus`string` | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
| Mező`messages[].content` | Típus`string` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`max_tokens` | Típus`integer` | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
| Mező`stream` | Típus`boolean` | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |

Bemeneti anyagok kombinációi

**Szöveg** · UTF-8 szöveg

`messages[].content karakterlánc`

Metódus paraméterei és életciklusa

| Paraméter | Szerződés |
| --- | --- |
| Paraméter`content_type` | Szerződésapplication/json |
| Paraméter`required` | Szerződésmodel, messages, max\_tokens |
| Paraméter`optional_controls` | Szerződésstream |
| Paraméter`material_types` | Szerződéstext |
| Paraméter`text_file_material` | SzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába. |

Életciklus: `synchronous_or_streamed`

### Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód

Normál díjszabás Ha a gyors mód van kiválasztva

Flex mód

Normál díjszabás Ha a flex mód van kiválasztva

Maximális gondolkodási ráfordítás

Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Gondolkodási ráfordítás · high

Normál díjszabás Ha a gondolkodási ráfordítás értéke high

Gondolkodási ráfordítás · low

Normál díjszabás Ha a gondolkodási ráfordítás értéke low

Gondolkodási ráfordítás · medium

Normál díjszabás Ha a gondolkodási ráfordítás értéke medium

Gondolkodási ráfordítás · xhigh

Normál díjszabás Ha a gondolkodási ráfordítás értéke xhigh

#### Ailoot-díjak

#### Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
| --- | --- | --- | --- | --- |
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek **$0.004** / 1K token Kimenet · Kimeneti tokenek **$0.012** / 1K token Bemenet · Gyorsítótár olvasása **$0.001** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek **$0.008** / 1K token Kimenet · Kimeneti tokenek **$0.024** / 1K token Bemenet · Gyorsítótár olvasása **$0.002** / 1K token Bemenet · Írás a gyorsítótárba **—** / 1K token Bemenet · Írás a gyorsítótárba, 1 óra **—** / 1K token |

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. [A foglalás és az elszámolás működése →](https://ailoot.ai/docs/hu/billing/reserve/)

### Példakérések

#### Ailoot Ultra · Anthropic Messages

Teljes, minimális JSON-törzscurl · használd a saját UTF-8-dokumentumodatPython · mentsd el a teljes eredményt

```json
{
  "model": "~x-ai/grok-latest",
  "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': '~x-ai/grok-latest', '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': '~x-ai/grok-latest', '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))
```

### Eredmények fogadása és mentése

#### Ailoot Ultra · Anthropic Messages

JSON vagy SSE

##### Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

##### Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők

| Mező | Típus |
| --- | --- |
| Mező`id` | Típusstring |
| Mező`model` | Típusstring |
| Mező`content[]` | Típustext\|thinking\|tool\_use\|other content block |
| Mező`stop_reason` | Típusstring\|null |
| Mező`usage` | Típusobject |

Hibák és következő lépések

| Válasz | Feltétel | Következő lépés |
| --- | --- | --- |
| Válasz400 · `invalid_request_error` | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |

### Álnevek

#### Modell álnevei

<strong>Ailoot</strong> [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages)
**Ailoot Ultra** [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages), [`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages)

#### Metódusútvonalak álnevei

`/chat/completions`

#### Kapcsolódó modellazonosítók

[`x-ai/grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=x-ai%2Fgrok-4.7&fmt=messages), [`grok`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok&fmt=messages), [`grok-4.7-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7-latest&fmt=messages), [`grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-latest&fmt=messages), [`~x-ai/grok-latest`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=~x-ai%2Fgrok-latest&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Core&caller=grok-4.7&fmt=messages), [`grok-4.7`](https://ailoot.ai/models/hu/#m=x-ai%2Fgrok-4.7&route=Ultra&caller=grok-4.7&fmt=messages)

FAQ · SpaceXAI: Grok 4.7

Milyen bemenetek és eredmények érhetők el?

`POST /v1/messages` · `grok-4.7`: `text`, `image` → `text` `POST /v1/responses` · `grok-4.7`: `text`, `image` → `text` `POST /v1/chat/completions` · `grok-4.7`: `text`, `image` → `text` `POST /v1/chat/completions` · `grok-4.7`: `text` → `text` `POST /v1/messages` · `grok-4.7`: `text` → `json`, `sse` `POST /v1/messages` · `grok`: `text`, `image` → `text` `POST /v1/responses` · `grok`: `text`, `image` → `text` `POST /v1/chat/completions` · `grok`: `text`, `image` → `text` `POST /v1/messages` · `grok-4.7-latest`: `text`, `image` → `text` `POST /v1/responses` · `grok-4.7-latest`: `text`, `image` → `text` `POST /v1/chat/completions` · `grok-4.7-latest`: `text`, `image` → `text` `POST /v1/messages` · `grok-latest`: `text`, `image` → `text` `POST /v1/responses` · `grok-latest`: `text`, `image` → `text` `POST /v1/chat/completions` · `grok-latest`: `text`, `image` → `text` `POST /v1/chat/completions` · `x-ai/grok-4.7`: `text` → `text` `POST /v1/messages` · `x-ai/grok-4.7`: `text` → `json`, `sse` `POST /v1/chat/completions` · `~x-ai/grok-latest`: `text` → `text` `POST /v1/messages` · `~x-ai/grok-latest`: `text` → `json`, `sse`

Mely mezőket használja a kérés?

`POST /v1/messages` · `grok-4.7`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `grok-4.7`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `grok-4.7`: `model`, `messages`, `stream` `POST /v1/chat/completions` · `grok-4.7`: `model`, `messages`, `stream` `POST /v1/messages` · `grok-4.7`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/messages` · `grok`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `grok`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `grok`: `model`, `messages`, `stream` `POST /v1/messages` · `grok-4.7-latest`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `grok-4.7-latest`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `grok-4.7-latest`: `model`, `messages`, `stream` `POST /v1/messages` · `grok-latest`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `grok-latest`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `grok-latest`: `model`, `messages`, `stream` `POST /v1/chat/completions` · `x-ai/grok-4.7`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `x-ai/grok-4.7`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/chat/completions` · `~x-ai/grok-latest`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `~x-ai/grok-latest`: `model`, `messages`, `max_tokens`, `stream`

Milyen korlátok érvényesek?

`POST /v1/messages` · `grok-4.7`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `grok-4.7`: `ctx`: `500000`; `max_out`: `500000` `POST /v1/chat/completions` · `grok-4.7`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1` `POST /v1/chat/completions` · `grok-4.7`: `messages.min_items`: `1` `POST /v1/messages` · `grok`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `grok`: `ctx`: `500000`; `max_out`: `500000` `POST /v1/chat/completions` · `grok`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1` `POST /v1/messages` · `grok-4.7-latest`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `grok-4.7-latest`: `ctx`: `500000`; `max_out`: `500000` `POST /v1/chat/completions` · `grok-4.7-latest`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1` `POST /v1/messages` · `grok-latest`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `grok-latest`: `ctx`: `500000`; `max_out`: `500000` `POST /v1/chat/completions` · `grok-latest`: `ctx`: `500000`; `max_out`: `500000`; `messages.min_items`: `1` `POST /v1/chat/completions` · `x-ai/grok-4.7`: `messages.min_items`: `1` `POST /v1/chat/completions` · `~x-ai/grok-latest`: `messages.min_items`: `1`

Csatlakoztassa az Ailootot a Claude Code-hoz, OpenCode-hoz, Hermeshez vagy saját alkalmazásához.

## A vállalat és projektportfóliója

A vállalat és projektportfóliója: ügyfelek milliói; havi értékesítés milliárdos nagyságrendben.

## Vásároljon tokeneket kedvezménnyel.

Előfizetési kedvezmény rendszeres munkához. Promókódok — akár 50% tokenvásárlási kedvezmény.

Előfizetés

Válasszon kedvezményes tarifát a rendszeres kéréseihez.

Promókód akár 50%-ig

Vásárláskor adja meg a kódot. Az ár az érvényes akció szerint újraszámolódik.

Költségek az előzményekben

Minden kéréshez megmarad a modell, a tokenek és az összeg.

[Előfizetés kiválasztása](https://ailoot.ai/docs/hu/billing/subscriptions/) · [Modellárak megtekintése](https://ailoot.ai/models/hu/)

## Csatlakoztassa az API-t az értékesített termékéhez.

SaaS, alkalmazások és botok — az Ailoot ajánlati feltételei és licencszerződése alapján. Viszonteladáshoz kérjen viszonteladói licencet.

Kereskedelmi alkalmazás

Építsen szöveg-, kép-, videó- és hanggenerálást szolgáltatása fizetős funkcióiba.

Viszonteladói licenc

Küldje el a projekt leírását és a hozzáférés módját. Kérjen írásos használati és viszonteladási feltételeket.

Dokumentumok a weboldalon

Az ajánlati feltételek, licencszerződés és adatkezelési szabályzat már a csatlakoztatás előtt elérhető.

[Viszonteladói licenc kérése](mailto:support@ailoot.ai) · [Ajánlati feltételek és licencszerződés](https://ailoot.ai/legal/offer?lang=hu)

## Ailoot · A vállalat és projektportfóliója





Az Ailoot felhalmozott működési tapasztalatra, széles ügyfélkörre, stabil szolgáltatásra és folyamatos KPI-ellenőrzésre épít.





A vállalat és projektportfóliója: ügyfelek milliói; havi értékesítés milliárdos nagyságrendben.





Az Ailoot ezt a működési tapasztalatot használja az ügyfelek termékeiben, ágenseiben, alkalmazásaiban és automatizálásaiban elérhető AI-funkciók API-hozzáféréséhez.
