MW BasicRouter
คอนโซล

เอกสาร BasicRouter

เริ่มต้นอย่างรวดเร็ว

BasicRouter มอบ API ที่เสถียรหนึ่งรายการสำหรับทีมการผลิตเพื่อเข้าถึงโมเดล การกำหนดเส้นทาง การสำรอง การติดตามการใช้งาน และการเรียกเก็บเงินแบบเครดิต โทเค็น LLM มาจากบัญชีผู้ให้บริการต้นฉบับบนคลาวด์องค์กรที่ได้รับความไว้วางใจ พร้อมการปกป้องความเป็นส่วนตัว ความเสถียรสูง และการตรวจสอบย้อนกลับคำขอที่สร้างขึ้นในเกตเวย์

URL ฐานhttps://api.basicrouter.ai/api
เข้ากันได้กับ OpenAIhttps://api.basicrouter.ai/api/v1
Anthropic-messageshttps://api.basicrouter.ai/api/v1
การรับรองความถูกต้องAuthorization: Bearer <key>

สร้างคีย์ API

สร้างคีย์ API BasicRouter ในคอนโซล เก็บคีย์ไว้บนเซิร์ฟเวอร์ของคุณและอย่า เปิดเผยในโค้ดเบราว์เซอร์หรือไคลเอนต์มือถือ

กลยุทธ์คีย์ที่แนะนำ:

ประเภทคีย์การใช้งานที่แนะนำ
Development keyการพัฒนาในเครื่อง, การจัดเตรียม, การทดสอบ และต้นแบบ
คีย์สำหรับการผลิตสำหรับงานผลิตแบ็กเอนด์เท่านั้น
Integration keyDedicated key for tools such as Cursor, Claude Code, Codex, Hermes, or OpenClaw.
Customer / tenant keyOptional key isolation for enterprise customers, tenant traffic, or business units.

หมุนเวียนคีย์เมื่อการเข้าถึงของทีมเปลี่ยนแปลง เพิกถอนคีย์ที่ไม่ใช้งานแล้ว

ชี้ SDK ของคุณไปยัง BasicRouter

ไคลเอนต์ที่เข้ากันได้กับ OpenAI ส่วนใหญ่ต้องการเพียง URL ฐานและคีย์ API ใหม่

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.BASICROUTER_API_KEY,
  baseURL: "https://api.basicrouter.ai/api/v1"
});

ส่งการเติมแชท

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/chat/completions \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "claude-sonnet-5",
    "messages": [
      { "role": "user", "content": "Explain BasicRouter in one sentence." }
    ]
  }'

ตรวจสอบการใช้งานและยอดคงเหลือ

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/billing/balance \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

การค้นพบโมเดล

ใช้หน้าโมเดลหรือ Models API เพื่อตรวจสอบโมเดลข้อความที่พร้อมใช้งาน ข้อมูลเมตาของโมเดล รวมถึงผู้ผลิต ผู้ให้บริการ รูปแบบ ความยาวบริบท ตระกูล API ที่รองรับ ความสามารถที่รองรับ ความพร้อมใช้งาน ขีดจำกัดระดับบัญชี และราคาเครดิต

จุดเชื่อมต่อ: GET /v1/models วัตถุประสงค์: แสดงรายการโมเดลที่พร้อมใช้งานสำหรับบัญชีปัจจุบัน

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

ตารางความสามารถ

ความสามารถคำอธิบายใช้โดยทั่วไปโดย
streamingรองรับการสตรีมเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์แอปแชท, ตัวแทนเขียนโค้ด, UX แบบเรียลไทม์
tool_callingรองรับการเรียกเครื่องมือหรือฟังก์ชันตัวแทน, ระบบอัตโนมัติเวิร์กโฟลว์, ผู้ช่วยเขียนโค้ด
structured_outputsรองรับเอาต์พุตที่จำกัดด้วยสคีมาหรือ JSONการสกัดข้อมูล, ระบบอัตโนมัติเวิร์กโฟลว์, แอปองค์กร
json_modeสามารถส่งคืนเอาต์พุตในรูปแบบ JSONการตอบกลับแบบโครงสร้างน้ำหนักเบา
visionรับอินพุตรูปภาพแชทหลายรูปแบบ, การวิเคราะห์ UI, ภาพหน้าจอเอกสาร
prompt_cachingรองรับอินพุตแคชหรือการนำบริบทกลับมาใช้ใหม่ตัวแทนบริบทยาว, พร้อมต์ระบบที่ใช้ซ้ำ
reasoningรองรับการควบคุมการให้เหตุผลอย่างชัดเจนเมื่อมีการวางแผนที่ซับซ้อน, การเขียนโค้ด, เวิร์กโฟลว์การวิเคราะห์
logprobsรองรับเอาต์พุตความน่าจะเป็นของโทเค็นการประเมิน, การจัดอันดับ, เวิร์กโฟลว์ NLP ขั้นสูง

ตารางความเข้ากันได้ของตระกูล API

ตระกูล APIข้อความอินพุตภาพการเรียกเครื่องมือเอาต์พุตแบบโครงสร้างการสตรีมหมายเหตุ
OpenAI Chat Completionsใช่ขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลใช่ค่าเริ่มต้นที่ดีที่สุดสำหรับตัวแทนและ SDK ที่เข้ากันได้กับ OpenAI
OpenAI Responsesใช่ขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลใช่แนะนำสำหรับเวิร์กโฟลว์ตัวแทนสไตล์ OpenAI รุ่นใหม่
Anthropic Messagesใช่ขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลใช่ดีที่สุดสำหรับไคลเอนต์ที่เข้ากันได้กับ Claude และ Claude Code
Gemini OpenAI compatibilityใช่ขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลใช่ใช้โมเดล Gemini ผ่านไคลเอนต์สไตล์ OpenAI
Gemini native compatibilityใช่ขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลขึ้นอยู่กับโมเดลใช่ดีที่สุดสำหรับแอปพลิเคชัน Gemini-native ที่มีอยู่
BasicRouter image generationไม่ขึ้นอยู่กับโมเดลไม่ไม่ไม่ใช้การโพลงานอะซิงโครนัสหรือเว็บฮุก
BasicRouter video generationไม่ขึ้นอยู่กับโมเดลไม่ไม่ไม่ใช้การโพลงานอะซิงโครนัสหรือเว็บฮุก

การรับรองความถูกต้อง

คำขอ API ทุกรายการใช้โทเค็นผู้ถือ เก็บคีย์ในตัวแปรสภาพแวดล้อมฝั่งเซิร์ฟเวอร์ หมุนเวียนเมื่อการเข้าถึงของทีมเปลี่ยนแปลง และบันทึกรหัสคำขอเพื่อการดีบัก

ส่วนหัวค่าหมายเหตุ
AuthorizationBearer YOUR_API_KEYจำเป็นสำหรับทุกคำขอ
Content-Typeapplication/jsonจำเป็นสำหรับเนื้อหาคำขอ JSON

ข้อแนะนำด้านความปลอดภัยของคีย์

  1. เก็บคีย์ API ไว้บนเซิร์ฟเวอร์ อย่าเปิดเผยคีย์ในโค้ดเบราว์เซอร์หรือไคลเอนต์มือถือ
  2. Use separate keys for development, staging, production, and third-party integrations.
  3. กำหนดขอบเขตคีย์ตามสภาพแวดล้อม บริการ ลูกค้า หรือผู้เช่าเมื่อมีให้
  4. Rotate keys after employee departures, vendor access changes, or suspected leakage.
  5. เก็บคีย์ในตัวจัดการความลับหรือตัวแปรสภาพแวดล้อม ไม่ใช่โค้ดต้นฉบับ

ตัวแทนเขียนโค้ด

BasicRouter ทำงานร่วมกับตัวแทนเขียนโค้ดและเครื่องมือพัฒนา AI ที่รองรับ จุดเชื่อมต่อ API ที่เข้ากันได้กับ OpenAI หรือ Anthropic ใช้นามแฝงการกำหนดเส้นทางเช่น mwf/coding-auto เพื่อให้ BasicRouter สามารถกำหนดเส้นทางไปยังโมเดลเขียนโค้ดที่ดีที่สุดที่พร้อมใช้งาน โดยไม่ต้องให้นักพัฒนาเปลี่ยนการกำหนดค่าเครื่องมือ

การตั้งค่าที่เข้ากันได้กับ OpenAI แบบทั่วไป

ใช้การตั้งค่านี้สำหรับ Cursor, Codex, Hermes, OpenClaw, Continue, Aider, Cline, ตัวแทนที่ใช้ LangChain, ตัวแทนที่ใช้ LlamaIndex, และรันไทม์ตัวแทนที่เข้ากันได้กับ OpenAI แบบกำหนดเอง

export OPENAI_BASE_URL="https://api.basicrouter.ai/api/v1"
export OPENAI_API_KEY="$BASICROUTER_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"

การตั้งค่าที่เข้ากันได้กับ Anthropic แบบทั่วไป

ใช้การตั้งค่านี้สำหรับไคลเอนต์ที่เข้ากันได้กับ Claude และเครื่องมือที่คาดหวังรูปแบบ Anthropic Messages

export ANTHROPIC_BASE_URL="https://api.basicrouter.ai/api/anthropic"
export ANTHROPIC_API_KEY="$BASICROUTER_API_KEY"
export ANTHROPIC_MODEL="mwf/coding-auto"
กรณีการใช้งานนามแฝงที่แนะนำข้อกำหนด
การเขียนโค้ดทั่วไปmwf/coding-autoการเรียกเครื่องมือ, การสตรีม, ความสามารถเขียนโค้ดที่แข็งแกร่ง
แชทเขียนโค้ดรวดเร็วmwf/coding-fastเวลาแฝงต่ำและการสตรีม
วิเคราะห์รีโพสิทอรีขนาดใหญ่mwf/coding-longบริบทยาวและเอาต์พุตที่เสถียร
ผู้ช่วยเขียนโค้ดที่คำนึงถึงต้นทุนmwf/low-costราคาต่ำกว่าและคุณภาพการเขียนโค้ดที่ยอมรับได้
ภาพหน้าจอ UI / เขียนโค้ดด้วยการมองเห็นmwf/vision-chatอินพุตภาพและเอาต์พุตข้อความ

คู่มือฉับไว Cursor

ใช้จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI

Base URL: https://api.basicrouter.ai/api/v1
API Key:  BASICROUTER_API_KEY
Model:    mwf/coding-auto

ขั้นตอนที่แนะนำ:

  1. เปิดการตั้งค่า Cursor
  2. เพิ่มหรือเปิดใช้งานการกำหนดค่าคีย์ API ที่เข้ากันได้กับ OpenAI
  3. ตั้งค่าการแทนที่ URL ฐาน OpenAI เป็น https://api.basicrouter.ai/api/v1
  4. Add a custom model such as mwf/coding-auto, mwf/coding-fast, or mwf/coding-long.
  5. ใช้โมเดลที่รองรับการสตรีมและการเรียกเครื่องมือเพื่อพฤติกรรมตัวแทนที่ดีที่สุด

การแก้ไขปัญหา:

ปัญหาการแก้ไขที่แนะนำ
โมเดลไม่แสดงเพิ่มชื่อโมเดลด้วยตนเองเป็นโมเดลกำหนดเอง
การเรียกเครื่องมือล้มเหลวใช้โมเดลที่มี tool_calling: true ในหน้าโมเดล
การสตรีมถูกขัดจังหวะลองใหม่ด้วยการถดถอยหรือใช้นามแฝงการกำหนดเส้นทางพร้อมการสำรอง
ข้อผิดพลาด 401ตรวจสอบคีย์ API และ URL ฐาน
ข้อผิดพลาดโมเดล 404ยืนยันว่าโมเดลถูกเปิดใช้งานสำหรับบัญชี

คู่มือฉับไว Claude Code

ใช้จุดเชื่อมต่อเกตเวย์ที่เข้ากันได้กับ Anthropic

