Qwen: Qwen3.6 Flash
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Ailoot · Anthropic Messages
POST /v1/messagesqwen3.6-flash - Ailoot · OpenAI Responses
POST /v1/responsesqwen3.6-flash - Ailoot · OpenAI Chat
POST /v1/chat/completionsqwen3.6-flash - Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsqwen3.6-flash - Ailoot Ultra · Anthropic Messages
POST /v1/messagesqwen3.6-flash - Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsqwen/qwen3.6-flash - Ailoot Ultra · Anthropic Messages
POST /v1/messagesqwen/qwen3.6-flash
Om modellen
Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.
Qwen3.6 Flash är en snabb språkmodell i Alibabas serie Qwen3.6. Den publicerade profilen tar emot text, bilder och video och producerar text. Den anger ett kontextfönster på 1,000,000 token och upp till 65,536 kompletteringstoken, med kontroller för resonemang, verktyg och strukturerade utdata.
En fråga knuten till en synlig källa
Identifiera bilden eller videon som är viktig och ange detaljen som ska undersökas. En skärmgranskningsuppgift kan namnge gränssnittstillståndet och fråga efter det synliga problemet. En videouppgift kan identifiera scenen eller intervallet och be om en beskrivning av relevant sekvens. Håll källetiketter tillsammans med svaret så att fynd förblir kopplade till det tillhandahållna materialet.
För skriftliga belägg ska avsnittet eller dokumentdelen och frågan det ska avgöra ges. Ett jämförelseunderlag kan specificera alternativ och kriterier; ett extraktionsunderlag kan definiera fälten som ska returneras och hur saknade värden ska visas. Håll det begärda resultatet snävare än källans hela ämnesområde.
Resonemang och applikationssteg
Hostingmetadata omfattar resonemang, funktionsverktyg och strukturerade utdata. Definiera de operationer en applikation kan utföra och behåll deras faktiska resultat när uppgiften fortsätter. En modells föreslagna åtgärd blir belägg först efter att applikationen returnerat en observation.
Validera strukturerade fält mot källmaterialet och den nödvändiga resultatformen. För en människoläsbar förklaring ska slutsatsen begäras följd av observationerna som är viktiga för den. Det gör ett kompakt svar lättare att inspektera utan att tappa kopplingen till beläggen.
Använd den långa kontexten för relevant material
Ordna större källsamlingar i namngivna avsnitt och reservera plats för svaret. Behåll beslut och observationer som behövs för den aktuella uppgiften och ta bort orelaterad upprepning. Ett användbart Flash-resultat är en textartefakt knuten till de skriftliga eller visuella källor som fastställer det, redo för nästa applikationssteg.
Praktisk uppgift
Praktisk uppgift
Tekniskt exempel på engelska
Extract a defined exception
Answer from this supplied written rule: 'Weekly reports are sent on Mondays. If Monday is a holiday, send on the next working day. The office is closed Monday and Tuesday this week; Wednesday is a working day.' Return the applicable dispatch day, the supporting clauses and any assumptions. Keep the conclusion limited to the supplied week.Förväntat resultat
A concise answer, clause references and explicitly identified assumptions.Kontrollera resultatet
Check the holiday exception is applied through both closed days rather than stopping at Tuesday.Ailoot · Anthropic Messages POST /v1/messages qwen3.6-flash
qwen3.6-flashStart
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Godkända indata
- Text · Bilder
- Resultat
- Text
Tillgängligt i Ailoot · indata & metoder
Ailoot · Anthropic Messages POST /v1/messages
- Indatatyper
text,image- Utdatatyper
text- Kontext
- 991 808 tokens
- Maximala utdata
- 65 536 tokens
- Utdataformat
- json eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser qwen3.6-flash | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser user, assistant | Standard— |
Fältmessages[].content | Typstring|content_block[] | KravObligatoriskt | Värden & gränser | Standard— |
Fältsystem | Typstring|content_block[] | KravValfritt | Värden & gränser | Standard— |
Fältmax_tokens | Typinteger | KravObligatoriskt | Värden & gränser Minimum: 1 Gränsen gäller för: den exakta gränsen för den valda modellen/det valda kortet | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Fälttemperature | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttop_p | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältstop_sequences | Typstring[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools | Typtool[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools[].name | Typstring | KravValfritt | Värden & gränser Gäller när: verktyg har tillhandahållits | Standard— |
Fälttools[].description | Typstring | KravValfritt | Värden & gränser | Standard— |
Fälttools[].input_schema | TypJSON_schema | KravValfritt | Värden & gränser | Standard— |
Fälttool_choice | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältthinking.type | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältthinking.budget_tokens | Typinteger | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältoutput_config.effort | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältmetadata | Typobject | KravValfritt | Värden & gränser | Standard— |
Fältcache_control | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Kombinationer av indatamaterial
Text · UTF8-text
messages[].content eller ett type=text-block
Text + bild
{type:image,source:{type:base64,media_type,data}} eller källa type=url
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametermaterial_types | Avtaltext, image |
Parameterrequired | Avtalmodel, messages, max_tokens |
Parameteroptional_controls | Avtalnull |
Parametercontent_type | Avtalapplication/json |
Parametertext_file_material | Avtalfaktiskt UTF-8-innehåll infogat som text; fil-ID:n/URLs kräver separat, exakt definierat stöd |
Livscykel: exact retained published method
Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.
Priser
Priser för Ailoot-metoder
POST /v1/messages- Indata
- 0,00025 US$ / 1K
- Utdata
- 0,0015 US$ / 1K
- Cacheläsning
- 0,000025 US$ / 1K
- Skrivning till cache
- ≈0,000313 US$ / 1K
- Skrivning till cache, 5 min
- ≈0,000313 US$ / 1K tokens
Priser efter begärans längd · Anthropic Messages
| Begärans storlek i token | Indata | Utdata | Cacheläsning | Skrivning till cache | Cache 5 min | Cache 1 tim |
|---|---|---|---|---|---|---|
| Begärans storlek i token(0; 256 000] | Indata0,00025 US$ | Utdata0,0015 US$ | Cacheläsning0,000025 US$ | Skrivning till cache≈0,000313 US$ | Cache 5 min≈0,000313 US$ | Cache 1 timBaspris: — |
| Begärans storlek i token(256 000; ∞) | Indata0,001 US$ | Utdata0,004 US$ | Cacheläsning0,0001 US$ | Skrivning till cache0,00125 US$ | Cache 5 min0,00125 US$ | Cache 1 timBaspris: — |
Priser i USD per 1K token. Om inget pris anges ärvs grundpriset för den här metoden; «—» betyder att inget grundpris har angetts.
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Detaljer om referenstariffen
Referensprislistor på modellnivå ändrar inte metodval, prisuppgifter eller avgifter. Aktiva avgifter använder priserna för den valda Ailoot-metoden.
Modellens referensprislistor
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationOpenAI Chat · Grundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationOpenAI Chat · Nivå 1 baserad på begärans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationOpenAI Chat · Nivå 2 baserad på begärans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Grundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Nivå 1 baserad på begärans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Nivå 2 baserad på begärans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Exempelbegäranden
Ailoot · Anthropic Messages
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.6-flash", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.6-flash", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
model="qwen3.6-flash",
max_tokens=1024,
messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";
if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
model: "qwen3.6-flash",
max_tokens: 1024,
messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";
function saveResult(data, stem = "result") {
writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
console.log(JSON.stringify(data, null, 2));
const saveBlob = (encoded, suffix, label) => {
const raw = Buffer.from(encoded, "base64");
const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
const file = `${stem}-${label}.${ext}`;
writeFileSync(file, raw); console.log("Saved", file);
};
for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
for (const [i, item] of (data.output || []).entries()) {
console.log("Output", i, JSON.stringify(item));
if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
}
for (const [ci, candidate] of (data.candidates || []).entries()) {
for (const [pi, part] of (candidate.content?.parts || []).entries()) {
console.log("Candidate/part", ci, pi, JSON.stringify(part));
const blob = part.inlineData || part.inline_data;
if (blob?.data) {
const mime = blob.mimeType || blob.mime_type;
const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
}
}
}
}
saveResult(msg);
import anthropic,os
from pathlib import Path
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
with client.messages.stream(model='qwen3.6-flash',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_message()
save_result(final.to_dict(mode="json"),"stream-result")
Ta emot och spara resultat
Ailoot · Anthropic Messages
json eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll alla innehållsblock, resonemangssignaturer och faktiska ID:n för verktygsanvändning. Sätt samman alla SSE-deltauppdateringar för blocken; ett första textblock är inte hela utdata.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältid | Typstring |
Fältmodel | Typstring |
Fältcontent[] | Typtext|thinking|tool_use|other content block |
Fältstop_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot qwen3.6-flash
Ailoot Ultra qwen3.6-flash, qwen/qwen3.6-flash
Alias för metodsökvägar
/chat/completions
Relaterade anropar-ID:n
Ailoot · OpenAI Responses POST /v1/responses qwen3.6-flash
qwen3.6-flashStart
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Godkända indata
- Text · Bilder
- Resultat
- Text
Tillgängligt i Ailoot · indata & metoder
Ailoot · OpenAI Responses POST /v1/responses
- Indatatyper
text,image- Utdatatyper
text- Kontext
- 991 808 tokens
- Maximala utdata
- 65 536 tokens
- Utdataformat
- json eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser qwen3.6-flash | Standard— |
Fältinput | Typstring|input_item[] | KravObligatoriskt | Värden & gränser | Standard— |
Fältinstructions | Typstring | KravValfritt | Värden & gränser | Standard— |
Fältinput[].type | Typstring | KravValfritt | Värden & gränser message, reasoning, function_call, function_call_output | Standard— |
Fältinput[].content | Typstring|content_part[] | KravValfritt | Värden & gränser | Standard— |
Fältinput[].call_id | Typstring | KravValfritt | Värden & gränser Gäller när: function_call_output; behåll det faktiska returnerade call_id | Standard— |
Fältinput[].output | Typstring|content_part[] | KravValfritt | Värden & gränser Gäller när: function_call_output | Standard— |
Fältmax_output_tokens | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Beror på modellen | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Fälttemperature | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttop_p | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools | Typtool[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttool_choice | Typstring|object | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältparallel_tool_calls | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning.effort | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning.summary | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttext.format | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttext.verbosity | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältinclude | Typstring[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältstore | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältprevious_response_id | Typstring | KravValfritt | Värden & gränser ID-krav: Endast ett faktiskt svars-ID från en fortsättning som stöds Beror på modellen | Standard— |
Fältservice_tier | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältprompt_cache_key | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältprompt_cache_options | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Kombinationer av indatamaterial
Text · UTF8-text
indatatext eller en input_text-del
Text + bild
{type:input_image,image_url}
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametermaterial_types | Avtaltext, image |
Parameterrequired | Avtalmodel, input |
Parameteroptional_controls | Avtalnull |
Parametercontent_type | Avtalapplication/json |
Parametertext_file_material | Avtalfaktiskt UTF-8-innehåll infogat som text; fil-ID:n/URLs kräver separat, exakt definierat stöd |
Livscykel: exact retained published method
Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.
Priser
Priser för Ailoot-metoder
POST /v1/responses- Indata
- 0,00025 US$ / 1K
- Utdata
- 0,0015 US$ / 1K
- Cacheläsning
- 0,00005 US$ / 1K
- Skrivning till cache
- 0,00025 US$ / 1K
- Skrivning till cache, 5 min
- 0,00025 US$ / 1K tokens
Priser efter begärans längd · OpenAI Responses
| Begärans storlek i token | Indata | Utdata | Cacheläsning | Skrivning till cache | Cache 5 min | Cache 1 tim |
|---|---|---|---|---|---|---|
| Begärans storlek i token(0; 256 000] | Indata0,00025 US$ | Utdata0,0015 US$ | Cacheläsning0,00005 US$ | Skrivning till cache0,00025 US$ | Cache 5 min0,00025 US$ | Cache 1 timBaspris: — |
| Begärans storlek i token(256 000; ∞) | Indata0,001 US$ | Utdata0,004 US$ | Cacheläsning0,0002 US$ | Skrivning till cache0,001 US$ | Cache 5 min0,001 US$ | Cache 1 timBaspris: — |
Priser i USD per 1K token. Om inget pris anges ärvs grundpriset för den här metoden; «—» betyder att inget grundpris har angetts.
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Detaljer om referenstariffen
Referensprislistor på modellnivå ändrar inte metodval, prisuppgifter eller avgifter. Aktiva avgifter använder priserna för den valda Ailoot-metoden.
Modellens referensprislistor
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationOpenAI Chat · Grundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationOpenAI Chat · Nivå 1 baserad på begärans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationOpenAI Chat · Nivå 2 baserad på begärans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Grundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Nivå 1 baserad på begärans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Nivå 2 baserad på begärans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Exempelbegäranden
Ailoot · OpenAI Responses
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.6-flash", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.6-flash", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="qwen3.6-flash", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";
if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "qwen3.6-flash", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";
function saveResult(data, stem = "result") {
writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
console.log(JSON.stringify(data, null, 2));
const saveBlob = (encoded, suffix, label) => {
const raw = Buffer.from(encoded, "base64");
const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
const file = `${stem}-${label}.${ext}`;
writeFileSync(file, raw); console.log("Saved", file);
};
for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
for (const [i, item] of (data.output || []).entries()) {
console.log("Output", i, JSON.stringify(item));
if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
}
for (const [ci, candidate] of (data.candidates || []).entries()) {
for (const [pi, part] of (candidate.content?.parts || []).entries()) {
console.log("Candidate/part", ci, pi, JSON.stringify(part));
const blob = part.inlineData || part.inline_data;
if (blob?.data) {
const mime = blob.mimeType || blob.mime_type;
const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
}
}
}
}
saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="qwen3.6-flash", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_response()
save_result(final.to_dict(mode="json"),"stream-result")
Ta emot och spara resultat
Ailoot · OpenAI Responses
json eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll varje utdatapost och innehållsdel, det faktiska call_id för funktionen, krypterat resonemang och användningsuppgifter. Bevara vid strömning den fullständiga identiteten för händelsen/posten.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältid | Typstring |
Fältstatus | Typstring |
Fältoutput[] | Typmessage|reasoning|function_call|other item |
Fältoutput[].content[] | Typcontent part |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot qwen3.6-flash
Ailoot Ultra qwen3.6-flash, qwen/qwen3.6-flash
Alias för metodsökvägar
/chat/completions
Relaterade anropar-ID:n
Ailoot · OpenAI Chat POST /v1/chat/completions qwen3.6-flash
qwen3.6-flashStart
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Godkända indata
- Text · Bilder
- Resultat
- Text
Tillgängligt i Ailoot · indata & metoder
Ailoot · OpenAI Chat POST /v1/chat/completions
- Indatatyper
text,image- Utdatatyper
text- Kontext
- 991 808 tokens
- Maximala utdata
- 65 536 tokens
- Utdataformat
- json eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser qwen3.6-flash | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser Exempel: system, user, assistant, tool, function Villkor: Dessa roller representeras uttryckligen av källkodens kompatibilitetstyper; den exakta rolluppsättningen är fortfarande modellspecifik. Beror på modellen | Standard— |
Fältmessages[].content | Typstring|content_part[]|null | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].tool_calls | Typtool_call[] | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].tool_call_id | Typstring | KravValfritt | Värden & gränser Gäller när: role=tool; använd det faktiska returnerade ID:t | Standard— |
Fältmessages[].name | Typstring | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].reasoning_content | Typstring | KravValfritt | Värden & gränser Gäller när: Skicka tillbaka det faktiska returnerade resonemanget när modellen använder det | Standard— |
Fältmessages[].reasoning_details | Typobject|array | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältmax_tokens | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Beror på modellen | Standard— |
Fältmax_completion_tokens | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Beror på modellen | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Fältstream_options.include_usage | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttemperature | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttop_p | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältstop | Typstring|string[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools | Typfunction_tool[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools[].type | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools[].function.name | Typstring | KravObligatoriskt | Värden & gränser Gäller när: verktyg av typen funktion har tillhandahållits | Standard— |
Fälttools[].function.description | Typstring | KravValfritt | Värden & gränser | Standard— |
Fälttools[].function.parameters | TypJSON_schema | KravValfritt | Värden & gränser | Standard— |
Fälttool_choice | Typstring|object | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältparallel_tool_calls | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältresponse_format | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning_effort | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältservice_tier | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältinstructions | Typstring | KravValfritt | Värden & gränser Kompatibilitetsfält | Standard— |
Fältfunctions | Typfunction[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältfunction_call | Typstring|object | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältprompt_cache_options | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Kombinationer av indatamaterial
Text · UTF8-text
messages[].content
Text + bild
{type:image_url,image_url:{url,detail}}
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametermaterial_types | Avtaltext, image |
Parameterrequired | Avtalmodel, messages |
Parameteroptional_controls | Avtalnull |
Parametercontent_type | Avtalapplication/json |
Parametertext_file_material | Avtalfaktiskt UTF-8-innehåll infogat som text; fil-ID:n/URLs kräver separat, exakt definierat stöd |
Livscykel: exact retained published method
Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.
Priser
Priser för Ailoot-metoder
POST /v1/chat/completions- Indata
- 0,00025 US$ / 1K
- Utdata
- 0,0015 US$ / 1K
- Cacheläsning
- 0,00005 US$ / 1K
- Skrivning till cache
- 0,00025 US$ / 1K
- Skrivning till cache, 5 min
- 0,00025 US$ / 1K tokens
Priser efter begärans längd · OpenAI Chat
| Begärans storlek i token | Indata | Utdata | Cacheläsning | Skrivning till cache | Cache 5 min | Cache 1 tim |
|---|---|---|---|---|---|---|
| Begärans storlek i token(0; 256 000] | Indata0,00025 US$ | Utdata0,0015 US$ | Cacheläsning0,00005 US$ | Skrivning till cache0,00025 US$ | Cache 5 min0,00025 US$ | Cache 1 timBaspris: — |
| Begärans storlek i token(256 000; ∞) | Indata0,001 US$ | Utdata0,004 US$ | Cacheläsning0,0002 US$ | Skrivning till cache0,001 US$ | Cache 5 min0,001 US$ | Cache 1 timBaspris: — |
Priser i USD per 1K token. Om inget pris anges ärvs grundpriset för den här metoden; «—» betyder att inget grundpris har angetts.
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Detaljer om referenstariffen
Referensprislistor på modellnivå ändrar inte metodval, prisuppgifter eller avgifter. Aktiva avgifter använder priserna för den valda Ailoot-metoden.
Modellens referensprislistor
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationOpenAI Chat · Grundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationOpenAI Chat · Nivå 1 baserad på begärans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationOpenAI Chat · Nivå 2 baserad på begärans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Grundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Nivå 1 baserad på begärans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationAnthropic Messages · Nivå 2 baserad på begärans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Exempelbegäranden
Ailoot · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.6-flash", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.6-flash", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
model="qwen3.6-flash",
messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";
if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
model: "qwen3.6-flash",
messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";
function saveResult(data, stem = "result") {
writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
console.log(JSON.stringify(data, null, 2));
const saveBlob = (encoded, suffix, label) => {
const raw = Buffer.from(encoded, "base64");
const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
const file = `${stem}-${label}.${ext}`;
writeFileSync(file, raw); console.log("Saved", file);
};
for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
for (const [i, item] of (data.output || []).entries()) {
console.log("Output", i, JSON.stringify(item));
if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
}
for (const [ci, candidate] of (data.candidates || []).entries()) {
for (const [pi, part] of (candidate.content?.parts || []).entries()) {
console.log("Candidate/part", ci, pi, JSON.stringify(part));
const blob = part.inlineData || part.inline_data;
if (blob?.data) {
const mime = blob.mimeType || blob.mime_type;
const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
}
}
}
}
saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
with client.chat.completions.stream(model='qwen3.6-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")
Ta emot och spara resultat
Ailoot · OpenAI Chat
json eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll varje svarsalternativ och dess innehåll/verktygsanrop/resonemang. Sätt i SSE samman deltauppdateringar efter svarsalternativets/verktygets index och behåll den slutliga avslutsorsaken och användningsuppgifterna.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältchoices[].index | Typinteger |
Fältchoices[].message.content | Typstring|null |
Fältchoices[].message.tool_calls | Typtool_call[] |
Fältchoices[].message.reasoning_content | Typstring |
Fältchoices[].message.reasoning_details | Typobject|array |
Fältchoices[].finish_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot qwen3.6-flash
Ailoot Ultra qwen3.6-flash, qwen/qwen3.6-flash
Alias för metodsökvägar
/chat/completions
Relaterade anropar-ID:n
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qwen3.6-flash
qwen3.6-flashqwen3.6-flashqwen/qwen3.6-flash
Start
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Godkända indata
- Text
- Resultat
- Text
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Indatatyper
text- Utdatatyper
text- Utdataformat
- json eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser qwen3.6-flash | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser Beror på modellen | Standard— |
Fältmessages[].content | Typstring | KravValfritt | Värden & gränser Gäller när: Textsamtal | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Kombinationer av indatamaterial
Text · UTF8-text
messages[].content
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalmodel, messages |
Parametermaterial_types | Avtaltext |
Parametermessages | Avtalmeddelandearray med strukturen role/content |
Parameterfile_material | Avtaldet faktiska UTF-8-dokumentet infogat som bokstavlig text; inget fil-ID härleds |
Parameteroptional_controls | Avtalstream |
Parametercontrol_scope | AvtalTextsamtal; stream är ett booleskt värde och har false som standard. |
Parameteroutput_modalities | Avtaltext |
Parameterhosted_operations | Avtalfalse |
Parametermultimodal_input_binding | Avtalnull |
Metodalias: /chat/completions
Livscykel: synchronous_or_streamed
Skicka det exakta modell-ID:t tillsammans med messages.
Kontextlängden är inte en utdatagräns.
En textfil kan tillhandahålla bokstavlig text; bild-/ljud-/filobjektsindata kräver exakt bindning.
Priser
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Standardpris När snabbt läge är valt
- Flex-läge
- Standardpris När läget flex är valt
- Högsta resonemangsnivå
- Standardpris När den högsta resonemangsnivån använder standardjusteringen (default)
Ailoot-priser
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 1 för förfrågans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 2 för förfrågans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · OpenAI Chat
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.6-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
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.6-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"))
Ta emot och spara resultat
Ailoot Ultra · OpenAI Chat
json eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll varje svarsalternativ och dess innehåll/verktygsanrop/resonemang. Sätt i SSE samman deltauppdateringar efter svarsalternativets/verktygets index och behåll den slutliga avslutsorsaken och användningsuppgifterna.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältchoices[].index | Typinteger |
Fältchoices[].message.content | Typstring|null |
Fältchoices[].message.tool_calls | Typtool_call[] |
Fältchoices[].message.reasoning_content | Typstring |
Fältchoices[].message.reasoning_details | Typobject|array |
Fältchoices[].finish_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot qwen3.6-flash
Ailoot Ultra qwen3.6-flash, qwen/qwen3.6-flash
Alias för metodsökvägar
/chat/completions
Relaterade anropar-ID:n
Ailoot Ultra · Anthropic Messages POST /v1/messages qwen3.6-flash
qwen3.6-flashqwen3.6-flashqwen/qwen3.6-flash
Start
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Godkända indata
- Text
- Resultat
- json · sse
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Indatatyper
text- Utdatatyper
json,sse- Utdataformat
- JSON eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser qwen3.6-flash | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser user, assistant | Standard— |
Fältmessages[].content | Typstring | KravObligatoriskt | Värden & gränser | Standard— |
Fältmax_tokens | Typinteger | KravObligatoriskt | Värden & gränser | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Kombinationer av indatamaterial
Text · UTF-8-text
sträng i messages[].content
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalmodel, messages, max_tokens |
Parameteroptional_controls | Avtalstream |
Parametermaterial_types | Avtaltext |
Parametertext_file_material | AvtalLäs det faktiska UTF-8-dokumentet och placera texten i det angivna input-fältet eller i strängen för meddelandets innehåll. |
Livscykel: synchronous_or_streamed
Priser
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Standardpris När snabbt läge är valt
- Flex-läge
- Standardpris När läget flex är valt
- Högsta resonemangsnivå
- Standardpris När den högsta resonemangsnivån använder standardjusteringen (default)
Ailoot-priser
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 1 för förfrågans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 2 för förfrågans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · Anthropic Messages
{
"model": "qwen3.6-flash",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}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.6-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
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.6-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))
Ta emot och spara resultat
Ailoot Ultra · Anthropic Messages
JSON eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll alla innehållsblock, resonemangssignaturer och faktiska ID:n för verktygsanvändning. Sätt samman alla SSE-deltauppdateringar för blocken; ett första textblock är inte hela utdata.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältid | Typstring |
Fältmodel | Typstring |
Fältcontent[] | Typtext|thinking|tool_use|other content block |
Fältstop_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot qwen3.6-flash
Ailoot Ultra qwen3.6-flash, qwen/qwen3.6-flash
Alias för metodsökvägar
/chat/completions
Relaterade anropar-ID:n
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qwen/qwen3.6-flash
qwen/qwen3.6-flashqwen3.6-flashqwen/qwen3.6-flash
Start
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Godkända indata
- Text
- Resultat
- Text
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Indatatyper
text- Utdatatyper
text- Utdataformat
- json eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser qwen/qwen3.6-flash | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser Exempel: system, user, assistant, tool, function Villkor: Dessa roller representeras uttryckligen av källkodens kompatibilitetstyper; den exakta rolluppsättningen är fortfarande modellspecifik. Beror på modellen | Standard— |
Fältmessages[].content | Typstring|content_part[]|null | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].tool_calls | Typtool_call[] | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].tool_call_id | Typstring | KravValfritt | Värden & gränser Gäller när: role=tool; använd det faktiska returnerade ID:t | Standard— |
Fältmessages[].name | Typstring | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].reasoning_content | Typstring | KravValfritt | Värden & gränser Gäller när: Skicka tillbaka det faktiska returnerade resonemanget när modellen använder det | Standard— |
Fältmessages[].reasoning_details | Typobject|array | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältmax_tokens | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Beror på modellen | Standard— |
Fältmax_completion_tokens | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Beror på modellen | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Fältstream_options.include_usage | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttemperature | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttop_p | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältstop | Typstring|string[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools | Typfunction_tool[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools[].type | Typstring | KravValfritt | Värden & gränser function Beror på modellen | Standard— |
Fälttools[].function.name | Typstring | KravObligatoriskt | Värden & gränser Gäller när: verktyg av typen funktion har tillhandahållits | Standard— |
Fälttools[].function.description | Typstring | KravValfritt | Värden & gränser | Standard— |
Fälttools[].function.parameters | TypJSON_schema | KravValfritt | Värden & gränser | Standard— |
Fälttool_choice | Typstring|object | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältparallel_tool_calls | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältresponse_format | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning_effort | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältservice_tier | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältinstructions | Typstring | KravValfritt | Värden & gränser Kompatibilitetsfält | Standard— |
Fältfunctions | Typfunction[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältfunction_call | Typstring|object | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältprompt_cache_options | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältmodalities | Typstring[] | KravValfritt | Värden & gränser text | Standard— |
Fältprovider | Typobject | KravValfritt | Värden & gränser Villkor: provider.options avvisas på denna Ultra-textrutt | Standard— |
Fältcache_control.ttl | Typstring | KravValfritt | Värden & gränser Villkor: 1h avvisas på de faktiska platserna för promptcache | Standard— |
Kombinationer av indatamaterial
Text · UTF8-text
messages[].content
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalmodel, messages |
Parametermaterial_types | Avtaltext |
Parametermessages | Avtalmeddelandearray med strukturen role/content |
Parameterfile_material | Avtaldet faktiska UTF-8-dokumentet infogat som bokstavlig text; inget fil-ID härleds |
Parameteroptional_controls | Avtalstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametercontrol_scope | Avtalmodellspecifikt; användarens funktionsverktyg skiljer sig från värdbaserade verktyg |
Parameteroutput_modalities | Avtaltext |
Parameterhosted_operations | Avtalfalse |
Parametermultimodal_input_binding | Avtalnull |
Livscykel: synchronous_or_streamed
Skicka det exakta modell-ID:t tillsammans med messages.
Kontextlängden är inte en utdatagräns.
En textfil kan tillhandahålla bokstavlig text; bild-/ljud-/filobjektsindata kräver exakt bindning.
Priser
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Standardpris När snabbt läge är valt
- Flex-läge
- Standardpris När läget flex är valt
- Högsta resonemangsnivå
- Standardpris När den högsta resonemangsnivån använder standardjusteringen (default)
Ailoot-priser
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 1 för förfrågans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 2 för förfrågans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · OpenAI Chat
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.6-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
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.6-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"))
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.6-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")
Ta emot och spara resultat
Ailoot Ultra · OpenAI Chat
json eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll varje svarsalternativ och dess innehåll/verktygsanrop/resonemang. Sätt i SSE samman deltauppdateringar efter svarsalternativets/verktygets index och behåll den slutliga avslutsorsaken och användningsuppgifterna.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältchoices[].index | Typinteger |
Fältchoices[].message.content | Typstring|null |
Fältchoices[].message.tool_calls | Typtool_call[] |
Fältchoices[].message.reasoning_content | Typstring |
Fältchoices[].message.reasoning_details | Typobject|array |
Fältchoices[].finish_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot qwen3.6-flash
Ailoot Ultra qwen3.6-flash, qwen/qwen3.6-flash
Alias för metodsökvägar
/chat/completions
Relaterade anropar-ID:n
Ailoot Ultra · Anthropic Messages POST /v1/messages qwen/qwen3.6-flash
qwen/qwen3.6-flashqwen3.6-flashqwen/qwen3.6-flash
Start
Qwen3.6 Flash är Alibabas Qwen-modell för förståelse av text, bilder och video med textsvar. Den ger en kontext på en miljon token och dokumenterade kontroller för resonemang, verktyg och strukturerade utdata för avgränsade multimodala assistentuppgifter.
- Godkända indata
- Text
- Resultat
- json · sse
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Indatatyper
text- Utdatatyper
json,sse- Utdataformat
- JSON eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser qwen/qwen3.6-flash | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser user, assistant | Standard— |
Fältmessages[].content | Typstring | KravObligatoriskt | Värden & gränser | Standard— |
Fältmax_tokens | Typinteger | KravObligatoriskt | Värden & gränser | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Kombinationer av indatamaterial
Text · UTF-8-text
sträng i messages[].content
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalmodel, messages, max_tokens |
Parameteroptional_controls | Avtalstream |
Parametermaterial_types | Avtaltext |
Parametertext_file_material | AvtalLäs det faktiska UTF-8-dokumentet och placera texten i det angivna input-fältet eller i strängen för meddelandets innehåll. |
Livscykel: synchronous_or_streamed
Priser
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Standardpris När snabbt läge är valt
- Flex-läge
- Standardpris När läget flex är valt
- Högsta resonemangsnivå
- Standardpris När den högsta resonemangsnivån använder standardjusteringen (default)
Ailoot-priser
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 1 för förfrågans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med256 000 | Avgift Indata · Indatatoken $0.000375 / 1K token Utdata · Utdatatoken $0.00225 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.00046875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 2 för förfrågans längd | Prislista— | Kontexttoken, fler än256 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0015 / 1K token Utdata · Utdatatoken $0.006 / 1K token Indata · Cacheläsning — / 1K token Indata · Skrivning till cache $0.001875 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · Anthropic Messages
{
"model": "qwen/qwen3.6-flash",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}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.6-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
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.6-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))
Ta emot och spara resultat
Ailoot Ultra · Anthropic Messages
JSON eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll alla innehållsblock, resonemangssignaturer och faktiska ID:n för verktygsanvändning. Sätt samman alla SSE-deltauppdateringar för blocken; ett första textblock är inte hela utdata.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältid | Typstring |
Fältmodel | Typstring |
Fältcontent[] | Typtext|thinking|tool_use|other content block |
Fältstop_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot qwen3.6-flash
Ailoot Ultra qwen3.6-flash, qwen/qwen3.6-flash
Alias för metodsökvägar
/chat/completions
Relaterade anropar-ID:n
FAQ · Qwen: Qwen3.6 Flash
- Vilka indata och resultat finns?
POST /v1/messages·qwen3.6-flash:text,image→textPOST /v1/responses·qwen3.6-flash:text,image→textPOST /v1/chat/completions·qwen3.6-flash:text,image→textPOST /v1/chat/completions·qwen3.6-flash:text→textPOST /v1/messages·qwen3.6-flash:text→json,ssePOST /v1/chat/completions·qwen/qwen3.6-flash:text→textPOST /v1/messages·qwen/qwen3.6-flash:text→json,sse- Vilka fält använder begäran?
POST /v1/messages·qwen3.6-flash:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·qwen3.6-flash:model,input,instructions,streamPOST /v1/chat/completions·qwen3.6-flash:model,messages,streamPOST /v1/chat/completions·qwen3.6-flash:model,messages,streamPOST /v1/messages·qwen3.6-flash:model,messages,max_tokens,streamPOST /v1/chat/completions·qwen/qwen3.6-flash:model,messages,stream,modalities,providerPOST /v1/messages·qwen/qwen3.6-flash:model,messages,max_tokens,stream- Vilka gränser gäller?
POST /v1/messages·qwen3.6-flash:ctx:991808;max_out:65536;messages.min_items:1;max_tokens.minimum:1POST /v1/responses·qwen3.6-flash:ctx:991808;max_out:65536POST /v1/chat/completions·qwen3.6-flash:ctx:991808;max_out:65536;messages.min_items:1POST /v1/chat/completions·qwen3.6-flash:messages.min_items:1POST /v1/chat/completions·qwen/qwen3.6-flash:messages.min_items:1