Source: https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/
Canonical: https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/
Language: da

# Qwen3 VL 235B A22B Thinking

[Markdown](https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/index.md) · [JSON](https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/facts.json)

## [Qwen3 VL 235B A22B Thinking](https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/)

Qwen3-VL-235B-A22B-Thinking er Qwens mixture-of-experts-vision-language-model til ræsonnering over tekst, billeder og video. Brug Thinking-udgaven til STEM-spørgsmål, dokumentbaseret evidens, rumlige relationer, visuel kodning og videoanalyse med tidsstempler, med en oprindelig kontekst på 262,144 tokens.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/#method-1)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/#method-2)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/qwen-qwen3-vl-235b-a22b-thinking/#method-3)

Om modellen

Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.

Introduktion: den multimodale Thinking-udgave

Qwen3-VL-235B-A22B-Thinking er den ræsonneringsorienterede mixture-of-experts-udgave af Qwen3-VL. Den kombinerer tekst med billeder og video og producerer tekstsvar eller kode. Det faste Thinking-checkpoint er adskilt fra Qwen3-VL-235B-A22B-Instruct og de særskilt navngivne FP8-builds. Vælg det til et spørgsmål, der kræver, at visuel dokumentation forbindes med en længere forklaring, frem for at antage, at alle Qwen3-VL-udgaver har samme svarstil.

Visuelle agenter og visuel kodning

Qwen beskriver en arbejdsgang med en visuel agent, der genkender elementer i computer- eller mobilgrænseflader, fortolker deres funktioner og arbejder med værktøjer for at udføre opgaver. Modellen leverer perception og ræsonnering; en applikation skal tilslutte og udføre handlingerne. Til en grænsefladegennemgang skal du levere det aktuelle skærmbillede og et specifikt mål og derefter bede den identificere de relevante betjeningselementer og forklare den næste handling. Billedet alene giver ikke kontrol over enheden.

Visuel kodning omfatter generering af diagramindhold og HTML, CSS eller JavaScript ud fra billeder og videoer. Lever et skærmbillede med det krævede layout, den krævede adfærd og et redigerbart outputformat. Bed om sidestrukturen og stildefinitionerne som separate artefakter, når det gør gennemgangen lettere. Genereret kode er tekst til en udviklingsarbejdsgang; den dokumenterer ikke, at et websted er blevet renderet, eller at kildebilledet er blevet til en fungerende applikation.

Rumlig perception

Producenten dokumenterer ræsonnering om objekters placeringer, synsvinkler og delvis tildækning med todimensionel forankring og understøttelse af tredimensionel forankring. Stil et konkret spørgsmål om relationer, og identificér objektet af interesse: eksempelvis hvilken komponent der er tildækket, hvad der er foran den, og hvilke visuelle spor der understøtter denne fortolkning. Forankringsfunktionen bør ikke behandles som en kalibreret fysisk måling ud fra et vilkårligt billede.

Lang kontekst og video

Den oprindelige kontekst er 262,144 tokens. Qwen beskriver udvidelse til omtrent en million gennem YaRN-konfiguration samt familiearbejdsgange med bøger eller timelange videoer med hændelsesindeksering ned på sekundniveau. Disse funktioner afhænger af repræsentation, sampling af videobilleder og kontekstkonfiguration; producentens brede beskrivelse garanterer ikke perfekt genkaldelse af hvert videobillede. I sit repository anbefaler Qwen en ekstrapolationsfaktor på to eller tre for dette sammenflettede positionssystem ved udvidelse fra 256K til cirka 1M frem for automatisk at kopiere en faktor på fire fra en anden model.

Multimodal ræsonnering og genkendelse

Thinking-udgaven retter sig mod evidensbaseret STEM-ræsonnering og matematisk ræsonnering, årsagsanalyse og logiske svar, der forbinder tekst med visuelt materiale. Angiv et diagram og dets definitioner samlet, eller et diagram med data og det præcise numeriske spørgsmål. Bed om de anvendte etiketter og værdier før konklusionen. Qwen beskriver også bredere visuel genkendelse af mennesker, anime, produkter, vartegn, planter og dyr. Et genkendelsessvar forbliver en slutning ud fra det medsendte billede og er ikke en garanti for, at hvert objekt eller hver identitet kan navngives.

