Source: https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/
Canonical: https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/
Language: nl

# Qwen: Qwen3 Coder Flash

[Markdown](https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/index.md) · [JSON](https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/facts.json)

## [Qwen: Qwen3 Coder Flash](https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/)

Qwen3-Coder-Flash is Qwens tekstmodel voor programmeren, repositorybegrip en toolinteractie over meerdere beurten. De specificatie noemt een context van één miljoen tokens, maximaal 997.952 invoertokens en maximaal 65.536 uitvoertokens, met toolfuncties binnen het bereik van het implementatieprofiel van de producent.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/#method-1)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen3-coder-flash`](https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/#method-2)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen3-coder-flash`](https://ailoot.ai/models/nl/qwen-qwen3-coder-flash/#method-3)

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

Overzicht: programmeren met de repository als uitgangspunt

Qwen3-Coder-Flash is een op Qwen3 gebaseerd model voor codegeneratie. Volgens de maker erft het programmeeragentfuncties van Qwen3-Coder-Plus en is het geoptimaliseerd voor begrip op repositoryniveau, stabiele toolaanroepen en interactie over meerdere beurten. De gedocumenteerde invoer en uitvoer zijn tekst. Gebruik het voor een programmeertaak met aangeleverde projectcontext en een concreet resultaat, zoals een voorgestelde patch, functie of uitleg.

De producent beschrijft qwen3-coder-flash momenteel als functioneel gelijkwaardig aan qwen3-coder-flash-2025-07-28 en behoudt die gedateerde snapshot als een benoemde versie. Behoud de gevraagde identiteit wanneer je de modelkeuze vastlegt. De pagina voor dit exacte model stelt niet het aantal parameters of de identiteit van de gewichten van een open Coder-checkpoint vast; de naam Flash mag daarom niet worden omgezet in een onbewezen claim over omvang of architectuur.

Repositoryinformatie voorbereiden

Geef de relevante modules, interfaces en eisen en een invoer die het besproken gedrag laat zien. Vraag om een implementatievoorstel geordend per betrokken component en vraag daarna het bewerkbare resultaat los van het commentaar. Voeg voor defectanalyse de waargenomen fout of uitvoer en het verwachte gedrag toe. Beschrijf voor een functionaliteit de interacties en voorwaarden waaraan het resultaat moet voldoen.

Een nuttig antwoord kan de diagnose, voorgestelde wijziging en benodigde beoordelingscontroles tonen. Gaat de taak over een groot project, behoud dan bestands- en functie-identificatoren in het aangeleverde materiaal, zodat de uitleg naar zijn onderbouwing kan verwijzen. Beoordeel de voorgestelde wijzigingen aan de hand van de aangeleverde bestanden, het verwachte gedrag en de resultaten van aangesloten controles.

Tools over meerdere beurten en feedback

De maker benadrukt toolinteractie over meerdere beurten. Een aangesloten workflow kan inspectie- of uitvoeringstools aanbieden en echte waarnemingen aan het model teruggeven. Geef de toegestane acties en waarneembare voltooiingscriteria aan. Geef bij een mislukte controle de echte fout en relevante code in plaats van alleen om een nieuwe poging te vragen. Het model kan zijn voorgestelde werk met die feedback herzien; de toepassing voert de acties uit.

De mogelijkhedenmatrix ondersteunt Function Calling in Alibaba’s profiel voor China (Beijing) en markeert dit als niet ondersteund in Singapore, Duitsland (Frankfurt) en de VS (Virginia). Toolbeschikbaarheid is dus voorwaardelijk, geen belofte op grond van alleen de modelnaam. Een tekstvoorstel, toolverzoek en voltooide handeling zouden in het eindrapport te onderscheiden moeten blijven. Geef een eindrapport terug dat het codevoorstel, de gevraagde toolaanroepen en de echte toolresultaten scheidt.

Mogelijkheden en resultaatopmaak

