Source: https://ailoot.ai/models/nl/qwen-qwen3-5-plus-20260420/
Canonical: https://ailoot.ai/models/nl/qwen-qwen3-5-plus-20260420/
Language: nl

# Qwen: Qwen3.5 Plus 2026-04-20

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

## [Qwen: Qwen3.5 Plus 2026-04-20](https://ailoot.ai/models/nl/qwen-qwen3-5-plus-20260420/)

Qwen3.5 Plus 2026-04-20 is de vaste snapshot van 20 april van Qwens visuele Plus-taalmodel. De maker benadrukt verbeterd agentisch programmeren met behoud van redeneren, kennis en werk met lange context, voor complexe taken die aangeleverde tekst of visueel materiaal met een concreet eindproduct combineren.

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

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.

De vaste Plus-snapshot van 20 april

Qwen3.5 Plus 2026-04-20 is de snapshot van 20 april 2026 van Qwens native visuele Plus-taalmodelfamilie. De releaseaankondiging van de maker vermeldt een aanzienlijke verbetering in agentisch programmeren ten opzichte van de snapshot van 15 februari, naast sterkere inferentie-efficiëntie en behoud van kennis, redeneren en mogelijkheden voor lange context. Houd deze gedateerde editie gescheiden van een veranderlijke Plus-naam en van het open checkpoint Qwen3.5-397B-A17B.

De familie accepteert tekst met afbeeldingen of video en produceert tekstuele resultaten. Dat bereik ondersteunt een ontwikkeltaak op basis van een schermafbeelding, een vraag over een technisch schema of een uitleg op basis van documenten. De snapshotnaam legt op zichzelf niet het parameteraantal, geactiveerde experts of de exacte architectuur van het open checkpoint vast, dus die cijfers worden hier niet aan deze editie toegekend.

Agentisch programmeren

De belangrijkste wijziging van de release is krachtiger programmeren in een agentworkflow. Lever de projecteisen, relevante bestanden of fragmenten, bestaand gedrag en het bij voltooiing verwachte eindproduct aan. Neem voor een taak van schermafbeelding naar interface de visuele referentie en functionele beperkingen op en vraag vervolgens om bewerkbare broncode en uitleg van het beoogde gedrag. Benoem voor een repositorywijziging de betrokken functie en invoer die het probleem aantoont en vraag vervolgens om een patch en de controles die nodig zijn om die te beoordelen.

Een programmeerworkflow met meerdere stappen profiteert van werkelijke feedback: inspectieresultaten, waargenomen fouten en beoordelingsbevindingen kunnen tijdens het werk naar het model worden teruggestuurd. De toepassing bestuurt de tools en voert toegestane handelingen uit. Vraag om een verslag van wat is voorgesteld, wat is waargenomen en wat onopgelost blijft.

Kennis en redeneren

De maker zegt dat de snapshot sterke kennis en redeneermogelijkheden behoudt en tegelijk agentwerk verbetert. Scheid voor een analysetaak de bronfeiten van aannames en specificeer de gezochte conclusie. Vraag om ondersteunende passages, waarden of code-identificaties zodat het resultaat kan worden gecontroleerd. Lever voor een professioneel verslag het relevante materiaal en de gewenste paragrafen aan, in plaats van erop te vertrouwen dat het model de ontbrekende context van een privéproject kent.

De Qwen3.5 Plus-familie is gedocumenteerd als hybride denken, met denken standaard ingeschakeld. De familieworkflow kan een direct antwoord produceren wanneer denken is uitgeschakeld, terwijl redeneerinhoud en eindantwoorden afzonderlijk worden behandeld. De interface van de exacte aprilsnapshot moet haar eigen gedocumenteerde instellingen gebruiken; een beschrijving van een familiemodus belooft niet dat elke toepassing een bepaalde parameter aanbiedt.

Werk met lange context

Alibaba's specifieke tabel voor de snapshot van 20 april geeft een context van 1,000,000 tokens, maximale invoer van 991,808 tokens voor directe antwoorden of 983,616 voor denken en maximale uitvoer van 65,536 in beide modi. Neem de native of uitgebreide contextgetallen van het open Qwen3.5-checkpoint niet over als harde limiet voor deze Plus-snapshot. Bereid lange invoer voor met documentgrenzen, pagina-identificaties, codepaden en de definities die de taak vereist.

Een nuttig verzoek kan vragen om een tabel die eisen aan implementatie koppelt, een documentvergelijking of een verslag dat voor elke conclusie het bewijs benoemt. Houd ongerelateerd materiaal buiten de prompt en laat ruimte voor het antwoord. Lange-contextmogelijkheden helpen meer bewijs bijeen te brengen; ze garanderen geen volledige herinnering en vervangen geen duidelijke vraag.

Taakvoorbereiding voor productiegebruik

De fabrikant positioneert deze editie voor complexe agents, programmeerworkflows en gebruik dat op doorvoer is gericht. Definieer het waarneembare resultaat van de taak: de te produceren bestanden, het te implementeren gedrag of de uit te leggen bevindingen. Onderscheid waar tools gekoppeld zijn hun werkelijke geretourneerde resultaten van tekstvoorstellen van het model. Stel het eindformaat zo in dat het resultaat naar een beoordelings- of toepassingsworkflow kan worden overgebracht en controleer syntaxis en inhoud afzonderlijk.