OCR omfatter 32 sprog og er udformet til at forbedre læsning ved svagt lys, sløring eller skæv vinkel, herunder specialiseret ordforråd og strukturen i lange dokumenter. Bevar læselige kildebilleder, og bed om felter, citater eller en struktureret tabel, som kan kontrolleres. Tekstforståelse og visuel forståelse kombineres i én model, så et spørgsmål samlet kan henvise til et dokumentudsnit, en figur og brugerens instruktioner.

Arkitekturændringer

Interleaved-MRoPE fordeler positionsrepræsentationen på tid, bredde og højde til videoræsonnering. DeepStack kombinerer visuelle egenskaber fra flere encoderniveauer for at indfange finere detaljer og forbedre sammenkoblingen mellem billede og tekst. Tekst–tidsstempel-tilpasning forankrer hændelser i tidsreferencer. Den udgivne tekstkonfiguration har 94 lag, 128 eksperter og otte eksperter valgt pr. token. Disse arkitekturdetaljer forklarer modellens multimodale repræsentation; de dokumenterer ikke en garanti for svartid.

Forberedelse af visuelt input og output

Producentens eksempler omfatter enkelte eller flere billeder, video og rene tekstanmodninger. Mærk hvert visuelt input, så spørgsmålet kan henvise tydeligt til det. Billed- og videoprocessorer bruger separate pixelbudgetter: et billedbudget begrænser billedets pixels, mens et videobudget medregner pixels på tværs af de samplede videobilleder. Udtrykkelige billeddimensioner tilpasses til multipla af 32. Videosampling kan styres med en rate eller et antal videobilleder; den dokumenterede standard er to videobilleder pr. sekund. Bevar tidsstempler, når du beder om en hændelsestidslinje.

Til et langt klip skal du bede om hændelsen, dens tidsinterval og den synlige dokumentation frem for et udifferentieret resumé. Til flere sider skal du bede om et resultat organiseret efter sideidentifikator. Disse forberedelseseksempler anvender de dokumenterede funktioner og hjælper med at synliggøre udeladelser eller udtræksfejl.

Vejledning om generering og begrænsninger

Checkpointets genereringsfil bruger som standard temperature 0.8, top\_p 0.95 og top\_k 20. Qwens separate Thinking-evalueringsopskrift bruger temperature 0.6, presence penalty på nul, repetition penalty 1.0 og en outputramme på 40,960 tokens. Det er særskilte producentforvalg frem for ét enkelt hårdt outputloft. Afsæt plads til ræsonnement og endelig tekst ved siden af de visuelle tokens, og kontrollér udtrukket tekst, beregnede svar og genereret kode mod kilden, før du bruger dem.

Praktisk opgave

### Praktisk opgave

Teknisk eksempel på engelsk

```
Reason from a textual circuit description

Use this textual circuit description: an ideal 12 V source powers two series resistors, R1 = 2 Ω and R2 = 4 Ω. Calculate total resistance, current and voltage across each resistor. State the ideal-component assumptions and verify that the voltage drops sum to the source voltage. Return a compact worked solution using the labels R1 and R2.
```

#### Forventet resultat

```
A labeled worked calculation and a voltage-sum consistency check.
```

#### Kontrollér resultatet

```
The same series current is used for both resistors and the stated voltage drops sum to 12 V.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3-vl-235b-a22b-thinking`