export ANTHROPIC_BASE_URL="https://api.basicrouter.ai/api/anthropic"
export ANTHROPIC_API_KEY="$BASICROUTER_API_KEY"
export ANTHROPIC_MODEL="mwf/coding-auto"

BasicRouter รองรับเส้นทางที่เข้ากันได้กับ Anthropic นี้สำหรับ Claude Code และความเข้ากันได้ของ Anthropic SDK:

POST /api/v1/messages

ข้อกำหนดที่แนะนำ:

ข้อกำหนดเหตุผล
Anthropic Messages-compatible request shapeClaude Code คาดหวังข้อความสไตล์ Anthropic
การรองรับการสตรีมClaude Code พึ่งพา UX การสตรีม
การรองรับการเรียกเครื่องมือจำเป็นสำหรับเวิร์กโฟลว์การเขียนโค้ดแบบตัวแทน
บริบทยาวมีประโยชน์สำหรับงานระดับรีโพสิทอรี
การสำรองที่เสถียรมีประโยชน์สำหรับเซสชันเขียนโค้ดที่ใช้เวลานาน

คู่มือฉับไว Codex

ใช้ BasicRouter เป็นผู้ให้บริการโมเดลที่เข้ากันได้กับ OpenAI แบบกำหนดเอง

ตัวอย่างการกำหนดค่าผู้ให้บริการ:

[model_providers.basicrouter]
name = "BasicRouter"
base_url = "https://api.basicrouter.ai/api/v1"
env_key = "BASICROUTER_API_KEY"
wire_api = "responses"

model_provider = "basicrouter"
model = "mwf/coding-auto"

ตัวแปรสภาพแวดล้อม:

export BASICROUTER_API_KEY="br_xxx"

โมเดลที่แนะนำ:

โมเดลกรณีการใช้งาน
mwf/coding-autoโมเดลตัวแทนเขียนโค้ดเริ่มต้น
mwf/coding-longบริบทรีโพสิทอรีขนาดใหญ่
mwf/coding-fastการวนซ้ำรวดเร็วและการเปลี่ยนแปลงเล็กน้อย

การแก้ไขปัญหา:

ปัญหาการแก้ไขที่แนะนำ
ข้อผิดพลาดการรับรองความถูกต้องConfirm env_key points to BASICROUTER_API_KEY.
ไม่พบโมเดลเพิ่มนามแฝงในคอนโซล BasicRouter หรือใช้รหัสโมเดลโดยตรง
ข้อผิดพลาด API ResponsesUse wire_api = "responses" only for models and endpoints that support Responses.
โมเดลที่รองรับเฉพาะ Chat Completionsสลับไปยัง API wire ที่เข้ากันได้กับแชทหากไคลเอนต์รองรับ

คู่มือฉับไว Hermes

ใช้จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI เว้นแต่การปรับใช้ Hermes ของคุณกำหนดค่าไว้สำหรับ พิธีสารอื่น

export OPENAI_BASE_URL="https://api.basicrouter.ai/api/v1"
export OPENAI_API_KEY="$BASICROUTER_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"

นโยบายโมเดลที่แนะนำ:

งาน Hermesโมเดล
การสร้างโค้ดทั่วไปmwf/coding-auto
การดำเนินการงานเวลาแฝงต่ำmwf/coding-fast
สแกนรีโพสิทอรีบริบทยาวmwf/coding-long
งานเบื้องหลังที่คำนึงถึงต้นทุนmwf/low-cost

คู่มือฉับไว OpenClaw

ใช้จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI สำหรับการกำหนดค่ารันไทม์ตัวแทนสไตล์ OpenAI

export OPENAI_BASE_URL="https://api.basicrouter.ai/api/v1"
export OPENAI_API_KEY="$BASICROUTER_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"

หาก OpenClaw รองรับผู้ให้บริการหลายราย ให้กำหนดค่า BasicRouter เป็นผู้ให้บริการที่เข้ากันได้กับ OpenAI และใช้นามแฝงการกำหนดเส้นทาง BasicRouter สำหรับการเลือกโมเดล

{
  "provider": "openai-compatible",
  "base_url": "https://api.basicrouter.ai/api/v1",
  "api_key_env": "BASICROUTER_API_KEY",
  "model": "mwf/coding-auto"
}

รายการตรวจสอบความเข้ากันได้ของตัวแทน

ความสามารถจำเป็นสำหรับ
การสตรีมUX ของเทอร์มินัล/เอดิเตอร์ที่ดี
การเรียกเครื่องมือการเขียนโค้ดแบบตัวแทน, การแก้ไขไฟล์, การดำเนินการคำสั่ง
บริบทยาวพื้นที่เก็บข้อมูลขนาดใหญ่และการเปลี่ยนแปลงหลายไฟล์
เอาต์พุตแบบโครงสร้างการวางแผน การแบ่งงาน เวิร์กโฟลว์อัตโนมัติ
อินพุตภาพการวิเคราะห์ภาพหน้าจอ UI และเวิร์กโฟลว์ออกแบบสู่โค้ด
การสำรองความเสถียรของการผลิตและงานที่ใช้เวลานาน

การใช้งานคอนโซล

คอนโซล BasicRouter เป็นระนาบควบคุมการดำเนินงานสำหรับการเข้าถึง API ความพร้อมของโมเดล นโยบายการกำหนดเส้นทาง การมองเห็นการใช้งาน และการบริหารการเรียกเก็บเงิน มอบ มุมมองรวมศูนย์ให้ผู้ดูแลบัญชีเกี่ยวกับคีย์ โมเดล คำขอ เครดิต และ การควบคุมระดับบัญชีสำหรับการเข้าชมโมเดลการผลิต

การจัดการคีย์ API

สร้าง หมุนเวียน เพิกถอน และติดป้ายกำกับคีย์ API จากคอนโซล ใช้คีย์แยกสำหรับ การพัฒนา การจัดเตรียม การผลิต และบริการแต่ละรายการ เพื่อให้สามารถตรวจสอบและ แยกการใช้งานตามสภาพแวดล้อมหรือแอปพลิเคชัน

แนวปฏิบัติคำอธิบาย
แยกสภาพแวดล้อมUse different API keys for development, staging, and production traffic.
ใช้ป้ายกำกับที่สื่อความหมายติดป้ายกำกับคีย์ตามแอปพลิเคชัน บริการ สภาพแวดล้อม หรือการรวมระบบ
หมุนเวียนเป็นประจำRotate keys when access changes or credentials may have been exposed.
หลีกเลี่ยงการเปิดเผยฝั่งไคลเอนต์Keep API keys on server-side systems only. Do not expose keys in browser or mobile client code.
ติดตามการใช้งานคีย์Review request volume, credit consumption, and error patterns by key.

รายการโมเดล

ใช้หน้าโมเดลเพื่อตรวจสอบโมเดลที่พร้อมใช้งานสำหรับบัญชี รายการโมเดลแต่ละรายการอาจ รวมถึงผู้ผลิต ผู้ให้บริการ รูปแบบ ตระกูล API ที่รองรับ ความยาวบริบท แฟล็กความสามารถ สถานะความพร้อมใช้งาน และข้อมูลราคา

ตัวกรองวัตถุประสงค์
ผู้ผลิตFilter by model vendor such as OpenAI, Anthropic, Google, Qwen, DeepSeek, or other providers.
ผู้ให้บริการกรองตามผู้ให้บริการหรือผู้ให้บริการคลาวด์
รูปแบบFilter by text, image, video, embedding, audio, or multimodal support.
ความสามารถFilter by streaming, tool calling, structured outputs, vision, prompt caching, or reasoning support.
ความพร้อมใช้งานระบุโมเดลที่พร้อมใช้งานสำหรับบัญชีปัจจุบัน

สำหรับแอปพลิเคชันการผลิต ให้ตรวจสอบความสามารถของโมเดลก่อนเปิดใช้งานการเข้าชม พารามิเตอร์และคุณสมบัติบางอย่างขึ้นอยู่กับโมเดลและอาจไม่รองรับในทุก ตระกูล API

การใช้งาน & บันทึก

มุมมองการใช้งาน & บันทึก ให้การมองเห็นการดำเนินงานของการเข้าชม API ทีมสามารถ ตรวจสอบปริมาณคำขอ โมเดลที่เลือก เป้าหมายการกำหนดเส้นทางที่แก้ไขแล้ว การใช้เครดิต เวลาแฝง รหัสข้อผิดพลาด และรหัสคำขอ

  • แก้ไขปัญหาคำขอที่ล้มเหลว
  • ระบุงานที่มีต้นทุนสูง
  • เปรียบเทียบการใช้งานโมเดลข้ามแอปพลิเคชันและสภาพแวดล้อม
  • ตรวจสอบพฤติกรรมการกำหนดเส้นทางและการสำรอง
  • สืบสวนปัญหาเวลาแฝงหรือความพร้อมของผู้ให้บริการ
  • ระบุรหัสคำขอเมื่อติดต่อฝ่ายสนับสนุน

การตอบกลับ API แต่ละรายการรวมหรือเปิดเผยรหัสคำขอ BasicRouter เก็บรหัสนี้ใน บันทึกแอปพลิเคชันของคุณเพื่อให้การดีบักการผลิตและการขยายการสนับสนุนมีประสิทธิภาพมากขึ้น

การสำรอง

การสำรองเป็นกลไกความยืดหยุ่นของ BasicRouter เมื่อโมเดลหลักหรือนโยบายการกำหนดเส้นทาง ล้มเหลว ระบบจะสลับไปยังโมเดลสำรองโดยอัตโนมัติเพื่อดำเนินการ คำขอต่อ นี่ทำให้แอปพลิเคชันของคุณตอบสนองและลดความเสี่ยงของการ หยุดชะงักของบริการ

การรับประกันความพร้อมใช้งานสูง
Fallback acts like a safety net, keeping your application running smoothly even when a model failure, quota limit, or network fluctuation occurs.

ทำไมการสำรองจึงสำคัญ

ในการผลิต บริการโมเดลอาจประสบปัญหาที่คาดเดาไม่ได้หลายประการ:

  • ความล้มเหลวของบริการโมเดล: API ต้นน้ำกลายเป็น ไม่พร้อมใช้งานชั่วคราวหรือหมดเวลา
  • การผันผวนของประสิทธิภาพ: โหลดโมเดลสูงนำไปสู่การตอบกลับ ช้าหรือล้มเหลว
  • ความล้มเหลวของการกำหนดเส้นทาง: โมเดลผู้สมัครทั้งหมดที่เลือกโดยการกำหนดเส้นทางอัจฉริยะ กลายเป็นไม่พร้อมใช้งาน

การสำรองทำให้แอปพลิเคชันของคุณพร้อมใช้งานโดยให้เส้นทางสำรองที่เชื่อถือได้

ข้อได้เปรียบหลัก

ข้อได้เปรียบคำอธิบาย
ความพร้อมใช้งานสูงการสลับระบบอัตโนมัติทำให้บริการทำงานต่อไปและลดผลกระทบของ การหยุดทำงาน
การสลับที่โปร่งใสระบบสลับโมเดลโดยอัตโนมัติ — ไม่ต้องเปลี่ยนแปลงโค้ด แอปพลิเคชัน
การกำหนดค่าที่ยืดหยุ่นรองรับทั้งการกำหนดค่าระดับคำขอและระดับบัญชีสำหรับกรณี การใช้งานที่แตกต่างกัน
การเพิ่มประสิทธิภาพต้นทุนเลือกโมเดลที่คุ้มค่ากว่าเป็นการสำรองเพื่อควบคุม ต้นทุนฉุกเฉิน
การจัดการแบบรวมศูนย์Configure once at the account level and it applies automatically to every request.

การกำหนดค่าโมเดลสำรองทั่วไป

BasicRouter รองรับการตั้งค่าโมเดลสำรองทั่วไปจากแบ็กเอนด์คอนโซล คำขอทั้งหมดใช้โมเดลนี้เป็นการสำรองโดยอัตโนมัติเมื่อล้มเหลว