Afgedwongen gestructureerde uitvoer en ingebouwd zoeken op het web zijn op de specifieke modelpagina als niet ondersteund gemarkeerd. Een prompt kan om een tabel of JSON-vormige tekst vragen, maar creëert daarmee geen contract dat een schema afdwingt. Een programmeeragent kan actuele informatie van een door de toepassing geleverde tool ontvangen zonder dat het model zelf een ingebouwde zoekfunctie heeft.

Prefix Completion is niet ondersteund in China (Beijing) en wel ondersteund in Singapore, Duitsland (Frankfurt) en de VS (Virginia). Context Caching is voor de ongedateerde alias in alle vier de profielen ondersteund, terwijl de afzonderlijk vermelde snapshot van 28 juli dit als niet ondersteund markeert. Beide edities markeren batchinferentie en fine-tuning als niet ondersteund. Vraag om een eindresultaat dat gemakkelijk te inspecteren is en behoud echte toolwaarnemingen wanneer een rapport beweert dat iets is gecontroleerd.

Context- en uitvoerlimieten

De specificatie geeft een contextvenster van 1.000.000 tokens, een maximale invoerlengte van 997.952 tokens en een maximale uitvoerlengte van 65.536 tokens. Dit zijn afzonderlijke limieten; neem niet aan dat de grootste invoer en grootste uitvoer tegelijkertijd binnen de context passen. Projecttekst, geschiedenis, toolresultaten en gegenereerde broncode hebben ruimte nodig binnen het werkelijke verzoekbudget.

Een grote context kan meer repositoryinformatie in één taak bijeenbrengen. Het blijft nuttig om niet-relevante gegenereerde bestanden, herhaald materiaal en irrelevante modules te verwijderen en de definities en interfaces te behouden waarvan de wijziging afhankelijk is. Vraag bij een omvangrijk resultaat expliciet om de benodigde bestanden of functies en reserveer genoeg antwoordruimte. Houd codebestanden en toelichtingen gescheiden, zodat beoordelaars de voorgestelde wijzigingen kunnen inspecteren.

Praktisch resultaat en wezenlijke beperkingen

Vraag voor een repositorywijziging om een patch met betrokken bestanden, aannames en echte resultaten van aangesloten controles. Geef voor een algoritme de invoerbeperkingen en verwachte uitvoer aan voordat je om code vraagt. De gedocumenteerde invoer is tekst, dus een visuele referentie of opname heeft een passende afzonderlijke weergave nodig wanneer de taak die als onderbouwing gebruikt.

Inspecteer gegenereerde syntaxis, interfaces en randgevallen in de ontwikkelworkflow. Een aannemelijke uitleg of een toolgerichte modelbeschrijving is geen bewijs dat code succesvol is uitgevoerd. Het praktische resultaat is een beoordeelbaar tekst- of codeproduct gekoppeld aan het aangeleverde repositorymateriaal, met behoud van de exacte Flash-identiteit, producentlimieten en het voorwaardelijke toolcontract.

Praktische taak

### Praktische taak

Technisch voorbeeld in het Engels

```
Keep repository paths portable

In config.py, DATA_PATH = 'data/items.csv'. In runner.py, open(DATA_PATH) fails when the CLI is launched outside the repository directory. Propose a focused fix that anchors the resource path to the module location rather than the current working directory. Preserve the public CLI arguments and include a regression scenario launched from another directory.
```

#### Verwacht resultaat

```
A small coordinated code proposal for the named modules and a regression scenario for an unrelated working directory.
```

#### Resultaat controleren

```
The proposed path does not depend on the launch directory and does not change the public CLI arguments.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3-coder-flash`