[`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=chat)

Alibaba /`qwen/qwen3-vl-235b-a22b-thinking`

Model-ID

- `qwen/qwen3-vl-235b-a22b-thinking`
- `qwen3-vl-235b-a22b-thinking`

### Start

Qwen3-VL-235B-A22B-Thinking er Qwens mixture-of-experts-vision-language-model til ræsonnering over tekst, billeder og video. Brug Thinking-udgaven til STEM-spørgsmål, dokumentbaseret evidens, rumlige relationer, visuel kodning og videoanalyse med tidsstempler, med en oprindelig kontekst på 262,144 tokens.

Accepterede input

Tekst

Resultater

Tekst

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`text`

Outputformat

json eller SSE

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser qwen/qwen3-vl-235b-a22b-thinking | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrævet | Værdier og grænser Minimumsantal elementer: 1 | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrævet | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`messages[].content` | Type`string` | KravValgfrit | Værdier og grænser Gælder når: Tekstsamtale | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser | Standardfalse |

Kombinationer af inputmaterialer

**Tekst** · UTF8-tekst

`messages[].content`

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, messages |
| Parameter`material_types` | Kontrakttext |
| Parameter`messages` | Kontraktbeskedarray med strukturen role/content |
| Parameter`file_material` | Kontraktfaktisk UTF-8-dokument indsat som bogstavelig tekst; intet fil-ID udledes |
| Parameter`optional_controls` | Kontraktstream |
| Parameter`control_scope` | KontraktTekstsamtale; stream er en boolesk værdi og er som standard false. |
| Parameter`output_modalities` | Kontrakttext |
| Parameter`hosted_operations` | Kontraktfalse |
| Parameter`multimodal_input_binding` | Kontraktnull |

Metodealiaser: `/chat/completions`

Livscyklus: `synchronous_or_streamed`

Send det præcise model-ID med messages.

Kontekstlængde er ikke et outputloft.

En tekstfil kan levere bogstavelig tekst; billed-, lyd- og filobjektinput kræver en præcis binding.

### Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Ikke angivet Når hurtig tilstand er valgt

flex-tilstand

Ikke angivet Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Ailoot-takster

#### Priser efter konfiguration

| Konfiguration | Takstplan | Beløb |
| --- | --- | --- |
| KonfigurationGrundtakster for tokens | TakstplanGrundtakst | Beløb Input · Inputtokens **$0.000572** / 1K tokens Output · Outputtokens **$0.00572** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### 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":"qwen/qwen3-vl-235b-a22b-thinking","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="qwen/qwen3-vl-235b-a22b-thinking", 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"))
```

### Hent og gem resultater

#### Ailoot Ultra · OpenAI Chat

json eller SSE

##### Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar hvert valg og dets indhold, værktøjskald og ræsonnement. Saml i SSE deltaer efter valg-/værktøjsindeks, og bevar den endelige afslutningsårsag og forbrugsoplysningerne.

##### Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`choices[].index` | Typeinteger |
| Felt`choices[].message.content` | Typestring\|null |
| Felt`choices[].message.tool_calls` | Typetool\_call\[\] |
| Felt`choices[].message.reasoning_content` | Typestring |
| Felt`choices[].message.reasoning_details` | Typeobject\|array |
| Felt`choices[].finish_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |

### Aliaser

#### Modelaliaser

**Ailoot Ultra** [`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=chat), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=chat)

#### Aliaser for metodestier

`/chat/completions`

#### Relaterede kalder-ID’er