วิธีการกำหนดค่า:

  1. Go to the หน้าการตั้งค่ากลยุทธ์ BasicRouter.
  2. ค้นหาการตั้งค่า โมเดลสำรองเริ่มต้น
  3. เลือกโมเดลสำรองทั่วไปจากรายการแบบเลื่อนลง
  4. บันทึกการตั้งค่าเพื่อใช้ทันที

ข้อได้เปรียบของการกำหนดค่าทั่วไป:

  • ไม่ต้องเปลี่ยนแปลงโค้ด: กำหนดค่าครั้งเดียวและใช้ทั่วโลก โดยไม่ต้องทำซ้ำการตั้งค่าในทุกคำขอ
  • การจัดการแบบรวมศูนย์: จัดการนโยบายสำรองในที่เดียวเพื่อ การปรับเปลี่ยนและการติดตามที่ง่ายขึ้น
  • การบำรุงรักษาที่ง่ายขึ้น: ลดความซับซ้อนของโค้ดและโอกาส เกิดข้อผิดพลาดในการกำหนดค่า
  • การแทนที่ที่ยืดหยุ่น: การกำหนดค่าสำรองระดับคำขอมี ลำดับความสำคัญสูงกว่าและสามารถแทนที่การตั้งค่าทั่วไปสำหรับสถานการณ์เฉพาะ

การกำหนดค่าสำรองระดับคำขอ

สำหรับสถานการณ์ทางธุรกิจเฉพาะ คุณสามารถระบุโมเดลสำรองใน คำขอแต่ละรายการเพื่อแทนที่การกำหนดค่าทั่วไป

ระบุโมเดลสำรองด้วยพารามิเตอร์ router.fallBackModels:

{
  "model": "claude-sonnet-4",
  "messages": [
    {
      "role": "user",
      "content": "Explain what quantum computing is"
    }
  ],
  "router": {
    "fallBackModels": ["glm-5.2"]
  }
}

กฎลำดับความสำคัญ

เมื่อมีการกำหนดค่าสำรองหลายรายการ ลำดับความสำคัญจะทำงานจากสูงสุดไปยัง ต่ำสุด:

  1. ระดับคำขอ router.fallBackModels: โมเดลสำรองที่ระบุในคำขอแต่ละรายการ
  2. โมเดลสำรองเริ่มต้นทั่วไป: โมเดลสำรองทั่วไปที่กำหนดค่า ในคอนโซล
  3. ไม่มีการสำรอง: หากไม่ได้กำหนดค่าทั้งสองอย่าง คำขอจะส่งกลับข้อผิดพลาด เมื่อล้มเหลว
⚠ หมายเหตุสำคัญ
  • หากโมเดลสำรองทั้งหมดล้มเหลว ระบบจะส่งกลับเหตุผลความล้มเหลวจาก โมเดลสุดท้ายที่ลอง
  • เมื่อเกิดการสำรอง การตอบกลับจะระบุโมเดลที่ใช้จริง ทำให้ ง่ายต่อการติดตามและวิเคราะห์

การบริหารบัญชี

ขึ้นอยู่กับประเภทบัญชี คอนโซลอาจรวมถึงการเปิดใช้งานโมเดลระดับบัญชี การควบคุมผู้ค้าต่อหรือผู้แจกจ่าย การกำหนดค่าการเรียกเก็บเงิน และการตั้งค่าการเข้าถึง ผู้ดูแลสามารถใช้การควบคุมเหล่านี้เพื่อจัดการการเข้าถึงโมเดล การมองเห็นการใช้งาน และ ความรับผิดชอบการเรียกเก็บเงินให้สอดคล้องกับแอปพลิเคชัน บัญชีลูกค้า หรือหน่วยธุรกิจ

รายการตรวจสอบการดำเนินงานการผลิต

รายการข้อแนะนำ
คีย์ APIใช้คีย์การผลิตเฉพาะที่มีป้ายกำกับชัดเจน
โมเดลConfirm model availability, pricing, context length, and required capabilities.
การกำหนดเส้นทางConfigure routing aliases or fallback policies for critical workloads.
บันทึกตรวจสอบให้รหัสคำขอถูกบันทึกในบันทึกแอปพลิเคชัน
การเรียกเก็บเงินยืนยันยอดคงเหลือกระเป๋าเงิน สถานะแผน และกฎการหักเครดิต
ขีดจำกัดอัตราตรวจสอบขีดจำกัด RPM, TPM, การทำงานพร้อมกัน และงานสื่อระดับบัญชี
การแจ้งเตือนMonitor usage growth, credit balance, errors, and provider availability.

การเรียกเก็บเงิน & เครดิต

BasicRouter ใช้โมเดลการเรียกเก็บเงินแบบเครดิตสำหรับงานโมเดลข้อความ ภาพ วิดีโอ และ งานอื่นๆ ที่รองรับ เครดิตเป็นหน่วยรวมสำหรับการใช้งานหลายโมเดลและ หลายผู้ให้บริการ เพื่อให้ทีมสามารถจัดการการใช้งานได้อย่างสม่ำเสมอข้ามรูปแบบและ ตระกูล API

ราคาโมเดลโดยละเอียดมีให้ในหน้าโมเดลหรือผ่าน API ข้อมูลเมตาของโมเดล ราคาอาจแตกต่างกันตามโมเดล ผู้ให้บริการ รูปแบบ ความละเอียด ประเภทโทเค็น ความยาวเอาต์พุต ระยะเวลางาน ประเภทบัญชี และข้อตกลงเชิงพาณิชย์

เติมเงิน & กระเป๋าเงิน

บัญชีสามารถเพิ่มเครดิตกระเป๋าเงินจ่ายตามการใช้งานสำหรับการใช้งานที่ยืดหยุ่น เครดิตกระเป๋าเงิน ใช้หลังจากเครดิตแผนรายเดือนและแพ็กเกจทรัพยากรถูกใช้หมด ยกเว้นกฎการเรียกเก็บเงิน แบบกำหนดเองที่ใช้กับบัญชี

เครดิตกระเป๋าเงินไม่หมดอายุ เว้นแต่ระบุไว้เป็นอย่างอื่นในเงื่อนไขทางพาณิชย์ที่บังคับใช้ มีค่าธรรมเนียมบริการเมื่อเติมเงินกระเป๋าเงินจ่ายตามการใช้งาน

แผนรายเดือนและแพ็กเกจทรัพยากร

ผู้ใช้หรือบัญชีแต่ละรายสามารถเลือกแผนรายเดือนที่ใช้งานอยู่หนึ่งแผน แผนรายเดือนให้ ปริมาณความจุการใช้งานที่กำหนด เงื่อนไขทางพาณิชย์ และการกำหนดค่าการเข้าถึง ระดับบัญชีสำหรับรอบการเรียกเก็บเงิน

ผู้ใช้ยังสามารถซื้อแพ็กเกจทรัพยากรหลายแพ็กเกจเพื่อเพิ่มความจุการใช้งาน แพ็กเกจ ทรัพยากรสามารถแยกการใช้งานที่ผูกมัดจากยอดคงเหลือกระเป๋าเงินจ่ายตามการใช้งานและมีประโยชน์สำหรับ การใช้งานข้อความ ภาพ วิดีโอ ปริมาณมาก หรืองานเฉพาะ

ลำดับการหักเงิน

เว้นแต่จะกำหนดค่ากฎการเรียกเก็บเงินแบบกำหนดเอง เครดิตจะถูกหักใน ลำดับต่อไปนี้:

ลำดับความสำคัญแหล่งเครดิตคำอธิบาย
1แผนรายเดือนความจุการใช้งานรายเดือนที่รวมถูกใช้ก่อน
2แพ็กเกจทรัพยากรแพ็กเกจที่ซื้อเพิ่มถูกใช้หลังเครดิตแผนรายเดือน
3กระเป๋าเงินจ่ายตามการใช้งานยอดคงเหลือกระเป๋าเงินถูกใช้หลังเครดิตแผนและแพ็กเกจทรัพยากร

สำหรับบัญชีที่มีเงื่อนไขทางพาณิชย์แบบกำหนดเอง ลำดับการหักเงิน กฎการหมดอายุ การใช้งาน ที่รวม และราคาอาจแตกต่างกัน กฎเฉพาะบัญชีจะแสดงในคอนโซลหรือ ระบุผ่านข้อตกลงทางพาณิชย์

ราคาที่กำหนดเอง

ราคาสามารถกำหนดเองสำหรับผู้ใช้หรือบัญชีแต่ละราย ลูกค้าองค์กร บัญชีผู้ค้าต่อ บัญชีผู้แจกจ่าย และลูกค้าที่ใช้ปริมาณมากอาจมีสิทธิ์ได้รับราคา กำหนดเอง ติดต่อฝ่ายขายเพื่อขอราคา

ราคากำหนดเองสามารถกำหนดค่าตามบัญชี โมเดล ผู้ให้บริการ รูปแบบ ภูมิภาค ปริมาณ การใช้งาน หรือข้อตกลงทางพาณิชย์ เมื่อเปิดใช้งานราคากำหนดเอง คอนโซลและ API การเรียกเก็บเงินจะแสดงราคาและกฎการหักเงินเฉพาะบัญชีเมื่อมี

หน่วยราคา

โมดอลิตี้โมเดลที่แตกต่างกันใช้หน่วยวัดที่แตกต่างกัน BasicRouter แปลง หน่วยเหล่านี้เป็นเครดิตตามกฎการกำหนดราคาของโมเดล

รูปแบบพื้นฐานราคาทั่วไป
ข้อความโทเค็นอินพุต โทเค็นเอาต์พุต โทเค็นอ่านแคช โทเค็นเขียนแคช โทเค็น ให้เหตุผล หรือหมวดหมู่โทเค็นเฉพาะโมเดล
ภาพโมเดล ความละเอียด จำนวนภาพที่สร้าง การใช้ภาพอินพุต โหมดแก้ไข หรือการตั้งค่าคุณภาพ
วิดีโอโมเดล ความละเอียดเอาต์พุต วินาทีที่สร้าง อัตราส่วนภาพ การใช้ภาพหรือวิดีโอ อินพุต และประเภทงาน
การฝังโทเค็นอินพุตหรือจำนวนระเบียนการฝัง
เสียงระยะเวลาอินพุต ระยะเวลาเอาต์พุต ความยาวการถอดเสียง หรือหน่วย เสียงเฉพาะโมเดล

หน่วยราคาอาจแตกต่างกันตามโมเดล โปรดดูหน้ารายละเอียดโมเดลหรือข้อมูลเมตา ราคาก่อนเปิดใช้งานโมเดลในการผลิตเสมอ

การระบุแหล่งที่มาการใช้งาน

การใช้งาน BasicRouter สามารถตรวจสอบได้ตามบัญชี คีย์ API โมเดล รูปแบบ หรือช่วงเวลา ซึ่งช่วยให้ทีมสามารถระบุต้นทุนให้กับแอปพลิเคชัน สภาพแวดล้อม ลูกค้า หรือ หน่วยธุรกิจภายใน

มิติข้อมูลคำอธิบาย
API keyจัดกลุ่มการใช้งานตามแอปพลิเคชัน บริการ หรือสภาพแวดล้อม
Modelเปรียบเทียบต้นทุนและปริมาณตามโมเดลที่เลือก
Resolved modelตรวจสอบโมเดลจริงที่ใช้หลังการกำหนดเส้นทางหรือการสำรอง
รูปแบบแยกการใช้งานข้อความ ภาพ วิดีโอ การฝัง และเสียง
Time rangeตรวจสอบรอบการรายงานรายวัน รายเดือน หรือกำหนดเอง
MetadataGroup usage by custom request metadata such as customer ID, tenant ID, user ID, or environment.

ยอดเครดิตคงเหลือ