[`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=chat)

Alibaba /`qwen/qwen3-coder-flash`

Model-ID

- `qwen/qwen3-coder-flash`
- `qwen3-coder-flash`

### Aan de slag

Qwen3-Coder-Flash is Qwens tekstmodel voor programmeren, repositorybegrip en toolinteractie over meerdere beurten. De specificatie noemt een context van één miljoen tokens, maximaal 997.952 invoertokens en maximaal 65.536 uitvoertokens, met toolfuncties binnen het bereik van het implementatieprofiel van de producent.

Toegestane invoer

Tekst

Resultaten

Tekst

### Beschikbaar in Ailoot · invoer en methoden

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

Invoertypen

`text`

Uitvoertypen

`text`

Uitvoerformaat

json of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten qwen/qwen3-coder-flash | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten Voorbeelden: system, user, assistant, tool, function Voorwaarden: Deze rollen worden expliciet weergegeven door compatibiliteitstypen in de broncode; de exacte rollenverzameling van het model blijft modelspecifiek. Afhankelijk van het model | Standaard— |
| Veld`messages[].content` | Type`string\|content_part[]\|null` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].tool_calls` | Type`tool_call[]` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].tool_call_id` | Type`string` | VereisteOptioneel | Waarden en limieten Geldt wanneer: role=tool; gebruik het werkelijk teruggegeven ID | Standaard— |
| Veld`messages[].name` | Type`string` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].reasoning_content` | Type`string` | VereisteOptioneel | Waarden en limieten Geldt wanneer: Stuur de werkelijk teruggegeven redeneringen terug wanneer dit model ze gebruikt | Standaard— |
| Veld`messages[].reasoning_details` | Type`object\|array` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`max_tokens` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Afhankelijk van het model | Standaard— |
| Veld`max_completion_tokens` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Afhankelijk van het model | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |
| Veld`stream_options.include_usage` | Type`boolean` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`temperature` | Type`number` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`top_p` | Type`number` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`stop` | Type`string\|string[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`tools` | Type`function_tool[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`tools[].type` | Type`string` | VereisteOptioneel | Waarden en limieten function Afhankelijk van het model | Standaard— |
| Veld`tools[].function.name` | Type`string` | VereisteVereist | Waarden en limieten Geldt wanneer: functietool opgegeven | Standaard— |
| Veld`tools[].function.description` | Type`string` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`tools[].function.parameters` | Type`JSON_schema` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`tool_choice` | Type`string\|object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`parallel_tool_calls` | Type`boolean` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`response_format` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`reasoning_effort` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`reasoning` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`service_tier` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`instructions` | Type`string` | VereisteOptioneel | Waarden en limieten Compatibiliteitsveld | Standaard— |
| Veld`functions` | Type`function[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`function_call` | Type`string\|object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`prompt_cache_options` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`modalities` | Type`string[]` | VereisteOptioneel | Waarden en limieten text | Standaard— |
| Veld`provider` | Type`object` | VereisteOptioneel | Waarden en limieten Voorwaarden: provider.options wordt op deze Ultra-tekstroute geweigerd | Standaard— |
| Veld`cache_control.ttl` | Type`string` | VereisteOptioneel | Waarden en limieten Voorwaarden: 1h wordt op de daadwerkelijke locaties voor promptcaching geweigerd | Standaard— |

Combinaties van invoermaterialen

**Tekst** · UTF8-tekst

`messages[].content`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages |
| Parameter`material_types` | Contracttext |
| Parameter`messages` | Contractberichtenarray met de structuur role/content |
| Parameter`file_material` | Contractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid |
| Parameter`optional_controls` | Contractstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parameter`control_scope` | Contractmodelspecifiek; functietools van de gebruiker verschillen van gehoste tools |
| Parameter`output_modalities` | Contracttext |
| Parameter`hosted_operations` | Contractfalse |
| Parameter`multimodal_input_binding` | Contractnull |

Levenscyclus: `synchronous_or_streamed`

Stuur het exacte model-ID mee met messages.

Contextlengte is geen uitvoerlimiet.

Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Standaardtarief Wanneer de snelle modus is geselecteerd

Flexmodus

Standaardtarief Wanneer de modus flex is geselecteerd

Maximale redeneerinspanning

Standaardtarief Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt

#### Ailoot-tarieven

#### Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
| --- | --- | --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 1 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en met32.000 | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 2 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan32.000 | Contexttokens, tot en met128.000 | Kosten Invoer · Invoertokens **$0.00065** / 1K tokens Uitvoer · Uitvoertokens **$0.00325** / 1K tokens Invoer · Cache lezen **$0.00013** / 1K tokens Invoer · Cache schrijven **$0.0008125** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieVerzoeklengtecategorie 3 | Tariefstaffel— | Contexttokens, meer dan128.000 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00104** / 1K tokens Uitvoer · Uitvoertokens **$0.0052** / 1K tokens Invoer · Cache lezen **$0.000208** / 1K tokens Invoer · Cache schrijven **$0.0013** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl/billing/reserve/)

### Voorbeeldverzoeken

#### 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": "qwen/qwen3-coder-flash", "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='qwen/qwen3-coder-flash',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='qwen/qwen3-coder-flash',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")
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · OpenAI Chat

json of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

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

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

**Ailoot Ultra** [`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=chat), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=chat)