[`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=chat), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3-vl-235b-a22b-thinking`

[`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=messages)

Alibaba /`qwen/qwen3-vl-235b-a22b-thinking`

Model-ID

- `qwen/qwen3-vl-235b-a22b-thinking`
- `qwen3-vl-235b-a22b-thinking`

### Start

Qwen3-VL-235B-A22B-Thinking er Qwens mixture-of-experts-vision-language-model til ræsonnering over tekst, billeder og video. Brug Thinking-udgaven til STEM-spørgsmål, dokumentbaseret evidens, rumlige relationer, visuel kodning og videoanalyse med tidsstempler, med en oprindelig kontekst på 262,144 tokens.

Accepterede input

Tekst

Resultater

json · sse

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`json`, `sse`

Outputformat

JSON eller SSE

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser qwen/qwen3-vl-235b-a22b-thinking | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrævet | Værdier og grænser user, assistant | Standard— |
| Felt`messages[].content` | Type`string` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`max_tokens` | Type`integer` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser | Standardfalse |

Kombinationer af inputmaterialer

**Tekst** · UTF-8-tekst

`messages[].content som streng`

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, messages, max\_tokens |
| Parameter`optional_controls` | Kontraktstream |
| Parameter`material_types` | Kontrakttext |
| Parameter`text_file_material` | KontraktLæs det faktiske UTF-8-dokument, og indsæt teksten i det angivne input eller beskedens indholdsstreng. |

Livscyklus: `synchronous_or_streamed`

### Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Ikke angivet Når hurtig tilstand er valgt

flex-tilstand

Ikke angivet Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Ailoot-takster

#### Priser efter konfiguration

| Konfiguration | Takstplan | Beløb |
| --- | --- | --- |
| KonfigurationGrundtakster for tokens | TakstplanGrundtakst | Beløb Input · Inputtokens **$0.000572** / 1K tokens Output · Outputtokens **$0.00572** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### Ailoot Ultra · Anthropic Messages

Komplet minimalt requestbody i JSONcurl · brug dit UTF-8-dokumentPython · gem hele resultatet

```json
{
  "model": "qwen/qwen3-vl-235b-a22b-thinking",
  "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': 'qwen/qwen3-vl-235b-a22b-thinking', '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': 'qwen/qwen3-vl-235b-a22b-thinking', '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))
```

### Hent og gem resultater

#### Ailoot Ultra · Anthropic Messages

JSON eller SSE

##### Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle indholdsblokke, ræsonnementssignaturer og faktiske værktøjsbrugs-ID’er. Saml alle SSE-blokdeltaer; den første tekstblok er ikke hele outputtet.

##### Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`model` | Typestring |
| Felt`content[]` | Typetext\|thinking\|tool\_use\|other content block |
| Felt`stop_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |

### Aliaser

#### Modelaliaser

**Ailoot Ultra** [`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=messages), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=messages)

#### Aliaser for metodestier

`/chat/completions`

#### Relaterede kalder-ID’er

[`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=messages), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=messages)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen3-vl-235b-a22b-thinking`

[`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=chat)

Alibaba /`qwen3-vl-235b-a22b-thinking`

Model-ID

- `qwen/qwen3-vl-235b-a22b-thinking`
- `qwen3-vl-235b-a22b-thinking`

### Start

Qwen3-VL-235B-A22B-Thinking er Qwens mixture-of-experts-vision-language-model til ræsonnering over tekst, billeder og video. Brug Thinking-udgaven til STEM-spørgsmål, dokumentbaseret evidens, rumlige relationer, visuel kodning og videoanalyse med tidsstempler, med en oprindelig kontekst på 262,144 tokens.

Accepterede input

Tekst

Resultater

Tekst

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`text`

Outputformat

json eller SSE

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser qwen3-vl-235b-a22b-thinking | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrævet | Værdier og grænser Minimumsantal elementer: 1 | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrævet | Værdier og grænser Eksempler: system, user, assistant, tool, function Betingelser: Disse roller er eksplicit repræsenteret i kildekodens kompatibilitetstyper; modellens præcise rollesæt er fortsat modelspecifikt. Afhænger af modellen | Standard— |
| Felt`messages[].content` | Type`string\|content_part[]\|null` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`messages[].tool_calls` | Type`tool_call[]` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`messages[].tool_call_id` | Type`string` | KravValgfrit | Værdier og grænser Gælder når: role=tool; brug det faktisk returnerede ID | Standard— |
| Felt`messages[].name` | Type`string` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`messages[].reasoning_content` | Type`string` | KravValgfrit | Værdier og grænser Gælder når: Send det faktisk returnerede ræsonnement tilbage, når modellen bruger det | Standard— |
| Felt`messages[].reasoning_details` | Type`object\|array` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`max_tokens` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 Afhænger af modellen | Standard— |
| Felt`max_completion_tokens` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 Afhænger af modellen | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser | Standardfalse |
| Felt`stream_options.include_usage` | Type`boolean` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`temperature` | Type`number` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`top_p` | Type`number` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`stop` | Type`string\|string[]` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`tools` | Type`function_tool[]` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`tools[].type` | Type`string` | KravValgfrit | Værdier og grænser function Afhænger af modellen | Standard— |
| Felt`tools[].function.name` | Type`string` | KravPåkrævet | Værdier og grænser Gælder når: funktionsværktøj angivet | Standard— |
| Felt`tools[].function.description` | Type`string` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`tools[].function.parameters` | Type`JSON_schema` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`tool_choice` | Type`string\|object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`parallel_tool_calls` | Type`boolean` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`response_format` | Type`object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`reasoning_effort` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`reasoning` | Type`object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`service_tier` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`instructions` | Type`string` | KravValgfrit | Værdier og grænser Kompatibilitetsfelt | Standard— |
| Felt`functions` | Type`function[]` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`function_call` | Type`string\|object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`prompt_cache_options` | Type`object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`modalities` | Type`string[]` | KravValgfrit | Værdier og grænser text | Standard— |
| Felt`provider` | Type`object` | KravValgfrit | Værdier og grænser Betingelser: provider.options afvises på denne Ultra-tekstrute | Standard— |
| Felt`cache_control.ttl` | Type`string` | KravValgfrit | Værdier og grænser Betingelser: 1h afvises på de faktiske placeringer for promptcaching | Standard— |

Kombinationer af inputmaterialer

**Tekst** · UTF8-tekst

`messages[].content`

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, messages |
| Parameter`material_types` | Kontrakttext |
| Parameter`messages` | Kontraktbeskedarray med strukturen role/content |
| Parameter`file_material` | Kontraktfaktisk UTF-8-dokument indsat som bogstavelig tekst; intet fil-ID udledes |
| Parameter`optional_controls` | Kontraktstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parameter`control_scope` | Kontraktmodelspecifikt; brugerens funktionsværktøjer er forskellige fra hostede værktøjer |
| Parameter`output_modalities` | Kontrakttext |
| Parameter`hosted_operations` | Kontraktfalse |
| Parameter`multimodal_input_binding` | Kontraktnull |

Livscyklus: `synchronous_or_streamed`

Send det præcise model-ID med messages.

Kontekstlængde er ikke et outputloft.

En tekstfil kan levere bogstavelig tekst; billed-, lyd- og filobjektinput kræver en præcis binding.

### Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Ikke angivet Når hurtig tilstand er valgt

flex-tilstand

Ikke angivet Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Ailoot-takster

#### Priser efter konfiguration

| Konfiguration | Takstplan | Beløb |
| --- | --- | --- |
| KonfigurationGrundtakster for tokens | TakstplanGrundtakst | Beløb Input · Inputtokens **$0.000572** / 1K tokens Output · Outputtokens **$0.00572** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython-stream

```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": "qwen3-vl-235b-a22b-thinking", "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='qwen3-vl-235b-a22b-thinking',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='qwen3-vl-235b-a22b-thinking',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")
```

### Hent og gem resultater

#### Ailoot Ultra · OpenAI Chat

json eller SSE

##### Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar hvert valg og dets indhold, værktøjskald og ræsonnement. Saml i SSE deltaer efter valg-/værktøjsindeks, og bevar den endelige afslutningsårsag og forbrugsoplysningerne.

##### Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`choices[].index` | Typeinteger |
| Felt`choices[].message.content` | Typestring\|null |
| Felt`choices[].message.tool_calls` | Typetool\_call\[\] |
| Felt`choices[].message.reasoning_content` | Typestring |
| Felt`choices[].message.reasoning_details` | Typeobject\|array |
| Felt`choices[].finish_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |

### Aliaser

#### Modelaliaser

**Ailoot Ultra** [`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=chat), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=chat)

#### Aliaser for metodestier

`/chat/completions`

#### Relaterede kalder-ID’er

[`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=chat), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen3-vl-235b-a22b-thinking`

[`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=messages)