ตรวจสอบจำนวนเครดิตที่พร้อมใช้งานในบัญชีของคุณ ยอดคงเหลือถูกแบ่งเป็น กระเป๋าเงินสามใบที่หักตามลำดับ: เงินช่วยเหลือแผนรายเดือน แพ็กเกจทรัพยากรที่ซื้อ และกระเป๋าเงินจ่ายตามการใช้งาน ยอดรวมทรัพยากรรวม (แผนรายเดือน + แพ็กเกจ ทรัพยากร ไม่รวมจ่ายตามการใช้งาน) ยังมีให้สำหรับติดตามการใช้งานที่รวมแยกจาก การใช้จ่ายเติมเงิน

เพื่อดึงข้อมูลนี้โดยใช้โปรแกรม ดู GET /v1/billing/balance ใน การอ้างอิง API

รายละเอียดการใช้งาน

ตรวจสอบรายการการใช้งานแต่ละรายการแบบแบ่งหน้าตามลำดับเวลาสำหรับการรายงาน การติดตาม และการจัดสรรต้นทุนภายใน แต่ละรายการแสดงโมเดล ประเภทโมเดล (ข้อความ ภาพ หรือวิดีโอ) เครดิตที่หัก และรายละเอียดว่าการหักแต่ละรายการถูกหักจากกระเป๋าเงินใด ผลลัพธ์สามารถกรองตามช่วงเวลาเฉพาะ

เพื่อดึงข้อมูลนี้โดยใช้โปรแกรม ดู GET /v1/usage ใน การอ้างอิง API

ประวัติธุรกรรม

ใช้ประวัติธุรกรรมเพื่อตรวจสอบการเคลื่อนไหวของเครดิต รวมถึงการเติมเงิน การจัดสรร แผน การให้แพ็กเกจทรัพยากร การหักการใช้งาน การปรับ และการแก้ไข ทางการบริหาร

เพื่อดึงข้อมูลนี้โดยใช้โปรแกรม ดู GET /v1/billing/transactions ใน การอ้างอิง API

คำขอที่ล้มเหลวและการคืนเงิน

ข้อผิดพลาดในการตรวจสอบ ข้อผิดพลาดการรับรองความถูกต้อง และข้อผิดพลาดการอนุญาต มักไม่ถูกเรียกเก็บเงินเพราะไม่มีการดำเนินการโมเดล คำขอที่ถึงโมเดลต้นน้ำหรือ สร้างเอาต์พุตบางส่วนอาจใช้เครดิตขึ้นอยู่กับโมเดล ผู้ให้บริการ และ สถานะการตอบกลับ

สำหรับงานภาพและวิดีโออะซิงโครนัส พฤติกรรมการเรียกเก็บเงินขึ้นอยู่กับว่างานถูก ยอมรับ เริ่ม เสร็จสิ้น ล้มเหลว หรือยกเลิก การตอบกลับรายละเอียดงานรวม ข้อมูลการใช้งานเมื่อเครดิตถูกใช้

การเติมเงิน แผนรายเดือน แพ็กเกจทรัพยากร และเครดิตที่ใช้แล้วไม่สามารถคืนได้ เว้นแต่ ระบุไว้เป็นอย่างอื่นในข้อตกลงทางพาณิชย์ที่บังคับใช้หรือตามที่กฎหมายกำหนด

การอ้างอิง API

ข้อตกลงทั่วไป

URL ฐาน

จุดเชื่อมต่อทั้งหมดให้บริการภายใต้คำนำหน้า /v1

การรับรองความถูกต้อง