#### Aliasnamen voor methodepaden

`/chat/completions`

#### Gerelateerde aanroeper-ID’s

[`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=chat), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3-coder-flash`

[`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=messages)

Alibaba /`qwen/qwen3-coder-flash`

Model-ID

- `qwen/qwen3-coder-flash`
- `qwen3-coder-flash`

### Aan de slag

Qwen3-Coder-Flash is Qwens tekstmodel voor programmeren, repositorybegrip en toolinteractie over meerdere beurten. De specificatie noemt een context van één miljoen tokens, maximaal 997.952 invoertokens en maximaal 65.536 uitvoertokens, met toolfuncties binnen het bereik van het implementatieprofiel van de producent.

Toegestane invoer

Tekst

Resultaten

json · sse

### Beschikbaar in Ailoot · invoer en methoden

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

Invoertypen

`text`

Uitvoertypen

`json`, `sse`

Uitvoerformaat

JSON of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten qwen/qwen3-coder-flash | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten user, assistant | Standaard— |
| Veld`messages[].content` | Type`string` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`max_tokens` | Type`integer` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |

Combinaties van invoermaterialen

**Tekst** · UTF-8-tekst

`messages[].content als tekenreeks`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages, max\_tokens |
| Parameter`optional_controls` | Contractstream |
| Parameter`material_types` | Contracttext |
| Parameter`text_file_material` | ContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht. |

Levenscyclus: `synchronous_or_streamed`

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Standaardtarief Wanneer de snelle modus is geselecteerd

Flexmodus

Standaardtarief Wanneer de modus flex is geselecteerd

Maximale redeneerinspanning

Standaardtarief Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt

#### Ailoot-tarieven

#### Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
| --- | --- | --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 1 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en met32.000 | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 2 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan32.000 | Contexttokens, tot en met128.000 | Kosten Invoer · Invoertokens **$0.00065** / 1K tokens Uitvoer · Uitvoertokens **$0.00325** / 1K tokens Invoer · Cache lezen **$0.00013** / 1K tokens Invoer · Cache schrijven **$0.0008125** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieVerzoeklengtecategorie 3 | Tariefstaffel— | Contexttokens, meer dan128.000 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00104** / 1K tokens Uitvoer · Uitvoertokens **$0.0052** / 1K tokens Invoer · Cache lezen **$0.000208** / 1K tokens Invoer · Cache schrijven **$0.0013** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · Anthropic Messages

Volledige minimale JSON-bodycurl · gebruik je UTF-8-documentPython · sla het volledige resultaat op

```json
{
  "model": "qwen/qwen3-coder-flash",
  "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-coder-flash', '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-coder-flash', '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))
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · Anthropic Messages

JSON of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

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

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

**Ailoot Ultra** [`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=messages), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=messages)

#### Aliasnamen voor methodepaden

`/chat/completions`

#### Gerelateerde aanroeper-ID’s

[`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=messages), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=messages)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen3-coder-flash`

[`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=chat)

Alibaba /`qwen3-coder-flash`

Model-ID

- `qwen/qwen3-coder-flash`
- `qwen3-coder-flash`

### Aan de slag

Qwen3-Coder-Flash is Qwens tekstmodel voor programmeren, repositorybegrip en toolinteractie over meerdere beurten. De specificatie noemt een context van één miljoen tokens, maximaal 997.952 invoertokens en maximaal 65.536 uitvoertokens, met toolfuncties binnen het bereik van het implementatieprofiel van de producent.

Toegestane invoer

Tekst

Resultaten

Tekst

### Beschikbaar in Ailoot · invoer en methoden

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

Invoertypen

`text`

Uitvoertypen

`text`

Uitvoerformaat

json of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten qwen3-coder-flash | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`messages[].content` | Type`string` | VereisteOptioneel | Waarden en limieten Geldt wanneer: Tekstgesprek | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |

Combinaties van invoermaterialen

**Tekst** · UTF8-tekst

`messages[].content`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages |
| Parameter`material_types` | Contracttext |
| Parameter`messages` | Contractberichtenarray met de structuur role/content |
| Parameter`file_material` | Contractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid |
| Parameter`optional_controls` | Contractstream |
| Parameter`control_scope` | ContractTekstgesprek; stream is een booleaanse waarde en is standaard false. |
| Parameter`output_modalities` | Contracttext |
| Parameter`hosted_operations` | Contractfalse |
| Parameter`multimodal_input_binding` | Contractnull |

Methodealiasnamen: `/chat/completions`

Levenscyclus: `synchronous_or_streamed`

Stuur het exacte model-ID mee met messages.

Contextlengte is geen uitvoerlimiet.

Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Standaardtarief Wanneer de snelle modus is geselecteerd

Flexmodus

Standaardtarief Wanneer de modus flex is geselecteerd

Maximale redeneerinspanning

Standaardtarief Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt

#### Ailoot-tarieven

#### Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
| --- | --- | --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 1 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en met32.000 | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 2 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan32.000 | Contexttokens, tot en met128.000 | Kosten Invoer · Invoertokens **$0.00065** / 1K tokens Uitvoer · Uitvoertokens **$0.00325** / 1K tokens Invoer · Cache lezen **$0.00013** / 1K tokens Invoer · Cache schrijven **$0.0008125** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieVerzoeklengtecategorie 3 | Tariefstaffel— | Contexttokens, meer dan128.000 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00104** / 1K tokens Uitvoer · Uitvoertokens **$0.0052** / 1K tokens Invoer · Cache lezen **$0.000208** / 1K tokens Invoer · Cache schrijven **$0.0013** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl/billing/reserve/)