Alibaba /`qwen3-vl-235b-a22b-thinking`

Model-ID

- `qwen/qwen3-vl-235b-a22b-thinking`
- `qwen3-vl-235b-a22b-thinking`

### Start

Qwen3-VL-235B-A22B-Thinking er Qwens mixture-of-experts-vision-language-model til ræsonnering over tekst, billeder og video. Brug Thinking-udgaven til STEM-spørgsmål, dokumentbaseret evidens, rumlige relationer, visuel kodning og videoanalyse med tidsstempler, med en oprindelig kontekst på 262,144 tokens.

Accepterede input

Tekst

Resultater

json · sse

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`json`, `sse`

Outputformat

JSON eller SSE

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser qwen3-vl-235b-a22b-thinking | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrævet | Værdier og grænser user, assistant | Standard— |
| Felt`messages[].content` | Type`string` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`max_tokens` | Type`integer` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser | Standardfalse |

Kombinationer af inputmaterialer

**Tekst** · UTF-8-tekst

`messages[].content som streng`

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, messages, max\_tokens |
| Parameter`optional_controls` | Kontraktstream |
| Parameter`material_types` | Kontrakttext |
| Parameter`text_file_material` | KontraktLæs det faktiske UTF-8-dokument, og indsæt teksten i det angivne input eller beskedens indholdsstreng. |

Livscyklus: `synchronous_or_streamed`

### Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Ikke angivet Når hurtig tilstand er valgt

flex-tilstand

Ikke angivet Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Ailoot-takster

#### Priser efter konfiguration

| Konfiguration | Takstplan | Beløb |
| --- | --- | --- |
| KonfigurationGrundtakster for tokens | TakstplanGrundtakst | Beløb Input · Inputtokens **$0.000572** / 1K tokens Output · Outputtokens **$0.00572** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### Ailoot Ultra · Anthropic Messages

