qwen3.5-omni-plus
Qwen3.5-Omni-Plusは、テキスト、画像、音声、動画を一緒に理解し、文章または音声の応答を返します。発話スタイルの指示と262,144トークンのコンテキストを備えるマルチモーダルの流れは、音声アシスタントや詳細なメディア分析に適しています。
- Ailoot Ultra · OpenAI チャット
POST /v1/chat/completionsqwen3.5-omni-plus - Ailoot Ultra · Anthropic メッセージ
POST /v1/messagesqwen3.5-omni-plus
モデルについて
この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。
Qwen3.5-Omni-Plusは、文章作成、音声アシスタント、マルチメディア分析向けの、AlibabaのマルチモーダルQwenモデルです。混合入力を含め、テキスト、画像、音声、動画を受け取り、テキスト、または音声付きのテキストを生成します。日付のないPlusという名前はファミリーのエイリアスであり、開発元は現在、Qwen3.5-Omni-Plus 2026-03-15と機能的に同等と説明しています。エイリアスと名称付きスナップショットは、別々のモデル選択肢です。
入力では、画像と話し言葉の質問を組み合わせたり、動画の映像と音を文章の指示と組み合わせたりできます。テキストだけの要約では、見えているものと聞こえるものの関係が失われる場合に役立ちます。メディアに関する依頼では、見える出来事の順序、画面上の文言、話された内容を分けて求め、順序が重要なら元資料に対応するタイムスタンプを指定してください。効果音などの発話以外の音も、発話とともに分析へ寄与できます。
音声回答では、回答の言語、対象者、話し方を指定します。Qwenのガイドは、音量、話す速さ、感情の指示を説明しています。音声入力は113の言語・方言、音声出力は36の言語・方言を挙げ、英語、フランス語、ドイツ語、ロシア語を含みます。音声カタログはTinaを既定とし、SerenaやEthanなどの選択肢を含みます。入力音声に出力スタイルの決定を任せず、声を選び、落ち着いた速度の簡潔な説明を求めてください。
記載されたHTTP音声ワークフローは、ストリーミングのテキストとBase64エンコード済み音声チャンクを返します。WAVの例は24 kHz、モノラル、16ビットPCMです。アプリケーションはチャンクを音声ファイルにまとめたり、到着時にデコードして再生したりできます。これは送信済み要求からのストリーミング生成です。ライブのターン検出、割り込み処理、マイクによる会話は、別名称のリアルタイムモデルに属します。Qwen3.5-Omniのファミリー表は、深い思考モードを提供していません。
モデルカードにはウェブ検索が記載されています。Function Callingは、テキスト出力を使うAlibabaの北京Chat Completionsデプロイで説明され、シンガポールの表では非対応とされています。JSON Object出力は北京では対応、シンガポールでは非対応です。モデルがツール呼び出しを提案し、アプリケーションが操作を実行して結果を返します。Plusの表では、接頭部補完、コンテキストキャッシュ、ファインチューニングは非対応です。バッチ推論は北京のエイリアス表で対応し、シンガポールの表では非対応とされています。
公開コンテキストウィンドウは262,144トークンで、最大入力は196,608トークン、最大出力は65,536トークンです。混合メディアとテキストはコンテキスト予算を共有します。AlibabaのHTTPガイドは、このシリーズで最大3時間の音声または1時間の動画を許可し、音声形式としてAMR、WAV、3GP、3GPP、AAC、MP3、動画形式としてMP4、AVI、MKV、MOV、FLV、WMVを挙げています。URLによる音声・動画ファイルは最大2 GBですが、Base64エンコードしたメディアは10 MB未満でなければなりません。これらは開発元のファイルワークフローの制限です。モデル紹介にある、10時間超の音声や、1 FPSでサンプリングした720p動画400秒超の理解についての説明とは区別されます。
同ガイドでは画像に固有の準備上限があります。URL画像は1枚につき最大20 MB、各辺は10ピクセルより大きく、長辺と短辺の比は200:1以下である必要があります。最大2,048個のURL画像または音声ファイル、512個のURL動画ファイルを許可し、Base64入力では最大250ファイルです。これらの転送上限にも共通の入力トークン予算が適用されます。このシリーズは、一つの要求で複数のメディア種を組み合わせられます。関連する抜粋を選び、小さいラベルも読めるようにして、別々の入力の関係を説明してください。記載されたファイル数上限は、モダリティと転送方法で異なりますが、すべての入力は引き続き共通のトークン予算内に収める必要があります。
日付のないPlusモデルには、別途音声を作成してから使うワークフローによるカスタム音声クローンが記載されています。参照音声には、途切れのない明瞭な発話を少なくとも3秒含め、間は2秒以内にする必要があります。音楽、歌、雑音、別の話者を含まない通常の発話を使ってください。WAVでは16ビット音声を使用します。参照クリップから、名称付きの対象モデル用の声を作成します。その対象は、音声生成に使うモデルと一致しなければなりません。開発元は、少なくとも24 kHzで10~20秒の明瞭なモノラル発話を推奨し、最大60秒、ファイルは10 MB未満としています。参照形式にはWAV、MP3、M4Aが記載されています。3月15日のスナップショットはクローンに非対応のため、日付付きモデルを選ぶと、この部分のワークフローが変わります。
実用的な学習アシスタントでは、図、学習者が録音した質問、短い文章の指示を提供します。「ラベル付きの部分がどうつながるかを説明し、話された質問に英語で答え、落ち着いたゆっくりした話し方にしてください。音声とともにテキスト回答もください」といった依頼です。メディア報告では、出来事、見える文字、発話の節を分け、各節にタイムスタンプを求めます。名称や用語を文章の文脈で準備し、結果が逐語的な文字起こし、説明、対象読者向けの要約のどれであるべきかを指定してください。
実用タスク
実用タスク
英語の技術例
Create a media brief from a transcript
Create a compact media brief from this text record. 00:00 title card: 'Refill station'. 00:04 demonstrator opens a bottle. 00:08 speech: 'Fill only to the marked line.' 00:12 demonstrator closes the bottle. Separate visible events, on-screen wording and spoken instruction, retaining timestamps. Do not infer audio effects or actions absent from the record.期待される結果
Three labelled sections with timestamped entries for visible events, visible wording and speech.結果の確認
The spoken fill-line instruction remains distinct from what is explicitly described as visible.Ailoot Ultra · OpenAI チャット POST /v1/chat/completions qwen3.5-omni-plus
qwen3.5-omni-plusはじめに
Qwen3.5-Omni-Plusは、テキスト、画像、音声、動画を一緒に理解し、文章または音声の応答を返します。発話スタイルの指示と262,144トークンのコンテキストを備えるマルチモーダルの流れは、音声アシスタントや詳細なメディア分析に適しています。
- 対応する入力
- テキスト
- 結果
- テキスト
Ailootで利用可能 · 入力とメソッド
Ailoot Ultra · OpenAI チャット POST /v1/chat/completions
- 入力の種類
text- 出力の種類
text- 出力形式
- jsonまたはSSE
| フィールド | 種類 | 要件 | 値と制限 | デフォルト |
|---|---|---|---|---|
フィールドmodel | 種類string | 要件必須 | 値と制限 qwen3.5-omni-plus | デフォルト— |
フィールドmessages | 種類message[] | 要件必須 | 値と制限 最小項目数: 1 | デフォルト— |
フィールドmessages[].role | 種類string | 要件必須 | 値と制限 例:system, user, assistant, tool, function 条件: これらのロールはソースコードの互換型で明示されています。正確なロールの集合はモデルごとに異なります。 モデルによる | デフォルト— |
フィールドmessages[].content | 種類string|content_part[]|null | 要件任意 | 値と制限 | デフォルト— |
フィールドmessages[].tool_calls | 種類tool_call[] | 要件任意 | 値と制限 | デフォルト— |
フィールドmessages[].tool_call_id | 種類string | 要件任意 | 値と制限 適用条件: role=tool。実際に返されたIDを使ってください | デフォルト— |
フィールドmessages[].name | 種類string | 要件任意 | 値と制限 | デフォルト— |
フィールドmessages[].reasoning_content | 種類string | 要件任意 | 値と制限 適用条件: このモデルが使用する場合は、実際に返された推論をそのまま次のリクエストへ戻してください | デフォルト— |
フィールドmessages[].reasoning_details | 種類object|array | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドmax_tokens | 種類integer | 要件任意 | 値と制限 最小値: 1 モデルによる | デフォルト— |
フィールドmax_completion_tokens | 種類integer | 要件任意 | 値と制限 最小値: 1 モデルによる | デフォルト— |
フィールドstream | 種類boolean | 要件任意 | 値と制限 | デフォルトfalse |
フィールドstream_options.include_usage | 種類boolean | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドtemperature | 種類number | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドtop_p | 種類number | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドstop | 種類string|string[] | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドtools | 種類function_tool[] | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドtools[].type | 種類string | 要件任意 | 値と制限 function モデルによる | デフォルト— |
フィールドtools[].function.name | 種類string | 要件必須 | 値と制限 適用条件: 関数ツールの指定あり | デフォルト— |
フィールドtools[].function.description | 種類string | 要件任意 | 値と制限 | デフォルト— |
フィールドtools[].function.parameters | 種類JSON_schema | 要件任意 | 値と制限 | デフォルト— |
フィールドtool_choice | 種類string|object | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドparallel_tool_calls | 種類boolean | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドresponse_format | 種類object | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドreasoning_effort | 種類string | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドreasoning | 種類object | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドservice_tier | 種類string | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドinstructions | 種類string | 要件任意 | 値と制限 互換性用のフィールド | デフォルト— |
フィールドfunctions | 種類function[] | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドfunction_call | 種類string|object | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドprompt_cache_options | 種類object | 要件任意 | 値と制限 モデルによる | デフォルト— |
フィールドmodalities | 種類string[] | 要件任意 | 値と制限 text | デフォルト— |
フィールドprovider | 種類object | 要件任意 | 値と制限 条件: このUltraテキストルートではprovider.optionsは拒否されます | デフォルト— |
フィールドcache_control.ttl | 種類string | 要件任意 | 値と制限 条件: 実際のプロンプトキャッシュの指定箇所では1hは拒否されます | デフォルト— |
入力素材の組み合わせ
テキスト · UTF8テキスト
messages[].content
メソッドのパラメータとライフサイクル
| パラメータ | 仕様 |
|---|---|
パラメータcontent_type | 仕様application/json |
パラメータrequired | 仕様model, messages |
パラメータmaterial_types | 仕様text |
パラメータmessages | 仕様role/content形式のメッセージ配列 |
パラメータfile_material | 仕様実際のUTF-8文書をテキストとしてそのまま挿入します。ファイルIDは推定しません |
パラメータoptional_controls | 仕様stream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
パラメータcontrol_scope | 仕様モデル固有。ユーザーの関数ツールとホスト側のツールは異なります |
パラメータoutput_modalities | 仕様text |
パラメータhosted_operations | 仕様false |
パラメータmultimodal_input_binding | 仕様null |
ライフサイクル: synchronous_or_streamed
正確なモデルIDをmessagesとともに送ってください。
コンテキスト長は出力上限ではありません。
テキストファイルはテキストをそのまま提供できます。画像/音声/ファイルオブジェクトの入力には正確なバインディングが必要です。
料金
料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。
- 高速モード
- 未指定 高速モードが選択されている場合
- Flex モード
- 未指定 flex モードが選択されている場合
- 最大推論量
- 未指定 推論量が最大で、調整に既定値(default)を使用する場合
Ailootの料金
設定別の価格
| 設定 | 料金表 | 料金 |
|---|---|---|
| 設定トークンの基本単価 | 料金表基本料金 | 料金 入力 · 入力トークン $0.0022 / 1K トークン 出力 · 出力トークン $0.012584 / 1K トークン 入力 · キャッシュ読み取り $0 / 1K トークン 入力 · キャッシュ書き込み $0 / 1K トークン 入力 · キャッシュ書き込み、1時間 — / 1K トークン |
Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →
リクエスト例
Ailoot Ultra · OpenAI チャット
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.5-omni-plus", "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='qwen3.5-omni-plus',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='qwen3.5-omni-plus',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")
結果を受け取って保存
Ailoot Ultra · OpenAI チャット
jsonまたはSSE
完了した結果をすべて保存
返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。
すべての選択肢と、その内容・ツール呼び出し・推論を保持してください。SSEでは選択肢/ツールのインデックスごとに差分を組み立て、最終的な終了理由と使用量を残します。
元のレスポンスを確認する場合
リクエスト/応答IDとヘッダーを保持してください。テキストジョブを取得する汎用URLは提供されません。
レスポンスのフィールド
| フィールド | 種類 |
|---|---|
フィールドchoices[].index | 種類integer |
フィールドchoices[].message.content | 種類string|null |
フィールドchoices[].message.tool_calls | 種類tool_call[] |
フィールドchoices[].message.reasoning_content | 種類string |
フィールドchoices[].message.reasoning_details | 種類object|array |
フィールドchoices[].finish_reason | 種類string|null |
フィールドusage | 種類object |
エラーと次の手順
| レスポンス | 条件 | 次の手順 |
|---|---|---|
レスポンス400 · invalid_request_error | 条件必須フィールド、素材の表現形式、またはパラメーター値が不正です | 次の手順新しい生成リクエストを送る前に、指定されたフィールドを修正してください。 |
エイリアス
モデルのエイリアス
Ailoot Ultra qwen3.5-omni-plus
メソッドパスのエイリアス
上記に表示されたメソッドパスを使用してください。
関連する呼び出し用ID
Ailoot Ultra · Anthropic メッセージ POST /v1/messages qwen3.5-omni-plus
qwen3.5-omni-plusはじめに
Qwen3.5-Omni-Plusは、テキスト、画像、音声、動画を一緒に理解し、文章または音声の応答を返します。発話スタイルの指示と262,144トークンのコンテキストを備えるマルチモーダルの流れは、音声アシスタントや詳細なメディア分析に適しています。
- 対応する入力
- テキスト
- 結果
- json · sse
Ailootで利用可能 · 入力とメソッド
Ailoot Ultra · Anthropic メッセージ POST /v1/messages
- 入力の種類
text- 出力の種類
json,sse- 出力形式
- JSONまたはSSE
| フィールド | 種類 | 要件 | 値と制限 | デフォルト |
|---|---|---|---|---|
フィールドmodel | 種類string | 要件必須 | 値と制限 qwen3.5-omni-plus | デフォルト— |
フィールドmessages | 種類message[] | 要件必須 | 値と制限 | デフォルト— |
フィールドmessages[].role | 種類string | 要件必須 | 値と制限 user, assistant | デフォルト— |
フィールドmessages[].content | 種類string | 要件必須 | 値と制限 | デフォルト— |
フィールドmax_tokens | 種類integer | 要件必須 | 値と制限 | デフォルト— |
フィールドstream | 種類boolean | 要件任意 | 値と制限 | デフォルトfalse |
入力素材の組み合わせ
テキスト · UTF-8テキスト
messages[].contentの文字列
メソッドのパラメータとライフサイクル
| パラメータ | 仕様 |
|---|---|
パラメータcontent_type | 仕様application/json |
パラメータrequired | 仕様model, messages, max_tokens |
パラメータoptional_controls | 仕様stream |
パラメータmaterial_types | 仕様text |
パラメータtext_file_material | 仕様実際のUTF-8文書を読み、その本文を指定された入力またはメッセージ内容の文字列に入れてください。 |
ライフサイクル: synchronous_or_streamed
料金
料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。
- 高速モード
- 未指定 高速モードが選択されている場合
- Flex モード
- 未指定 flex モードが選択されている場合
- 最大推論量
- 未指定 推論量が最大で、調整に既定値(default)を使用する場合
Ailootの料金
設定別の価格
| 設定 | 料金表 | 料金 |
|---|---|---|
| 設定トークンの基本単価 | 料金表基本料金 | 料金 入力 · 入力トークン $0.0022 / 1K トークン 出力 · 出力トークン $0.012584 / 1K トークン 入力 · キャッシュ読み取り $0 / 1K トークン 入力 · キャッシュ書き込み $0 / 1K トークン 入力 · キャッシュ書き込み、1時間 — / 1K トークン |
Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →
リクエスト例
Ailoot Ultra · Anthropic メッセージ
{
"model": "qwen3.5-omni-plus",
"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.5-omni-plus', '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.5-omni-plus', '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))
結果を受け取って保存
Ailoot Ultra · Anthropic メッセージ
JSONまたはSSE
完了した結果をすべて保存
返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。
すべてのコンテンツブロック、思考署名、実際のツール利用IDを保持してください。SSEのすべてのブロック差分を組み立てます。最初のテキストブロックだけでは完全な出力になりません。
元のレスポンスを確認する場合
リクエスト/応答IDとヘッダーを保持してください。テキストジョブを取得する汎用URLは提供されません。
レスポンスのフィールド
| フィールド | 種類 |
|---|---|
フィールドid | 種類string |
フィールドmodel | 種類string |
フィールドcontent[] | 種類text|thinking|tool_use|other content block |
フィールドstop_reason | 種類string|null |
フィールドusage | 種類object |
エラーと次の手順
| レスポンス | 条件 | 次の手順 |
|---|---|---|
レスポンス400 · invalid_request_error | 条件必須フィールド、素材の表現形式、またはパラメーター値が不正です | 次の手順新しい生成リクエストを送る前に、指定されたフィールドを修正してください。 |
エイリアス
モデルのエイリアス
Ailoot Ultra qwen3.5-omni-plus
メソッドパスのエイリアス
上記に表示されたメソッドパスを使用してください。
関連する呼び出し用ID
FAQ · qwen3.5-omni-plus
- 利用できる入力と結果は何ですか?
POST /v1/chat/completions·qwen3.5-omni-plus:text→textPOST /v1/messages·qwen3.5-omni-plus:text→json,sse- リクエストはどの項目を使用しますか?
POST /v1/chat/completions·qwen3.5-omni-plus:model,messages,stream,modalities,providerPOST /v1/messages·qwen3.5-omni-plus:model,messages,max_tokens,stream- どの制限が適用されますか?
POST /v1/chat/completions·qwen3.5-omni-plus:messages.min_items:1