### Voorbeeldverzoeken

#### 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":"qwen3-coder-flash","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="qwen3-coder-flash", 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"))
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · OpenAI Chat

json of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

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

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

**Ailoot Ultra** [`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=chat), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=chat)

#### Aliasnamen voor methodepaden

`/chat/completions`

#### Gerelateerde aanroeper-ID’s

[`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=chat), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen3-coder-flash`

[`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=messages)

Alibaba /`qwen3-coder-flash`

Model-ID

- `qwen/qwen3-coder-flash`
- `qwen3-coder-flash`

### Aan de slag

Qwen3-Coder-Flash is Qwens tekstmodel voor programmeren, repositorybegrip en toolinteractie over meerdere beurten. De specificatie noemt een context van één miljoen tokens, maximaal 997.952 invoertokens en maximaal 65.536 uitvoertokens, met toolfuncties binnen het bereik van het implementatieprofiel van de producent.

Toegestane invoer

Tekst

Resultaten

json · sse

### Beschikbaar in Ailoot · invoer en methoden

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

Invoertypen

`text`

Uitvoertypen

`json`, `sse`

Uitvoerformaat

JSON of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten qwen3-coder-flash | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten user, assistant | Standaard— |
| Veld`messages[].content` | Type`string` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`max_tokens` | Type`integer` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |

Combinaties van invoermaterialen

**Tekst** · UTF-8-tekst

`messages[].content als tekenreeks`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages, max\_tokens |
| Parameter`optional_controls` | Contractstream |
| Parameter`material_types` | Contracttext |
| Parameter`text_file_material` | ContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht. |