De specifieke snapshottabel vermeldt function calling, gestructureerde uitvoer, zoeken op het web, prefix completion en contextcaching; batchinferentie en fine-tuning worden niet ondersteund. Dit zijn functies van de producentworkflow en mediabestandslimieten blijven een afzonderlijke specificatie. Een verzoek om tekst in JSON-vorm, code-uitvoering of bronretrieval moet daarom een gevraagde workflow blijven en geen veronderstelde native garantie worden. De door de maker beschreven verbetering is kwalitatief; die mag geen onvoorwaardelijke belofte voor latentie of doorvoer worden.

Praktische beperkingen

Bewaar de exacte gedateerde Plus-editie en het bronmateriaal bij het resultaat wanneer u latere revisies vergelijkt. Controleer gegenereerde code, berekeningen en geëxtraheerde visuele details aan de hand van de aangeleverde bron en geef onopgelost bewijs expliciet terug. Het nuttige resultaat is een concreet tekstueel eindproduct dat aan de taakeisen is gekoppeld, met de exacte gedateerde Plus-identiteit en de gedocumenteerde producentlimieten voor invoer, uitvoer en tools expliciet behouden.

Praktische taak

### Praktische taak

Technisch voorbeeld in het Engels

```
Repair an asynchronous search race

A search field calls fetchResults(query).then(render) after each keystroke. Results for an older query sometimes arrive after the latest query and overwrite the screen. Propose a focused JavaScript change that renders only the newest request's result. Preserve the existing fetchResults and render interfaces, handle request failures and describe a reversed-response-order test.
```

#### Verwacht resultaat

```
A code proposal, a brief request-order explanation and a deterministic out-of-order response test.
```

#### Resultaat controleren

```
Check an older response cannot overwrite the latest result, including after a failed newer request.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3.5-plus-20260420`

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

Alibaba /`qwen/qwen3.5-plus-20260420`

### Aan de slag

Qwen3.5 Plus 2026-04-20 is de vaste snapshot van 20 april van Qwens visuele Plus-taalmodel. De maker benadrukt verbeterd agentisch programmeren met behoud van redeneren, kennis en werk met lange context, voor complexe taken die aangeleverde tekst of visueel materiaal met een concreet eindproduct combineren.

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.5-plus-20260420 | 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.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.0036** / 1K tokens Invoer · Cache lezen **—** / 1K tokens Invoer · Cache schrijven **$0.00075** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 1 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en met256.000 | Kosten Invoer · Invoertokens **$0.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.0036** / 1K tokens Invoer · Cache lezen **—** / 1K tokens Invoer · Cache schrijven **$0.00075** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 2 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan256.000 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00075** / 1K tokens Uitvoer · Uitvoertokens **$0.0045** / 1K tokens Invoer · Cache lezen **—** / 1K tokens Invoer · Cache schrijven **$0.0009375** / 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.5-plus-20260420", "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.5-plus-20260420',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.5-plus-20260420',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.5-plus-20260420`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3.5-plus-20260420&route=Ultra&caller=qwen%2Fqwen3.5-plus-20260420&fmt=chat)

#### Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

#### Gerelateerde aanroeper-ID’s

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

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3.5-plus-20260420`

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

Alibaba /`qwen/qwen3.5-plus-20260420`

### Aan de slag

Qwen3.5 Plus 2026-04-20 is de vaste snapshot van 20 april van Qwens visuele Plus-taalmodel. De maker benadrukt verbeterd agentisch programmeren met behoud van redeneren, kennis en werk met lange context, voor complexe taken die aangeleverde tekst of visueel materiaal met een concreet eindproduct combineren.

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.5-plus-20260420 | 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.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.0036** / 1K tokens Invoer · Cache lezen **—** / 1K tokens Invoer · Cache schrijven **$0.00075** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 1 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en met256.000 | Kosten Invoer · Invoertokens **$0.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.0036** / 1K tokens Invoer · Cache lezen **—** / 1K tokens Invoer · Cache schrijven **$0.00075** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |
| ConfiguratieNiveau 2 voor aanvraaglengte | Tariefstaffel— | Contexttokens, meer dan256.000 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.00075** / 1K tokens Uitvoer · Uitvoertokens **$0.0045** / 1K tokens Invoer · Cache lezen **—** / 1K tokens Invoer · Cache schrijven **$0.0009375** / 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.5-plus-20260420",
  "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.5-plus-20260420', '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.5-plus-20260420', '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.5-plus-20260420`](https://ailoot.ai/models/nl/#m=qwen%2Fqwen3.5-plus-20260420&route=Ultra&caller=qwen%2Fqwen3.5-plus-20260420&fmt=messages)

#### Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

#### Gerelateerde aanroeper-ID’s

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

FAQ · Qwen: Qwen3.5 Plus 2026-04-20

Welke invoer en resultaten zijn beschikbaar?

`POST /v1/chat/completions` · `qwen/qwen3.5-plus-20260420`: `text` → `text` `POST /v1/messages` · `qwen/qwen3.5-plus-20260420`: `text` → `json`, `sse`

Welke velden gebruikt het verzoek?

`POST /v1/chat/completions` · `qwen/qwen3.5-plus-20260420`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen/qwen3.5-plus-20260420`: `model`, `messages`, `max_tokens`, `stream`

Welke limieten gelden?

`POST /v1/chat/completions` · `qwen/qwen3.5-plus-20260420`: `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.