การเรียกจุดเชื่อมต่อ /v1/* ใช้การรับรองความถูกต้อง คีย์ API (ไม่ใช่ JWT) คีย์ API ส่งผ่านส่วนหัวต่อไปนี้:

ส่วนหัวรูปแบบคำอธิบาย
AuthorizationBearer <api_key>สไตล์ OpenAI จุดเชื่อมต่อที่เข้ากันได้กับ Anthropic ยังยอมรับ x-api-key กับ anthropic-version: 2023-06-01

คีย์ที่ขาดหายไปหรือไม่ถูกต้องจะส่งกลับ 401

การตรวจสอบยอดคงเหลือล่วงหน้า

จุดเชื่อมต่อเรียกโมเดลทั้งหมดจะตรวจสอบยอดคงเหลือก่อนการดำเนินการ:

  • Insufficient balance returns Insufficient credit, mapped to:
    • พิธีสาร OpenAI: HTTP 400, code = insufficient_quota
    • พิธีสาร Anthropic: HTTP 402, type = billing_error
  • จุดเชื่อมต่อบางรายการยังประเมินต้นทุนขั้นต่ำต่อโมเดลสำหรับการตรวจสอบล่วงหน้าครั้งที่สอง

POST https://api.basicrouter.ai/api/v1/chat/completions

จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI Chat Completions รองรับการสตรีมและไม่สตรีม การเรียก เครื่องมือ โหมด JSON และอินพุตหลายรูปแบบ

ฟิลด์ประเภทจำเป็นคำอธิบาย
modelStringใช่ชื่อโมเดล
messagesMessage[]ใช่ข้อความสนทนา
streamBooleanไม่โหมดสตรีม ค่าเริ่มต้น false
temperatureDoubleไม่อุณหภูมิการสุ่มตัวอย่าง
max_tokensIntegerไม่โทเค็นเอาต์พุตสูงสุด
top_pDoubleไม่การสุ่มตัวอย่างนิวเคลียส
presence_penaltyDoubleไม่
frequency_penaltyDoubleไม่
toolsTool[]ไม่นิยามเครื่องมือ
tool_choiceString|Objectไม่auto / none / required / specific function.
response_formatObjectไม่{type, json_schema:{name,schema,strict}}; text/json_object/json_schema.
parallel_tool_callsBooleanไม่
metadataMapไม่ข้อมูลเมตาแบบส่งผ่าน

Message fields:

ฟิลด์ประเภทคำอธิบาย
roleStringsystem / user / assistant / tool.
contentString|ArrayPlain text or multimodal content block array ([{type:"text",text},{type:"image_url",image_url:{url}}]).
tool_call_idStringเชื่อมโยงไปยัง tool_calls เมื่อ role=tool
tool_callsToolCall[]มีเมื่อ role=assistant เรียกเครื่องมือ
ฟิลด์ประเภทคำอธิบาย
typeStringค่าคงที่ function
functionObjectนิยามฟังก์ชัน
function.nameStringชื่อฟังก์ชัน
function.descriptionStringคำอธิบายฟังก์ชัน
function.parametersObjectJSON Schema สำหรับอินพุต
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/chat/completions \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "glm-5.2",
    "messages": [{"role": "user", "content": "Describe Hangzhou in one sentence."}],
    "stream": false,
    "temperature": 0.7
  }'
{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1721380000,
  "model": "glm-5.2",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Hangzhou is ..."},
      "finish_reason": "stop"
    }
  ],
  "usage": {"prompt_tokens": 12, "completion_tokens": 18, "total_tokens": 30}
}

ฟิลด์การตอบกลับ (ไม่สตรีม):

ฟิลด์ประเภทคำอธิบาย
idStringรหัสการเติมเต็ม
objectStringค่าคงที่ chat.completion
createdLongการประทับเวลาที่สร้าง (วินาที)
modelStringชื่อโมเดล
choicesChoice[]{index, message:{role, content, tool_calls?}, finish_reason}.
usageObject{prompt_tokens, completion_tokens, total_tokens}.
ฟิลด์ประเภทคำอธิบาย
idStringรหัสการเรียกเครื่องมือ
typeStringค่าคงที่ function
functionObjectรายละเอียดการเรียกฟังก์ชัน
function.nameStringชื่อฟังก์ชัน
function.argumentsObjectอาร์กิวเมนต์ฟังก์ชัน

ตัวอย่างการตอบกลับแบบสตรีม:

data: {"object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant","content":"..."}}]}

data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"..."}}]}

data: [DONE]

POST https://api.basicrouter.ai/api/v1/responses

จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI Responses ใช้ input แทน messages instructions แทนข้อความระบบ และ บล็อก text แทน response_format

ฟิลด์ประเภทจำเป็นคำอธิบาย
modelStringใช่ชื่อโมเดล
inputString|Arrayใช่สตริงธรรมดา (ข้อความผู้ใช้) หรืออาร์เรย์ออบเจ็กต์ข้อความ
instructionsStringไม่พร้อมต์ระบบ
streamBooleanไม่ค่าเริ่มต้น false
max_output_tokensIntegerไม่โทเค็นเอาต์พุตสูงสุด
temperatureDoubleไม่ค่าเริ่มต้น 1
top_pDoubleไม่
toolsTool[]ไม่ระดับบน {type, name, description, parameters}
tool_choiceString|Objectไม่auto/none/required/{type,name}.
textObjectไม่{format:{type, name, schema, strict}}; text/json_object/json_schema.
metadataMapไม่
previous_response_idStringไม่รหัสการตอบกลับก่อนหน้าสำหรับหลายรอบ
parallel_tool_callsBooleanไม่
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/responses \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "glm-5.2",
    "input": "Describe Hangzhou in one sentence.",
    "instructions": "Be concise.",
    "stream": false
  }'
{
  "id": "resp_xxx",
  "object": "response",
  "model": "glm-5.2",
  "status": "completed",
  "created_at": 1721380000,
  "output": [
    {
      "id": "msg_xxx",
      "type": "message",
      "role": "assistant",
      "content": [{"type": "output_text", "text": "Hangzhou is ..."}],
      "status": "completed"
    }
  ],
  "usage": {"input_tokens": 12, "output_tokens": 18, "total_tokens": 30}
}

ฟิลด์การตอบกลับ (ไม่สตรีม):

ฟิลด์ประเภทคำอธิบาย
idStringรหัสการตอบกลับ
objectStringค่าคงที่ response
modelStringชื่อโมเดล
statusStringเช่น completed
created_atLongการประทับเวลาที่สร้าง (วินาที)
outputArrayOutput items. Message items: {id, type:"message", role, content:[{type:"output_text", text}], status}. Tool-call items: {type:"function_call", id, name, call_id, arguments, status}.
usageObject{input_tokens, output_tokens, total_tokens}. For Claude models, input_tokens includes cache_read and output_tokens includes cache_write.

การสตรีมตามเหตุการณ์ API Responses:

เหตุการณ์คำอธิบาย
response.createdจุดเริ่มต้นของสตรีมการตอบกลับ
response.output_text.deltaการอัปเดตเอาต์พุตข้อความแบบเพิ่มขึ้น
response.completedจุดสิ้นสุดของสตรีมการตอบกลับ

POST https://api.basicrouter.ai/api/v1/messages

จุดเชื่อมต่อที่เข้ากันได้กับ Anthropic Messages ยอมรับส่วนหัว x-api-key และ anthropic-version: 2023-06-01 บล็อกเนื้อหารองรับ text, image, tool_use, tool_result, thinking และ redacted_thinking

ฟิลด์ประเภทจำเป็นฟิลด์ JSONคำอธิบาย
modelStringใช่modelชื่อโมเดล
messagesMessage[]ใช่messagesข้อความสนทนา
systemString|Arrayไม่systemพร้อมต์ระบบ สตริงหรือ [{type,text}]
maxTokensIntegerใช่max_tokensโทเค็นเอาต์พุตสูงสุด
streamBooleanไม่streamการสตรีม
temperatureDoubleไม่temperature
topPDoubleไม่top_p
topKIntegerไม่top_k
toolsTool[]ไม่toolsนิยามเครื่องมือ (input_schema)
toolChoiceObjectไม่tool_choice
metadataMapไม่metadata
thinkingObjectไม่thinkingการกำหนดค่าการคิดแบบขยาย
stopSequencesObjectไม่stop_sequences
anthropicBetaObjectไม่anthropic_betaส่วนหัวฟีเจอร์เบต้า
ฟิลด์ประเภทคำอธิบาย
roleStringบทบาทข้อความ เช่น user / assistant
contentString|ContentBlock[]ข้อความธรรมดาหรืออาร์เรย์ของบล็อกเนื้อหา
ฟิลด์ประเภทคำอธิบาย
typeStringOne of text, image, tool_use, tool_result, thinking, redacted_thinking.
textStringมีเมื่อ type เป็น text
sourceObjectมีเมื่อ type เป็น image

ตัวอย่างบล็อกภาพ:

{ "type": "image", "source": { "type": "base64", "media_type": "...", "data": "..." } }
{ "type": "image", "source": { "type": "url", "url": "..." } }
ฟิลด์ประเภทคำอธิบาย
nameStringชื่อฟังก์ชัน
descriptionStringคำอธิบายฟังก์ชัน
input_schemaObjectJSON Schema สำหรับอินพุต
cache_controlObjectการควบคุมแคชที่เลือกได้
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/messages \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "anthropic-version: 2023-06-01" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "claude-sonnet-4.6",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Describe Hangzhou in one sentence."}]
  }'
{
  "id": "msg_xxx",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4.6",
  "content": [{"type": "text", "text": "Hangzhou is ..."}],
  "stop_reason": "end_turn",
  "usage": {"input_tokens": 12, "output_tokens": 18}
}

ฟิลด์การตอบกลับ (ไม่สตรีม):

ฟิลด์ประเภทคำอธิบาย
idStringรหัสข้อความ
typeStringค่าคงที่ message
roleStringค่าคงที่ assistant
modelStringชื่อโมเดล
contentContentBlock[]Response content blocks (e.g. {type:"text", text}, {type:"tool_use", ...}).
stop_reasonStringe.g. end_turn, tool_use, max_tokens.
usageObject{input_tokens, output_tokens}
เหตุการณ์คำอธิบาย
message_startจุดเริ่มต้นของสตรีมข้อความ
content_block_startจุดเริ่มต้นของบล็อกเนื้อหาใหม่
content_block_deltaการอัปเดตแบบเพิ่มขึ้นสำหรับบล็อกเนื้อหา
content_block_stopจุดสิ้นสุดของบล็อกเนื้อหา
message_deltaการอัปเดตแบบเพิ่มขึ้นสำหรับข้อความ
message_stopจุดสิ้นสุดของสตรีมข้อความ

GET https://api.basicrouter.ai/api/v1/models

ส่งคืนโมเดล API ที่ออนไลน์และเปิดใช้งานทั้งหมด

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "object": "list",
  "data": [
    {
      "id": "glm-5.2",
      "object": "model",
      "display_name": "glm-5.2",
      "created": 1721380000,
      "owned_by": "Zai",
      "input_modalities": ["text", "image"],
      "output_modalities": ["text"],
      "context_length": 128000
    }
  ]
}

ฟิลด์ของแต่ละรายการโมเดล (data[]):

ฟิลด์ประเภทคำอธิบาย
idStringรหัสโมเดล
objectStringค่าคงที่ model
display_nameStringชื่อที่แสดง
createdLongการประทับเวลาที่สร้าง (วินาที)
owned_byStringเจ้าของ / ผู้ผลิต
input_modalitiesString[]e.g. ["text","image"].
output_modalitiesString[]เช่น ["text"]
context_lengthIntegerความยาวบริบทสูงสุด

GET https://api.basicrouter.ai/api/v1/models/{model}

ส่งคืนโมเดลเดียวที่มีรูปร่างเดียวกับรายการในรายการ ส่งกลับ HTTP 404 เมื่อ โมเดลไม่มีอยู่

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/models/gpt-5.5 \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

การตอบกลับสำเร็จ: ออบเจ็กต์โมเดลเดียวที่มีฟิลด์เดียวกันกับ รายการใน /v1/models

เมื่อโมเดลไม่มีอยู่ จะส่งกลับ HTTP 404:

{"error": {"message": "The model 'xxx' does not exist", "type": "invalid_request_error", "code": "invalid_model_error"}}

GET https://api.basicrouter.ai/api/v1/image-models

สอบถามความละเอียด อัตราส่วน และจำนวนสูงสุดที่รองรับโดยโมเดลภาพก่อน เรียก /v1/image-generations ไม่ต้องรับรองความถูกต้อง

ฟิลด์ประเภทคำอธิบาย
idStringรหัสโมเดล
objectStringค่าคงที่ image_model
displayNameStringชื่อที่แสดง
descriptionStringคำอธิบายโมเดล
iconStringURL ไอคอน
createdLongการประทับเวลาที่สร้าง (วินาที)
maxCountIntegerภาพสูงสุดต่อคำขอ
fileMaxIntegerภาพอ้างอิงสูงสุด
resolutionsString[]Supported resolutions, e.g. ["720p","1080p"].
ratiosString[]Supported aspect ratios, e.g. ["1:1","3:2"].
curl --request GET \
  --url https://api.basicrouter.ai/api/v1/image-models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "object": "list",
  "data": [
    {
      "id": "gpt-image-2",
      "object": "image_model",
      "displayName": "GPT Image 1",
      "description": "...",
      "icon": "...",
      "created": 1721380000,
      "maxCount": 4,
      "fileMax": 10,
      "resolutions": ["720p", "1080p"],
      "ratios": ["1:1", "3:2"]
    }
  ]
}

GET https://api.basicrouter.ai/api/v1/video-models

สอบถามค่า videoType ที่รองรับ ช่วงระยะเวลา ความละเอียด และ อัตราส่วนสำหรับโมเดลวิดีโอก่อนเรียก /v1/video-generations ไม่ ต้องรับรองความถูกต้อง

ฟิลด์ประเภทคำอธิบาย
idStringรหัสโมเดล
objectStringค่าคงที่ video_model
displayNameStringชื่อที่แสดง
descriptionStringคำอธิบายโมเดล
iconStringURL ไอคอน
createdLongการประทับเวลาที่สร้าง (วินาที)
allowedVideoTypesVideoTypeOption[]รายการ videoType ที่รองรับ
videoDurationMinIntegerวินาทีขั้นต่ำต่อคลิป
videoDurationMaxIntegerวินาทีสูงสุดต่อคลิป
videoDurationSuggestInteger[]ขั้นระยะเวลาที่แนะนำ เช่น [5,8,10]
resolutionsString[]ความละเอียดที่รองรับ
ratiosString[]อัตราส่วนภาพที่รองรับ
resolutionOptionsResolutionOption[]ชุดค่าผสมความละเอียด+อัตราส่วน+ขนาดแบบโครงสร้าง
fileMaxIntegerเนื้อหาอ้างอิงสูงสุด

VideoTypeOption fields:

ฟิลด์ประเภทคำอธิบาย
codeIntegerThe videoType value to pass to /v1/video-generations.
nameStringชื่อประเภทที่แปลแล้ว (ข้อความเป็นวิดีโอ / ภาพเป็นวิดีโอ / ...)
curl --request GET \
  --url https://api.basicrouter.ai/api/v1/video-models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "object": "list",
  "data": [
    {
      "id": "sora-2",
      "object": "video_model",
      "displayName": "Sora 2",
      "description": "...",
      "icon": "...",
      "created": 1721380000,
      "allowedVideoTypes": [
        {"code": 1, "name": "text-to-video"},
        {"code": 2, "name": "image-to-video"},
        {"code": 3, "name": "image-to-video (first/last frame)"}
      ],
      "videoDurationMin": 5,
      "videoDurationMax": 10,
      "videoDurationSuggest": [5, 8, 10],
      "resolutions": ["1080p", "720p"],
      "ratios": ["16:9", "9:16"],
      "fileMax": 5
    }
  ]
}

POST https://api.basicrouter.ai/api/v1/image-generations

ส่งงานสร้างภาพแบบอะซิงโครนัส ส่งคืน taskId ทันที ดึงผลลัพธ์โดยโพล GET /v1/image-generations/{taskId} หรือผ่าน เว็บฮุก callbackUrl

model ค่า resolution / ratio ที่รองรับ ขีดจำกัดบน count และขีดจำกัดการอัปโหลดภาพอ้างอิง (fileMax) ต้องได้รับจาก GET /v1/image-models ก่อน ยอมรับเฉพาะค่า ที่ระบุในสเปกของโมเดลนั้นเท่านั้น

ฟิลด์ประเภทจำเป็นคำอธิบาย
textStringใช่พร้อมต์
modelStringใช่ชื่อโมเดล
imageUrlsString[]ไม่URL ภาพอ้างอิง (ภาพเป็นภาพ)
countIntegerไม่จำนวนภาพ (≥0)
resolutionStringไม่ความละเอียด (ดู /v1/image-models)
ratioStringไม่อัตราส่วนภาพ
callbackUrlStringไม่URL เว็บฮุกระดับงาน
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/image-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "seedream-4.5",
    "text": "A cat drinking water by the river",
    "count": 1,
    "resolution": "2k",
    "ratio": "1:1",
    "imageUrls": []
  }'
{
  "code": 200,
  "message": "image task is commit",
  "data": {"taskId": "img_xxx"}
}

การตอบกลับข้อผิดพลาด:

// Insufficient credit
{ "code": 500, "message": "Insufficient credit" }

// Model not found
{ "code": 404, "message": "Model not found: xxx" }

GET https://api.basicrouter.ai/api/v1/image-generations/{taskId}

โพลงานสร้างภาพ status คือ pending / success / failed images เป็นอาร์เรย์ URL ของภาพที่แปลงเป็นสตริง JSON text มีคำอธิบายข้อความที่โมเดลแนบมา (เช่น เอาต์พุตหลายรูปแบบของ Gemini) หากไม่มีจะเป็น null

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/image-generations/img_xxx \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "img_xxx",
    "status": "success",
    "errorMessage": null,
    "images": "[\"https://.../1.png\"]",
    "text": null
  }
}

ฟิลด์ data การตอบกลับ:

ฟิลด์ประเภทคำอธิบาย
taskIdStringรหัสงาน
statusStringpending / success / failed.
errorMessageStringเหตุผลความล้มเหลว null เมื่อสำเร็จ
imagesStringJSON-stringified array of image URLs, e.g. "[\"https://.../1.png\"]".
textStringModel-attached text description (e.g. Gemini multimodal output); null otherwise.

ไม่พบงาน:

{ "code": 500, "message": "task not found" }

หากระบุ callbackUrl ไว้ตอนส่ง เซิร์ฟเวอร์จะส่งผลลัพธ์ success / failed ขั้นสุดท้ายผ่านเว็บฮุกด้วยรูปแบบ data เดียวกัน

ตัวอย่างแบบเต็ม (ส่ง + โพล)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class ImageGenerationExample {
  private static final String BASE = "https://api.basicrouter.ai/api/v1";
  private static final String API_KEY = System.getenv("BASICROUTER_API_KEY");

  public static void main(String[] args) throws Exception {
    HttpClient http = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(10)).build();

    // 1. Submit the task.
    String body = "{"
        + "\"model\":\"seedream-4.5\","
        + "\"text\":\"A cat drinking water by the river\","
        + "\"count\":1,"
        + "\"resolution\":\"2k\","
        + "\"ratio\":\"1:1\","
        + "\"imageUrls\":[]"
        + "}";
    HttpResponse<String> submit = http.send(
        HttpRequest.newBuilder(URI.create(BASE + "/image-generations"))
            .header("Authorization", "Bearer " + API_KEY)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body)).build(),
        HttpResponse.BodyHandlers.ofString());

    String taskId = extract(submit.body(), "taskId");
    System.out.println("taskId = " + taskId);

    // 2. Poll until terminal status.
    String status = "pending";
    while ("pending".equals(status)) {
      Thread.sleep(15_000L);
      HttpResponse<String> poll = http.send(
          HttpRequest.newBuilder(URI.create(BASE + "/image-generations/" + taskId))
              .header("Authorization", "Bearer " + API_KEY).GET().build(),
          HttpResponse.BodyHandlers.ofString());
      status = extract(poll.body(), "status");
      System.out.println("status = " + status);
    }

    if (!"success".equals(status)) {
      throw new RuntimeException("image generation failed: " + status);
    }
    // images is a JSON-stringified array of URLs.
    String images = extract(pollResult(http, taskId), "images");
    System.out.println("images = " + images);
  }

  // Minimal JSON field extractor — use Jackson/Gson in production.
  private static String extract(String json, String field) {
    int i = json.indexOf("\"" + field + "\":");
    if (i < 0) return null;
    i += field.length() + 3;
    if (json.charAt(i) == '\"') {
      int end = json.indexOf('\"', i + 1);
      return json.substring(i + 1, end);
    }
    int end = i;
    while (end < json.length() && "0123456789.".indexOf(json.charAt(end)) >= 0) end++;
    return json.substring(i, end);
  }

  private static String pollResult(HttpClient http, String taskId) throws Exception {
    return http.send(HttpRequest.newBuilder(URI.create(BASE + "/image-generations/" + taskId))
        .header("Authorization", "Bearer " + API_KEY).GET().build(),
        HttpResponse.BodyHandlers.ofString()).body();
  }
}
import os
import time
import requests

BASE = "https://api.basicrouter.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['BASICROUTER_API_KEY']}"}

# 1. Submit the task.
resp = requests.post(
    f"{BASE}/image-generations",
    headers={**HEADERS, "Content-Type": "application/json"},
    json={
        "model": "seedream-4.5",
        "text": "A cat drinking water by the river",
        "count": 1,
        "resolution": "2k",
        "ratio": "1:1",
        "imageUrls": [],
    },
)
resp.raise_for_status()
task_id = resp.json()["data"]["taskId"]
print(f"taskId = {task_id}")

# 2. Poll until terminal status.
while True:
    time.sleep(15)
    poll = requests.get(f"{BASE}/image-generations/{task_id}", headers=HEADERS)
    poll.raise_for_status()
    data = poll.json()["data"]
    status = data["status"]
    print(f"status = {status}")
    if status != "pending":
        break

if status != "success":
    raise RuntimeError(f"image generation failed: {data.get('errorMessage')}")

# images is a JSON-stringified array of URLs.
import json
images = json.loads(data["images"])
print(f"images = {images}")

POST https://api.basicrouter.ai/api/v1/video-generations

ส่งงานสร้างวิดีโอแบบอะซิงโครนัส ส่งคืน taskId ทันที ดึงผลลัพธ์โดยโพล GET /v1/video-generations/{taskId} หรือผ่าน เว็บฮุก callbackUrl

model ค่า videoType ที่อนุญาต ช่วงระยะเวลา (videoDurationMin/Max) resolution / ratio ที่รองรับ และขีดจำกัดการอัปโหลดเนื้อหาอ้างอิง (fileMax) ต้อง ได้รับจาก GET /v1/video-models ก่อน ยอมรับเฉพาะ รหัส videoType ที่ระบุใน allowedVideoTypes ของโมเดลนั้นเท่านั้น

ฟิลด์ประเภทจำเป็นคำอธิบาย
textStringใช่พร้อมต์
modelStringใช่ชื่อโมเดล
videoTypeIntegerใช่1 text-to-video / 2 image-to-video (first frame) / 3 image-to-video (first+last frame) / 4 image-to-video (reference) / 5 all reference.
imageUrlsString[]ไม่URL เนื้อหาภาพ
videoUrlsVideoUrl[]|String[]ไม่URL เนื้อหาวิดีโอ
audioUrlsString[]ไม่URL เนื้อหาเสียง
resolutionStringไม่ความละเอียด
ratioStringไม่อัตราส่วนภาพ
durationLongไม่วินาที (>0)
callbackUrlStringไม่URL เว็บฮุกระดับงาน

ตัวอย่างสำหรับแต่ละ videoType:

1. ข้อความเป็นวิดีโอ (videoType=1)

สร้างวิดีโอจากพร้อมต์ข้อความเท่านั้น ไม่ต้องมีเนื้อหาอ้างอิง

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 1,
    "text": "A cat jumping on a bed",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "seedance-2.0"
  }'
2. ภาพเป็นวิดีโอ - เฟรมแรก (videoType=2)

ระบุเฟรมเริ่มต้นเดียวใน imageUrls โมเดลจะสร้างวิดีโอ เริ่มจากเฟรมนั้น

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 2,
    "text": "Happily shaking head",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "seedance-2.0",
    "imageUrls": ["https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/first-frame.png"]
  }'
3. ภาพเป็นวิดีโอ - เฟรมแรกและสุดท้าย (videoType=3)

ระบุทั้งเฟรมแรกและสุดท้ายใน imageUrls (ลำดับ: [first, last]) โมเดลจะสร้างวิดีโอเปลี่ยนผ่านระหว่างสอง เฟรม

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 3,
    "text": "Put on the hat",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "seedance-2.0",
    "imageUrls": [
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/first-frame.png",
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/last-frame.png"
    ]
  }'
4. ภาพเป็นวิดีโอ - อ้างอิง (videoType=4)

ระบุภาพอ้างอิงหนึ่งภาพขึ้นไปใน imageUrls โมเดลจะใช้ สไตล์/เนื้อหาเป็นอ้างอิง (ไม่ใช่เฟรมแรก/สุดท้ายที่บังคับ) เพื่อสร้างวิดีโอ

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 4,
    "text": "Two cats playing together",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "kling-v3-omni-video",
    "imageUrls": [
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/ref-1.png",
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/ref-2.png"
    ]
  }'
5. อ้างอิงทั้งหมด (videoType=5)

อ้างอิงภาพ / วิดีโอ / เสียงแบบผสม อ้างอิงเนื้อหาตามตำแหน่งในพร้อมต์: รายการ ที่ 1 ใน imageUrls คือ @图片 1 รายการที่ 1 ใน videoUrls คือ @视频 1 รายการที่ 1 ใน audioUrls คือ @音频 1 videoUrls ยังยอมรับสตริง URL แบบธรรมดา

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 5,
    "text": "Use the first-person framing of @视频 1 and @音频 1 as background music. First-person tea ad; start frame is @图片 1 ... end frame is @图片 2.",
    "model": "seedance-2.0",
    "imageUrls": [
      "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg",
      "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic2.jpg"
    ],
    "videoUrls": ["https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_tea_video1.mp4"],
    "audioUrls": ["https://ark-project.tos-cn-beijing.volces.com/doc_audio/r2v_tea_audio1.mp3"],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 11
  }'

การตอบกลับการส่ง (ทั้งห้าประเภท):

{
  "code": 200,
  "message": "success",
  "data": {"taskId": "vid_xxx"}
}

GET https://api.basicrouter.ai/api/v1/video-generations/{taskId}

โพลงานสร้างวิดีโอ status คือ pending / success / failed videoUrl คือ URL ของวิดีโอที่สร้างขึ้น และ lastFrameUrl คือ URL ของเฟรมสุดท้าย (สถานการณ์ภาพเป็นวิดีโอ)

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/video-generations/vid_xxx \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "code": 200,
  "message": "success",
  "data": {
    "status": "success",
    "videoUrl": "https://.../out.mp4",
    "lastFrameUrl": null,
    "message": null
  }
}

ฟิลด์ data การตอบกลับ:

ฟิลด์ประเภทคำอธิบาย
statusStringpending / success / failed.
videoUrlStringURL วิดีโอที่สร้าง
lastFrameUrlStringLast-frame URL (image-to-video scenarios); null otherwise.
messageStringเหตุผลความล้มเหลว null เมื่อสำเร็จ

หากระบุ callbackUrl ไว้ตอนส่ง เซิร์ฟเวอร์จะส่งผลลัพธ์ขั้นสุดท้าย ผ่านเว็บฮุกด้วยรูปแบบ data เดียวกัน

ตัวอย่างแบบเต็ม (ส่ง + โพล)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class VideoGenerationExample {
  private static final String BASE = "https://api.basicrouter.ai/api/v1";
  private static final String API_KEY = System.getenv("BASICROUTER_API_KEY");

  public static void main(String[] args) throws Exception {
    HttpClient http = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(10)).build();

    // 1. Submit the task (videoType=1: text-to-video).
    String body = "{"
        + "\"videoType\":1,"
        + "\"text\":\"A cat jumping on a bed\","
        + "\"resolution\":\"480p\","
        + "\"ratio\":\"16:9\","
        + "\"duration\":4,"
        + "\"model\":\"seedance-2.0\""
        + "}";
    HttpResponse<String> submit = http.send(
        HttpRequest.newBuilder(URI.create(BASE + "/video-generations"))
            .header("Authorization", "Bearer " + API_KEY)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body)).build(),
        HttpResponse.BodyHandlers.ofString());

    String taskId = extract(submit.body(), "taskId");
    System.out.println("taskId = " + taskId);

    // 2. Poll until terminal status. Video tasks take longer — poll every 20s.
    String status = "pending";
    String lastBody = null;
    while ("pending".equals(status)) {
      Thread.sleep(20_000L);
      HttpResponse<String> poll = http.send(
          HttpRequest.newBuilder(URI.create(BASE + "/video-generations/" + taskId))
              .header("Authorization", "Bearer " + API_KEY).GET().build(),
          HttpResponse.BodyHandlers.ofString());
      lastBody = poll.body();
      status = extract(lastBody, "status");
      System.out.println("status = " + status);
    }

    if (!"success".equals(status)) {
      throw new RuntimeException("video generation failed: " + status);
    }
    String videoUrl = extract(lastBody, "videoUrl");
    System.out.println("videoUrl = " + videoUrl);
  }

  // Minimal JSON field extractor — use Jackson/Gson in production.
  private static String extract(String json, String field) {
    int i = json.indexOf("\"" + field + "\":");
    if (i < 0) return null;
    i += field.length() + 3;
    if (json.charAt(i) == '\"') {
      int end = json.indexOf('\"', i + 1);
      return json.substring(i + 1, end);
    }
    int end = i;
    while (end < json.length() && "0123456789.".indexOf(json.charAt(end)) >= 0) end++;
    return json.substring(i, end);
  }
}
import os
import time
import requests

BASE = "https://api.basicrouter.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['BASICROUTER_API_KEY']}"}

# 1. Submit the task (videoType=1: text-to-video).
resp = requests.post(
    f"{BASE}/video-generations",
    headers={**HEADERS, "Content-Type": "application/json"},
    json={
        "videoType": 1,
        "text": "A cat jumping on a bed",
        "resolution": "480p",
        "ratio": "16:9",
        "duration": 4,
        "model": "seedance-2.0",
    },
)
resp.raise_for_status()
task_id = resp.json()["data"]["taskId"]
print(f"taskId = {task_id}")

# 2. Poll until terminal status. Video tasks take longer — poll every 20s.
while True:
    time.sleep(20)
    poll = requests.get(f"{BASE}/video-generations/{task_id}", headers=HEADERS)
    poll.raise_for_status()
    data = poll.json()["data"]
    status = data["status"]
    print(f"status = {status}")
    if status != "pending":
        break

if status != "success":
    raise RuntimeError(f"video generation failed: {data.get('message')}")

print(f"videoUrl = {data['videoUrl']}")
if data.get("lastFrameUrl"):
    print(f"lastFrameUrl = {data['lastFrameUrl']}")

GET https://api.basicrouter.ai/api/v1/billing/balance

ส่งคืนยอดคงเหลือบัญชีแบ่งเป็นกระเป๋าเงินสามใบ: แผนรายเดือน แพ็กเกจทรัพยากร และ เครดิตจ่ายตามการใช้งาน

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/billing/balance \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "totalCredit": 128.50,
  "totalResourceCredit": 30.00,
  "wallets": {
    "monthlyPlan": {"id": "pkg_xxx", "credit": 50.00, "name": "Monthly plan"},
    "resourcePacks": [
      {"id": "rp_xxx", "credit": 30.00, "name": "Video resource pack"}
    ],
    "payAsYouGo": 48.50
  }
}

ฟิลด์การตอบกลับ:

ฟิลด์ประเภทคำอธิบาย
totalCreditBigDecimalยอดคงเหลือรวม
totalResourceCreditBigDecimalผลรวมยอดคงเหลือแพ็กเกจทรัพยากร
wallets.monthlyPlanWalletDetailแผนรายเดือน (null หากไม่มี)
wallets.resourcePacksWalletDetail[]รายการแพ็กเกจทรัพยากร
wallets.payAsYouGoBigDecimalยอดคงเหลือจ่ายตามการใช้งาน

WalletDetailVO fields::

ฟิลด์ประเภทคำอธิบาย
idStringรหัสกระเป๋าเงิน
creditBigDecimalเครดิตคงเหลือ
nameStringชื่อกระเป๋าเงิน

GET https://api.basicrouter.ai/api/v1/usage

รายละเอียดการเรียกเก็บเงินการเรียกโมเดลแบบแบ่งหน้า สแนปชอตตามราคา (priceSnapshotId) เรียงตามเวลาสร้างคำสั่งซื้อจากมากไปน้อย ส่งคืนเฉพาะ ระเบียนค่าใช้จ่ายปกติ (reason = model usage) เท่านั้น

พารามิเตอร์การค้นหา:

พารามิเตอร์ประเภทจำเป็นค่าเริ่มต้นคำอธิบาย
pageIntegerไม่1หมายเลขหน้า เริ่มจาก 1
sizeIntegerไม่20ขนาดหน้า (แบ่งหน้าตาม priceSnapshotId)
startTimeLocalDateTimeไม่Start time, format yyyy-MM-ddTHH:mm:ss, filters by snapshot orderCreatedAt.
endTimeLocalDateTimeไม่เวลาสิ้นสุด รูปแบบ yyyy-MM-ddTHH:mm:ss
curl --request GET \
  --url "https://api.basicrouter.ai/api/v1/usage?page=1&size=20&startTime=2026-07-01T00:00:00&endTime=2026-07-31T23:59:59" \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

ตัวห่อหุ้มการตอบกลับ:

{
  "code": 0,
  "message": "success",
  "data": { ... }
}
ฟิลด์ประเภทคำอธิบาย
recordsUsageDetailVO[]ระเบียนหน้าปัจจุบัน
totalLongจำนวนรวม
currentLongหน้าปัจจุบัน
sizeLongขนาดหน้า
pagesLongหน้าทั้งหมด

UsageDetailVO fields:

ฟิลด์ประเภทคำอธิบาย
priceSnapshotIdStringรหัสสแนปชอตราคา
taskIdStringรหัสงาน
creditBigDecimalจำนวนเงินที่เรียกเก็บ
modelStringชื่อโมเดล
modelTypeStringtext / image / video.
inputTokensLongโทเค็นอินพุต null สำหรับภาพ/วิดีโอ
outputTokensLongโทเค็นเอาต์พุต
totalTokensLongโทเค็นรวม
cacheReadTokensLongโทเค็นอ่านแคช
cacheWriteTokensLongโทเค็นเขียนแคช
imageCountIntegerจำนวนภาพ ตั้งค่าสำหรับโมเดลภาพ
imageResolutionStringความละเอียดภาพ เช่น 720P
imageRatioStringอัตราส่วนภาพ เช่น 1:1
videoResolutionStringความละเอียดวิดีโอ เช่น 1080p
videoRatioStringอัตราส่วนวิดีโอ เช่น 16:9
videoDurationSecLongระยะเวลาวิดีโอเป็นวินาที
orderCreatedAtLocalDateTimeเวลาสร้างคำสั่งซื้อ (สแนปชอต orderCreatedAt)
creditDetailsCreditDetailItem[]Order details under this snapshot (from credit_order_t).

CreditDetailItem fields:

ฟิลด์ประเภทคำอธิบาย
creditBigDecimalจำนวนเงินที่เรียกเก็บโดยคำสั่งซื้อนี้
deductionSourceStringDeduction source (Balance / Monthly Package / Resource Package).
packageNameStringชื่อแพ็กเกจ null หากไม่มีแพ็กเกจ

อนุสัญญาค่าว่าง: เฉพาะฟิลด์ที่เกี่ยวข้องกับแต่ละ modelType เท่านั้นที่ ถูกเติม ส่วนที่เหลือเป็น null text เติมฟิลด์โทเค็น image เติม imageCount/imageResolution/imageRatio video เติม videoResolution/videoRatio/videoDurationSec

ตัวอย่างการตอบกลับ:

{
  "code": 200,
  "message": "success",
  "data": {
    "records": [
      {
        "priceSnapshotId": "snap_9f3c1a2b",
        "taskId": "task_5e8a1c33",
        "credit": 0.0342,
        "model": "glm-5.2",
        "modelType": "text",
        "inputTokens": 1280,
        "outputTokens": 642,
        "totalTokens": 1922,
        "cacheReadTokens": 0,
        "cacheWriteTokens": 0,
        "imageCount": null,
        "imageResolution": null,
        "imageRatio": null,
        "videoResolution": null,
        "videoRatio": null,
        "videoDurationSec": null,
        "orderCreatedAt": "2026-07-18T14:23:11",
        "creditDetails": [
          {
            "credit": 0.0342,
            "deductionSource": "balance",
            "packageName": ""
          }
        ]
      },
      {
        "priceSnapshotId": "snap_a12f77c0",
        "taskId": "task_c71e44a2",
        "credit": 1.8000,
        "model": "seedance-2.0",
        "modelType": "video",
        "inputTokens": null,
        "outputTokens": null,
        "totalTokens": null,
        "cacheReadTokens": null,
        "cacheWriteTokens": null,
        "imageCount": null,
        "imageResolution": null,
        "imageRatio": null,
        "videoResolution": "1080p",
        "videoRatio": "16:9",
        "videoDurationSec": 8,
        "orderCreatedAt": "2026-07-17T22:41:09",
        "creditDetails": [
          {
            "credit": 1.5000,
            "deductionSource": "Monthly Package",
            "packageName": "基础月度套餐"
          },
          {
            "credit": 0.3000,
            "deductionSource": "Resource Package",
            "packageName": "byteplus视频资源包"
          }
        ]
      }
    ],
    "total": 128,
    "current": 1,
    "size": 20,
    "pages": 7
  }
}

GET https://api.basicrouter.ai/api/v1/billing/transactions

รายการแบบแบ่งหน้าของธุรกรรมการเติมเงินที่ชำระแล้ว (status=2) ของผู้ใช้ปัจจุบัน เรียงตาม created_at จากมากไปน้อย

พารามิเตอร์ประเภทจำเป็นค่าเริ่มต้นคำอธิบาย
pageIntegerไม่1หมายเลขหน้า
sizeIntegerไม่20ขนาดหน้า
startTimeStringไม่เวลาเริ่มต้น yyyy-MM-dd HH:mm:ss รวม
endTimeStringไม่เวลาสิ้นสุด yyyy-MM-dd HH:mm:ss รวม
curl --request GET \
  --url "https://api.basicrouter.ai/api/v1/billing/transactions?page=1&size=20&startTime=2026-07-01%2000:00:00&endTime=2026-07-31%2023:59:59" \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

ตัวห่อหุ้มการตอบกลับ:

{
  "code": 0,
  "message": "success",
  "data": { ... }
}
ฟิลด์ประเภทคำอธิบาย
recordsTransactionVO[]ธุรกรรมหน้าปัจจุบัน
totalLongจำนวนรวม
currentLongหน้าปัจจุบัน
sizeLongขนาดหน้า
pagesLongหน้าทั้งหมด

TransactionVO fields:

ฟิลด์ประเภทคำอธิบาย
orderNoStringหมายเลขคำสั่งซื้อ
thirdPartyOrderNoStringหมายเลขคำสั่งซื้อบุคคลที่สาม
amountBigDecimalจำนวนเงินคำสั่งซื้อ
actualAmountBigDecimalจำนวนเงินที่ชำระจริง
discountBigDecimalจำนวนเงินส่วนลด
paymentMethodStringPayment method (wechat / alipay / ustd / stripe / wallyt etc.).

TransactionVO fields:

ฟิลด์ประเภทคำอธิบาย
serviceFeeAmountBigDecimalจำนวนเงินค่าธรรมเนียมบริการ
paymentChannelStringแพลตฟอร์มการชำระเงิน
sourceStringOrder source (recharge / package_purchase etc.).
packageNameStringPackage name (set for package purchases; null for plain recharges).
createdAtLocalDateTimeเวลาที่สร้าง
{
  "code": 200,
  "message": "success",
  "data": {
    "records": [
      {
        "orderNo": "R20260718abc123",
        "thirdPartyOrderNo": "wx_pay_xxx",
        "amount": 50.00,
        "actualAmount": 48.50,
        "discount": 1.50,
        "paymentMethod": "wechat",
        "serviceFeeAmount": 0.00,
        "paymentChannel": "wechat",
        "source": "recharge",
        "packageName": null,
        "createdAt": "2026-07-18T14:23:11"
      }
    ],
    "total": 28,
    "current": 1,
    "size": 20,
    "pages": 2
  }
}

การดำเนินงาน

ข้อผิดพลาด

BasicRouter ส่งคืนรหัสข้อผิดพลาดที่เสถียรเพื่อให้แอปพลิเคชันสามารถจัดการการลองใหม่ การสำรอง ปัญหาการเรียกเก็บเงิน และการดีบักได้อย่างสม่ำเสมอ

จุดเชื่อมต่อที่เข้ากันได้กับผู้ให้บริการจะพยายามรักษารูปร่างข้อผิดพลาด ของตระกูล API ต้นฉบับเมื่อเป็นไปได้ จุดเชื่อมต่อ BasicRouter-native ใช้ออบเจ็กต์ข้อผิดพลาด BasicRouter

HTTP status and error code mapping

HTTP statusประเภทข้อผิดพลาดรหัสตัวอย่างลองใหม่
400invalid_request_errorinvalid_request, unsupported_parameter, invalid_messages, invalid_image_urlไม่
401authentication_errormissing_api_key, invalid_api_keyไม่
402billing_errorinsufficient_credits, payment_required, quota_exceededไม่
403permission_errormodel_access_denied, endpoint_access_denied, key_scope_deniedไม่
404not_found_errormodel_not_found, response_not_found, task_not_foundไม่
408timeout_errorgateway_timeout, provider_timeoutใช่
409conflict_erroridempotency_conflict, task_already_cancelledขึ้นอยู่กับ
422validation_errorschema_validation_failed, unsupported_modalityไม่
429rate_limit_erroraccount_rpm_exceeded, account_tpm_exceeded, provider_rate_limitedใช่
500internal_errorinternal_errorใช่
502provider_errorprovider_bad_gateway, provider_invalid_responseใช่
503service_unavailablemodel_unavailable, provider_unavailable, insufficient_capacityใช่
504timeout_errorprovider_timeout, gateway_timeoutใช่

รหัสข้อผิดพลาดทั่วไป

รหัสความหมายการดำเนินการที่แนะนำ
missing_api_keyไม่ได้ระบุคีย์ APIเพิ่มส่วนหัว Authorization
invalid_api_keyคีย์ API ไม่ถูกต้องหรือถูกเพิกถอนสร้างหรือหมุนเวียนคีย์ API
model_not_foundรหัสโมเดลไม่มีอยู่หรือไม่ได้เปิดใช้งานสำหรับบัญชีตรวจสอบหน้าโมเดลหรือเรียก GET /v1/models
model_access_deniedคีย์ API หรือบัญชีไม่มีสิทธิ์เข้าถึงโมเดลเปิดใช้งานโมเดลหรือติดต่อผู้ดูแล
unsupported_parameterคำขอมีพารามิเตอร์ที่ไม่รองรับโดยเอนด์พอยต์หรือโมเดลที่เลือกลบพารามิเตอร์หรือเลือกโมเดลที่เข้ากันได้
unsupported_modalityรูปแบบอินพุตหรือเอาต์พุตไม่ได้รับการรองรับโดยโมเดลที่เลือกเลือกโมเดลที่รองรับรูปแบบ
account_rpm_exceededเกินขีดจำกัดคำขอต่อนาทีของบัญชีลองใหม่ด้วยการถดถอยหรือขอขีดจำกัดที่สูงขึ้น
account_tpm_exceededเกินขีดจำกัดโทเค็นต่อนาทีของบัญชีลองใหม่ด้วยการถดถอย ลดโทเค็น หรือขอขีดจำกัดที่สูงขึ้น
provider_rate_limitedผู้ให้บริการอัปสตรีมจำกัดอัตราคำขอลองใหม่หรือเปิดใช้งานการสำรอง
insufficient_creditsบัญชีมีเครดิตไม่เพียงพอเติมเงินกระเป๋าเงิน ซื้อแพ็กเกจ หรืออัปเกรดแผน
provider_timeoutผู้ให้บริการอัปสตรีมไม่ตอบกลับในเวลาที่กำหนดลองใหม่หรือเปิดใช้งานการสำรอง
model_unavailableโมเดลไม่พร้อมใช้งานชั่วคราวลองใหม่หรือใช้นามแฝงการกำหนดเส้นทาง
content_policy_errorคำขอหรือเอาต์พุตถูกบล็อกโดยนโยบายความปลอดภัยแก้ไขอินพุตหรือเลือกเวิร์กโฟลว์ที่เหมาะสม
ประเภทโมเดล

claude-fable-5

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入10 积分
输出50 积分
缓存读取1 积分
缓存写入12.50 积分

claude-opus-4.6

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-opus-4.7

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-opus-4.8

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-opus-5

AWS · Anthropic · 1M 上下文

Text 输入Image 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-sonnet-4.6

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入3 积分
输出15 积分
缓存读取0.30 积分
缓存写入6 积分

claude-sonnet-5

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入2 积分
输出10 积分
缓存读取0.20 积分
缓存写入4 积分

deepseek-v3.2

TencentCloud · Alibaba Cloud · Deepseek · 128K 上下文

Openai chatOpenai responsesAnthropic
可用
输入0.57 积分
输出1.71 积分
缓存读取0.11 积分
缓存写入0.11 积分

deepseek-v4-flash

TencentCloud · Deepseek · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.14 积分
输出0.28 积分
缓存读取0.03 积分
缓存写入0.03 积分

deepseek-v4-pro

TencentCloud · Deepseek · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入1.74 积分
输出3.48 积分
缓存读取0.14 积分
缓存写入0.14 积分

dola-seed-2-0-mini

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.20 积分
输出0.80 积分
缓存读取0.04 积分
缓存写入0.01 积分

dola-seed-2-0-mini-white

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.20 积分
输出0.80 积分
缓存读取0.04 积分
缓存写入0.01 积分

dola-seed-2-1-turbo

BytePlus · Bytedance · 262K 上下文

Image 输入Text 输入Video 输入Openai chatOpenai responses
可用
输入0.50 积分
输出2.50 积分
缓存读取0.10 积分
缓存写入0.01 积分

dola-seed-2.0-code

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.50 积分
输出3 积分
缓存读取0.10 积分
缓存写入0.01 积分

dola-seed-2.0-lite

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.50 积分
输出4 积分
缓存读取0.10 积分
缓存写入0.01 积分

dola-seed-2.0-pro

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入1 积分
输出6 积分
缓存读取0.20 积分
缓存写入0.01 积分

doubao-seed3d-1.0

即将推出

gemini-3-flash-preview

Google · Gemini · 1.0M 上下文

Image 输入Video 输入Text 输入Openai chat
可用
输入0.50 积分
输出3 积分
缓存读取0.05 积分
缓存写入0.05 积分

gemini-3.1-pro-preview

Google · Gemini · 1.0M 上下文

Image 输入Text 输入Video 输入Openai chat
可用
输入4 积分
输出18 积分
缓存读取0.40 积分
缓存写入0.40 积分

gemini-omni-flash-preview

Google · Gemini

文生视频按秒
即将推出
单价 / 秒0.10 积分 / 秒

glm-5

TencentCloud · Zai · 200K 上下文

Openai chatAnthropic
可用
输入1 积分
输出3.20 积分
缓存读取0.20 积分
缓存写入0.20 积分

glm-5-turbo

TencentCloud · Zai · 200K 上下文

Text 输入Openai chatAnthropic
可用
输入1.20 积分
输出4 积分
缓存读取0.24 积分
缓存写入0.24 积分

glm-5.1

TencentCloud · Zai · 200K 上下文

Text 输入Openai chatAnthropic
可用
输入1.40 积分
输出4.40 积分
缓存读取0.26 积分
缓存写入0.26 积分

glm-5.2

TencentCloud · Zai · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入1.40 积分
输出4.40 积分
缓存读取0.26 积分
缓存写入0.26 积分

glm-5v-turbo

TencentCloud · Zai · 200K 上下文

Image 输入Openai chatAnthropic
可用
输入1.20 积分
输出4 积分
缓存读取0.24 积分
缓存写入0.24 积分

gpt-5-nano

MicrosoftAzure · Openai · 400K 上下文

Image 输入Text 输入Openai chatOpenai responses
可用
输入0.05 积分
输出0.40 积分
缓存读取- 积分
缓存写入- 积分

gpt-5.4

MicrosoftAzure · Openai · 1.1M 上下文

Image 输入Text 输入Openai chatOpenai responses
可用
输入5 积分
输出22.50 积分
缓存读取0.50 积分
缓存写入0.50 积分

gpt-5.5

MicrosoftAzure · Openai · 1.1M 上下文

Image 输入Text 输入Openai chatOpenai responses
可用
输入5 积分
输出30 积分
缓存读取0.50 积分
缓存写入0.50 积分

gpt-5.6-luna

MicrosoftAzure · Openai · 1.1M 上下文

Text 输入Image 输入Openai chatOpenai responses
可用
输入2 积分
输出9 积分
缓存读取0.20 积分
缓存写入2.50 积分

gpt-5.6-sol

MicrosoftAzure · Openai · 1.1M 上下文

Text 输入Image 输入Openai chatOpenai responses
可用
输入10 积分
输出45 积分
缓存读取1 积分
缓存写入12.50 积分

gpt-5.6-terra

MicrosoftAzure · Openai · 1.1M 上下文

Text 输入Image 输入Openai chatOpenai responses
可用
输入5 积分
输出22.50 积分
缓存读取0.50 积分
缓存写入6.25 积分

gpt-image-2

MicrosoftAzure · Openai

图像生成1K/2K/4K按张
可用
单价 / 张0.41 积分

HappyHorse-1.0-i2v

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-i2v-white

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-r2v

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-r2v-white

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-t2v

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.24 积分 / 秒

HappyHorse-1.0-t2v-white

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

imagen 4 fast

Google · Gemini

图像生成2K按张
可用
单价 / 张0.02 积分

imagen 4 standard

Google · Gemini

图像生成2K按张
可用
单价 / 张0.04 积分

imagen 4 ultra

Google · Gemini

图像生成2K按张
可用
单价 / 张0.06 积分

kimi-k2.5

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Video 输入Openai chatAnthropic
可用
输入0.60 积分
输出3 积分
缓存读取0.10 积分
缓存写入0.10 积分

kimi-k2.6

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Text 输入Openai chatAnthropic
可用
输入0.86 积分
输出3.57 积分
缓存读取0.14 积分
缓存写入0.14 积分

kimi-k2.7-code

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Video 输入Openai chatAnthropic
可用
输入0.95 积分
输出4 积分
缓存读取0.19 积分
缓存写入0.19 积分

kimi-k2.7-code-highspeed

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Video 输入Openai chatOpenai responsesAnthropic
可用
输入1.90 积分
输出8 积分
缓存读取0.38 积分
缓存写入0.38 积分

kimi-k3

TencentCloud · Moonshot AI · 1M 上下文

Image 输入Text 输入Video 输入Openai chatOpenai responsesAnthropic
可用
输入3 积分
输出15 积分
缓存读取0.30 积分
缓存写入0.30 积分

kling-image-o1

Kling · Kling

图像生成2K/3K按张
可用
单价 / 张0.03 积分

kling-v3-omni-image

Kling · Kling

图像生成1K/2K/4K按张
可用
单价 / 张0.03 积分

kling-v3-omni-video

Kling · Kling

文生视频按秒
可用
单价 / 秒0.13 积分 / 秒

minimax-m2.5

TencentCloud · MiniMax · 200K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.30 积分
输出1.20 积分
缓存读取0.03 积分
缓存写入0.03 积分

minimax-m2.7

TencentCloud · MiniMax · 200K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.30 积分
输出1.20 积分
缓存读取0.06 积分
缓存写入0.06 积分

minimax-m3

TencentCloud · MiniMax · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.60 积分
输出2.40 积分
缓存读取0.12 积分
缓存写入0.12 积分

nano banana 2

Google · Gemini

图像生成1K/2K/4K按张
可用
单价 / 张0.07 积分

nano banana pro

Google · Gemini

图像生成1K/2K按张
可用
单价 / 张0.14 积分

qwen-image-2.0-pro

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-2.0-s-white

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-3.0-pro

Alibaba Cloud · Qwen

图像生成1K/2K按张
即将推出
单价 / 张0.07 积分

qwen-image-max

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-max-white

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-plus

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.03 积分

qwen3-max

Alibaba Cloud · Qwen · 256K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入1.20 积分
输出6 积分
缓存读取- 积分
缓存写入- 积分

qwen3-max-white

Alibaba Cloud · Qwen · 256K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入2.40 积分
输出12 积分
缓存读取- 积分
缓存写入- 积分

qwen3-vl-flash

Alibaba Cloud · Qwen · 256K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.07 积分
输出0.60 积分
缓存读取0.01 积分
缓存写入0.10 积分

qwen3-vl-plus

Alibaba Cloud · Qwen · 256K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.60 积分
输出4.80 积分
缓存读取- 积分
缓存写入- 积分

qwen3.5-plus

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.50 积分
输出3 积分
缓存读取0.05 积分
缓存写入0.63 积分

qwen3.5-plus-white

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.40 积分
输出0.24 积分
缓存读取0.04 积分
缓存写入0.50 积分

qwen3.6-plus

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.50 积分
输出3 积分
缓存读取0.05 积分
缓存写入0.63 积分

qwen3.7-max

Alibaba Cloud · Qwen · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入2.50 积分
输出7.50 积分
缓存读取0.50 积分
缓存写入0.50 积分

qwen3.7-plus

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.40 积分
输出1.60 积分
缓存读取0.08 积分
缓存写入0.50 积分

qwen3.8-max

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入2 积分
输出6 积分
缓存读取0.25 积分
缓存写入0.25 积分

seedance-1-5-pro

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

seedance-1-5-pro-white

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

seedance-2.0

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.15 积分 / 秒

seedance-2.0-fast

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.06 积分 / 秒

seedance-2.0-fast-white

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.06 积分 / 秒

seedance-2.0-white

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.07 积分 / 秒

seedance-2.5

BytePlus · Bytedance

文生视频按秒
即将推出
单价 / 秒0.11 积分 / 秒

seedream-4.5

BytePlus · Bytedance

图像生成2K/4K按张
可用
单价 / 张0.04 积分

seedream-4.5-white

BytePlus · Bytedance

图像生成2K/4K按张
可用
单价 / 张0.04 积分

seedream-5.0

BytePlus · Bytedance

图像生成2K/3K按张
可用
单价 / 张0.04 积分

seedream-5.0-white

BytePlus · Bytedance

图像生成2K/3K按张
可用
单价 / 张0.04 积分

veo 3.1

Google · Gemini

文生视频按秒
可用
单价 / 秒0.40 积分 / 秒

veo 3.1 lite

Google · Gemini

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

wan2.5-i2v-preview

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.6-i2v-flash

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

wan2.6-r2v-flash

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

wan2.6-t2v

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.6-t2v-white

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.7-i2v

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.7-i2v-s-white

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.26 积分 / 秒

wan2.7-i2v-white

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.7-image

Alibaba Cloud · Wan

图像生成2K按张
可用
单价 / 张0.03 积分

wan2.7-image-pro

Alibaba Cloud · Wan

图像生成2K按张
可用
单价 / 张0.07 积分