Levenscyclus: `synchronous_or_streamed`

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Standaardtarief Wanneer de snelle modus is geselecteerd

Flexmodus

Standaardtarief Wanneer de modus flex is geselecteerd

Maximale redeneerinspanning

Standaardtarief Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt

#### Ailoot-tarieven

#### Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
| --- | --- | --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 1 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en met32.000 | Kosten Invoer · Invoertokens **$0.00039** / 1K tokens Uitvoer · Uitvoertokens **$0.00195** / 1K tokens Invoer · Cache lezen **$0.000078** / 1K tokens Invoer · Cache schrijven **$0.0004875** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 2 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan32.000 | Contexttokens, tot en met128.000 | Kosten Invoer · Invoertokens **$0.00065** / 1K tokens Uitvoer · Uitvoertokens **$0.00325** / 1K tokens Invoer · Cache lezen **$0.00013** / 1K tokens Invoer · Cache schrijven **$0.0008125** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieVerzoeklengtecategorie 3 | Tariefstaffel— | Contexttokens, meer dan128.000 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00104** / 1K tokens Uitvoer · Uitvoertokens **$0.0052** / 1K tokens Invoer · Cache lezen **$0.000208** / 1K tokens Invoer · Cache schrijven **$0.0013** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · Anthropic Messages

Volledige minimale JSON-bodycurl · gebruik je UTF-8-documentPython · sla het volledige resultaat op

```json
{
  "model": "qwen3-coder-flash",
  "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-coder-flash', '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-coder-flash', '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))
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · Anthropic Messages

JSON of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

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

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

**Ailoot Ultra** [`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=messages), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=messages)

#### Aliasnamen voor methodepaden

`/chat/completions`

#### Gerelateerde aanroeper-ID’s

[`qwen/qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen%2Fqwen3-coder-flash&fmt=messages), [`qwen3-coder-flash`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3-coder-flash&route=Ultra&caller=qwen3-coder-flash&fmt=messages)

FAQ · Qwen: Qwen3 Coder Flash

Welke invoer en resultaten zijn beschikbaar?

`POST /v1/chat/completions` · `qwen/qwen3-coder-flash`: `text` → `text` `POST /v1/messages` · `qwen/qwen3-coder-flash`: `text` → `json`, `sse` `POST /v1/chat/completions` · `qwen3-coder-flash`: `text` → `text` `POST /v1/messages` · `qwen3-coder-flash`: `text` → `json`, `sse`

Welke velden gebruikt het verzoek?

`POST /v1/chat/completions` · `qwen/qwen3-coder-flash`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen/qwen3-coder-flash`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/chat/completions` · `qwen3-coder-flash`: `model`, `messages`, `stream` `POST /v1/messages` · `qwen3-coder-flash`: `model`, `messages`, `max_tokens`, `stream`

Welke limieten gelden?

`POST /v1/chat/completions` · `qwen/qwen3-coder-flash`: `messages.min_items`: `1` `POST /v1/chat/completions` · `qwen3-coder-flash`: `messages.min_items`: `1`

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

## Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

## Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement

Kies een abonnement met korting voor je terugkerende verzoeken.

Promotiecode tot 50%

Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.

Kosten in de geschiedenis

Model, tokens en bedrag worden per verzoek bewaard.

[Kies een abonnement](https://ailoot.ai/docs/nl/billing/subscriptions/) · [Bekijk modelprijzen](https://ailoot.ai/models/nl/)

## Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie

Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.

Resellerlicentie

Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.

Documenten op de site

Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

[Vraag een resellerlicentie aan](mailto:support@ailoot.ai) · [Aanbodvoorwaarden en licentieovereenkomst](https://ailoot.ai/legal/offer?lang=nl)

## Ailoot · Het bedrijf en zijn projectenportefeuille





Ailoot bouwt op opgebouwde operationele ervaring, een groot klantenbestand, een stabiele dienst en doorlopende KPI-controle.





Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.





Ailoot gebruikt die operationele ervaring voor API-toegang tot AI-functies in klantproducten, agents, applicaties en automatiseringen.