Komplet minimalt requestbody i JSONcurl · brug dit UTF-8-dokumentPython · gem hele resultatet

```json
{
  "model": "qwen3-vl-235b-a22b-thinking",
  "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': 'qwen3-vl-235b-a22b-thinking', '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': 'qwen3-vl-235b-a22b-thinking', '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))
```

### Hent og gem resultater

#### Ailoot Ultra · Anthropic Messages

JSON eller SSE

##### Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle indholdsblokke, ræsonnementssignaturer og faktiske værktøjsbrugs-ID’er. Saml alle SSE-blokdeltaer; den første tekstblok er ikke hele outputtet.

##### Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`model` | Typestring |
| Felt`content[]` | Typetext\|thinking\|tool\_use\|other content block |
| Felt`stop_reason` | Typestring\|null |
| Felt`usage` | Typeobject |

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |

### Aliaser

#### Modelaliaser

**Ailoot Ultra** [`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=messages), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=messages)

#### Aliaser for metodestier

`/chat/completions`

#### Relaterede kalder-ID’er

[`qwen/qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen%2Fqwen3-vl-235b-a22b-thinking&fmt=messages), [`qwen3-vl-235b-a22b-thinking`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-235b-a22b-thinking&route=Ultra&caller=qwen3-vl-235b-a22b-thinking&fmt=messages)

FAQ · qwen/qwen3-vl-235b-a22b-thinking

Hvilke input og resultater er tilgængelige?

`POST /v1/chat/completions` · `qwen/qwen3-vl-235b-a22b-thinking`: `text` → `text` `POST /v1/messages` · `qwen/qwen3-vl-235b-a22b-thinking`: `text` → `json`, `sse` `POST /v1/chat/completions` · `qwen3-vl-235b-a22b-thinking`: `text` → `text` `POST /v1/messages` · `qwen3-vl-235b-a22b-thinking`: `text` → `json`, `sse`

Hvilke felter bruger anmodningen?

`POST /v1/chat/completions` · `qwen/qwen3-vl-235b-a22b-thinking`: `model`, `messages`, `stream` `POST /v1/messages` · `qwen/qwen3-vl-235b-a22b-thinking`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/chat/completions` · `qwen3-vl-235b-a22b-thinking`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen3-vl-235b-a22b-thinking`: `model`, `messages`, `max_tokens`, `stream`

Hvilke grænser gælder?

`POST /v1/chat/completions` · `qwen/qwen3-vl-235b-a22b-thinking`: `messages.min_items`: `1` `POST /v1/chat/completions` · `qwen3-vl-235b-a22b-thinking`: `messages.min_items`: `1`

Tilslut Ailoot til Claude Code, OpenCode, Hermes eller din egen applikation.

## Virksomheden og dens projektportefølje

Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.

## Køb tokens med rabat.

Abonnementsrabat til regelmæssigt arbejde. Rabatkoder giver op til 50% på tokenkøb.

Abonnement

Vælg et abonnement med rabat til dine regelmæssige anmodninger.

Rabatkode på op til 50%

Indtast koden ved købet. Prisen genberegnes efter den aktuelle kampagne.

Udgifter i historikken

Model, tokens og beløb gemmes for hver anmodning.

[Vælg abonnement](https://ailoot.ai/docs/da/billing/subscriptions/) · [Se modelpriser](https://ailoot.ai/models/da/)

## Tilslut API’et til produktet, du sælger.

SaaS, apps og bots efter Ailoots tilbudsvilkår og licensaftale. Anmod om en forhandlerlicens til videresalg.

Kommerciel applikation

Byg generering af tekst, billeder, video og lyd ind i tjenestens betalte funktioner.

Licens til forhandlere

Send projektbeskrivelse og adgangsmodel. Bed om skriftlige vilkår for anvendelse og videresalg.

Dokumenter på websitet

Tilbudsvilkår, licensaftale og politik for behandling af data kan læses før tilslutning.

[Anmod om forhandlerlicens](mailto:support@ailoot.ai) · [Tilbudsvilkår og licensaftale](https://ailoot.ai/legal/offer?lang=da)

## Ailoot · Virksomheden og dens projektportefølje





Ailoot bygger på solid driftserfaring, en stor kundebase, stabil service og løbende kontrol af KPI.





Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.





Ailoot bruger denne driftserfaring til API-adgang til AI-funktioner i kundernes produkter, agenter, applikationer og automatiseringer.
