models

SpaceXAI: Grok 4.6

Markdown · JSON

SpaceXAI: Grok 4.6

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

เกี่ยวกับโมเดล

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

การทำงานกับโครงการต่อเนื่อง

Grok 4.6 มุ่งรองรับงานหลายขั้นตอน ได้แก่ ศึกษาหัวข้อ วิเคราะห์ข้อมูล ทำงานกับฐานโค้ด และสร้างแอป ในตัวอย่าง xAI โมเดลศึกษาสาขาที่ไม่คุ้นเคย กำหนดโครงสร้างโครงการ สร้างปฏิสัมพันธ์หลัก และปรับผลหลังรับข้อมูลตอบกลับ

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

โครงการเชิงโต้ตอบและภาพ

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

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

ความลึกของการคิด

มี low, medium, high และ xhigh ค่ามาตรฐานคือ high ระดับต่ำเหมาะกับการกระทำเอเจนต์ง่าย ระดับกลางกับการวิเคราะห์ข้อมูลและเนื้อหายาว ระดับสูงกับตรรกะซับซ้อน xhigh จัดความพยายามเพิ่มให้งานยากที่สุด และตามข้อมูลของ xAI เพิ่มความหน่วง

ปิดการใช้เหตุผลทั้งหมดไม่ได้ พารามิเตอร์ presencePenalty, frequencyPenalty และ stop ไม่ใช้กับโมเดลประเภทนี้ ปริมาณบริบทกับความลึกการคิดที่เลือกอธิบายคนละคุณสมบัติ หน้าต่างใหญ่เพียงอย่างเดียวไม่ได้กำหนดโหมดเหตุผล

การเชื่อมกระบวนการทำงาน

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

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

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

งานตัวอย่างจริง

งานตัวอย่างจริง

ตัวอย่างทางเทคนิคภาษาอังกฤษ

Review a multi-step import design

Review this CSV-import plan: parse rows, insert records, then validate required email fields. Requirement: one invalid row must reject the entire import, with no new records left behind. Propose a corrected sequence, explain transaction boundaries, and list tests for a valid batch, one invalid row and a database failure. Use framework-neutral pseudocode.

ผลลัพธ์ที่คาดหวัง

A corrected import sequence and three test specifications distinguishing validation failure from persistence failure.

ตรวจสอบผลลัพธ์

Neither an invalid row nor a failed database write leaves a partially imported batch.
Ailoot · Anthropic Messages POST /v1/messages grok-4.6

grok-4.6

SpaceXAI /grok-4.6
ID โมเดล
  • grok-4.6
  • grok-4.6-latest

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot · Anthropic Messages POST /v1/messages
ขาเข้า
text, image
ขาออก
text
บริบท
500,000 tokens
เอาต์พุตสูงสุด
500,000 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6
ค่าเริ่มต้น—
ฟิลด์messagesประเภทmessage[]ข้อกำหนดจำเป็นค่าและข้อจำกัด
จำนวนรายการขั้นต่ำ: 1
ค่าเริ่มต้น—
ฟิลด์messages[].roleประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
user, assistant
ค่าเริ่มต้น—
ฟิลด์messages[].contentประเภทstring|content_block[]ข้อกำหนดจำเป็นค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์systemประเภทstring|content_block[]ข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์max_tokensประเภทintegerข้อกำหนดจำเป็นค่าและข้อจำกัด
ขั้นต่ำ: 1
ข้อจำกัดใช้กับ: เพดานที่ตรงกับโมเดล/การ์ดที่เลือก
ค่าเริ่มต้น—
ฟิลด์streamประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้นfalse
ฟิลด์temperatureประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์top_pประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์stop_sequencesประเภทstring[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์toolsประเภทtool[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์tools[].nameประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ใช้เมื่อ: มีเครื่องมือให้ใช้
ค่าเริ่มต้น—
ฟิลด์tools[].descriptionประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์tools[].input_schemaประเภทJSON_schemaข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์tool_choiceประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์thinking.typeประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์thinking.budget_tokensประเภทintegerข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์output_config.effortประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์metadataประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์cache_controlประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ชุดผสมของสื่ออินพุต

ข้อความ · ข้อความ UTF8

messages[].content หรือบล็อก type=text

ข้อความ + ภาพ

{type:image,source:{type:base64,media_type,data}} หรือแหล่งข้อมูลชนิด type=url

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์requiredข้อกำหนดmodel, messages, max_tokens
พารามิเตอร์optional_controlsข้อกำหนดnull
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์text_file_materialข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก

วงจรการทำงาน: exact retained published method

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

ราคา

อัตราค่าบริการเมธอด Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
ขาเข้า
US$0.002 / 1K
ขาออก
US$0.006 / 1K
การอ่านแคช
US$0.0005 / 1K
การเขียนแคช
US$0.00 / 1K
การเขียนแคช, 5 นาที
US$0.00 / 1K tokens
การเขียนแคช, 1 ชั่วโมง
US$0.00 / 1K tokens

ราคาตามความยาวคำขอ · Anthropic Messages

ขนาดคำขอ, โทเคนขาเข้าขาออกการอ่านแคชการเขียนแคชแคช 5 นาทีแคช 1 ชั่วโมง
ขนาดคำขอ, โทเคน(0; 200,000]ขาเข้าUS$0.002ขาออกUS$0.006การอ่านแคชUS$0.0005การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00
ขนาดคำขอ, โทเคน(200,000; ∞)ขาเข้าUS$0.004ขาออกUS$0.012การอ่านแคชUS$0.001การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

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

รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

ตัวอย่างคำขอ

Ailoot · Anthropic Messages

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python
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": "grok-4.6", "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": "grok-4.6", "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="grok-4.6",
    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: "grok-4.6",
  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='grok-4.6',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")

รับและบันทึกผลลัพธ์

Ailoot · Anthropic Messages

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot · OpenAI Responses POST /v1/responses grok-4.6

grok-4.6

SpaceXAI /grok-4.6
ID โมเดล
  • grok-4.6
  • grok-4.6-latest

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot · OpenAI Responses POST /v1/responses
ขาเข้า
text, image
ขาออก
text
บริบท
500,000 tokens
เอาต์พุตสูงสุด
500,000 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6
ค่าเริ่มต้น—
ฟิลด์inputประเภทstring|input_item[]ข้อกำหนดจำเป็นค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์instructionsประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์input[].typeประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
message, reasoning, function_call, function_call_output
ค่าเริ่มต้น—
ฟิลด์input[].contentประเภทstring|content_part[]ข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์input[].call_idประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ใช้เมื่อ: function_call_output โดยเก็บ call_id ที่ส่งกลับจริง
ค่าเริ่มต้น—
ฟิลด์input[].outputประเภทstring|content_part[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ใช้เมื่อ: function_call_output
ค่าเริ่มต้น—
ฟิลด์max_output_tokensประเภทintegerข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขั้นต่ำ: 1
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์streamประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้นfalse
ฟิลด์temperatureประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์top_pประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์toolsประเภทtool[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์tool_choiceประเภทstring|objectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์parallel_tool_callsประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์reasoning.effortประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์reasoning.summaryประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์text.formatประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์text.verbosityประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์includeประเภทstring[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์storeประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์previous_response_idประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ข้อกำหนด ID: เฉพาะ ID คำตอบจริงจากขั้นตอนต่อเนื่องที่รองรับ
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์service_tierประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์prompt_cache_keyประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์prompt_cache_optionsประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ชุดผสมของสื่ออินพุต

ข้อความ · ข้อความ UTF8

ข้อความอินพุตหรือส่วน input_text

ข้อความ + ภาพ

{type:input_image,image_url}

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์requiredข้อกำหนดmodel, input
พารามิเตอร์optional_controlsข้อกำหนดnull
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์text_file_materialข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก

วงจรการทำงาน: exact retained published method

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

ราคา

อัตราค่าบริการเมธอด Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
ขาเข้า
US$0.002 / 1K
ขาออก
US$0.006 / 1K
การอ่านแคช
US$0.0005 / 1K
การเขียนแคช
US$0.00 / 1K
การเขียนแคช, 5 นาที
US$0.00 / 1K tokens
การเขียนแคช, 1 ชั่วโมง
US$0.00 / 1K tokens

ราคาตามความยาวคำขอ · OpenAI Responses

ขนาดคำขอ, โทเคนขาเข้าขาออกการอ่านแคชการเขียนแคชแคช 5 นาทีแคช 1 ชั่วโมง
ขนาดคำขอ, โทเคน(0; 200,000]ขาเข้าUS$0.002ขาออกUS$0.006การอ่านแคชUS$0.0005การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00
ขนาดคำขอ, โทเคน(200,000; ∞)ขาเข้าUS$0.004ขาออกUS$0.012การอ่านแคชUS$0.001การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

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

รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

ตัวอย่างคำขอ

Ailoot · OpenAI Responses

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python
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": "grok-4.6", "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": "grok-4.6", "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="grok-4.6", 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: "grok-4.6", 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="grok-4.6", 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")

รับและบันทึกผลลัพธ์

Ailoot · OpenAI Responses

json หรือ SSE

เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกผลลัพธ์และส่วนเนื้อหา call_id ของฟังก์ชันจริง การใช้เหตุผลที่เข้ารหัส และข้อมูลการใช้งาน ในการสตรีมให้เก็บตัวตนของเหตุการณ์/รายการครบถ้วน

เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ
ฟิลด์ประเภท
ฟิลด์idประเภทstring
ฟิลด์statusประเภทstring
ฟิลด์output[]ประเภทmessage|reasoning|function_call|other item
ฟิลด์output[].content[]ประเภทcontent part
ฟิลด์usageประเภทobject
ข้อผิดพลาดและขั้นตอนถัดไป
การตอบกลับเงื่อนไขขั้นตอนถัดไป
การตอบกลับ400 · invalid_request_errorเงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

ชื่ออื่นของโมเดล

Ailoot grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot · OpenAI Chat POST /v1/chat/completions grok-4.6

grok-4.6

SpaceXAI /grok-4.6
ID โมเดล
  • grok-4.6
  • grok-4.6-latest

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text, image
ขาออก
text
บริบท
500,000 tokens
เอาต์พุตสูงสุด
500,000 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6
ค่าเริ่มต้น—
ฟิลด์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ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์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ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ชุดผสมของสื่ออินพุต

ข้อความ · ข้อความ UTF8

messages[].content

ข้อความ + ภาพ

{type:image_url,image_url:{url,detail}}

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์requiredข้อกำหนดmodel, messages
พารามิเตอร์optional_controlsข้อกำหนดnull
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์text_file_materialข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก

วงจรการทำงาน: exact retained published method

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

ราคา

อัตราค่าบริการเมธอด Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
ขาเข้า
US$0.002 / 1K
ขาออก
US$0.006 / 1K
การอ่านแคช
US$0.0005 / 1K
การเขียนแคช
US$0.00 / 1K
การเขียนแคช, 5 นาที
US$0.00 / 1K tokens
การเขียนแคช, 1 ชั่วโมง
US$0.00 / 1K tokens

ราคาตามความยาวคำขอ · OpenAI Chat

ขนาดคำขอ, โทเคนขาเข้าขาออกการอ่านแคชการเขียนแคชแคช 5 นาทีแคช 1 ชั่วโมง
ขนาดคำขอ, โทเคน(0; 200,000]ขาเข้าUS$0.002ขาออกUS$0.006การอ่านแคชUS$0.0005การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00
ขนาดคำขอ, โทเคน(200,000; ∞)ขาเข้าUS$0.004ขาออกUS$0.012การอ่านแคชUS$0.001การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

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

รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

ตัวอย่างคำขอ

Ailoot · OpenAI Chat

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python
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": "grok-4.6", "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": "grok-4.6", "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="grok-4.6",
    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: "grok-4.6",
  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='grok-4.6',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 · OpenAI Chat

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions grok-4.6

grok-4.6

SpaceXAI /grok-4.6
ID โมเดล
  • grok-4.6
  • x-ai/grok-4.6

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text
ขาออก
text
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6
ค่าเริ่มต้น—
ฟิลด์messagesประเภทmessage[]ข้อกำหนดจำเป็นค่าและข้อจำกัด
จำนวนรายการขั้นต่ำ: 1
ค่าเริ่มต้น—
ฟิลด์messages[].roleประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์messages[].contentประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ใช้เมื่อ: บทสนทนาข้อความ
ค่าเริ่มต้น—
ฟิลด์streamประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้นfalse
ชุดผสมของสื่ออินพุต

ข้อความ · ข้อความ UTF8

messages[].content

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์requiredข้อกำหนดmodel, messages
พารามิเตอร์material_typesข้อกำหนดtext
พารามิเตอร์messagesข้อกำหนดอาร์เรย์ข้อความที่มีโครงสร้าง role/content
พารามิเตอร์file_materialข้อกำหนดแทรกเอกสาร UTF-8 จริงเป็นข้อความตามต้นฉบับ โดยไม่อนุมาน ID ไฟล์
พารามิเตอร์optional_controlsข้อกำหนดstream
พารามิเตอร์control_scopeข้อกำหนดบทสนทนาข้อความ โดย stream เป็นบูลีนและมีค่าเริ่มต้น false
พารามิเตอร์output_modalitiesข้อกำหนดtext
พารามิเตอร์hosted_operationsข้อกำหนดfalse
พารามิเตอร์multimodal_input_bindingข้อกำหนดnull

ชื่ออื่นของเมธอด: /chat/completions

วงจรการทำงาน: synchronous_or_streamed

ส่ง ID โมเดลที่ตรงทุกตัวพร้อม messages

ความยาวบริบทไม่ใช่เพดานผลลัพธ์

ไฟล์ข้อความให้ข้อความตามต้นฉบับได้ ส่วนข้อมูลเข้าภาพ/เสียง/ออบเจ็กต์ไฟล์ต้องมีการผูกที่ตรงตามจริง

ราคา

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว
อัตรามาตรฐาน เมื่อเลือกโหมดรวดเร็ว
โหมดยืดหยุ่น
อัตรามาตรฐาน เมื่อเลือกโหมด flex
ระดับการใช้เหตุผลสูงสุด
อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด
ระดับการใช้เหตุผล · สูง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง
ระดับการใช้เหตุผล · ต่ำ
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ
ระดับการใช้เหตุผล · ปานกลาง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง
ระดับการใช้เหตุผล · xhigh
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

อัตราค่าบริการ Ailoot

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าอัตราราคาพื้นฐานของโทเคนตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 2ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

ตัวอย่างคำขอ

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"grok-4.6","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="grok-4.6", 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"))

รับและบันทึกผลลัพธ์

Ailoot Ultra · OpenAI Chat

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot Ultra · Anthropic Messages POST /v1/messages grok-4.6

grok-4.6

SpaceXAI /grok-4.6
ID โมเดล
  • grok-4.6
  • x-ai/grok-4.6

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ
ผลลัพธ์
json · sse

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot Ultra · Anthropic Messages POST /v1/messages
ขาเข้า
text
ขาออก
json, sse
รูปแบบเอาต์พุต
JSON หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6
ค่าเริ่มต้น—
ฟิลด์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 จริง แล้วใส่ข้อความใน input หรือสตริงเนื้อหาข้อความที่ระบุ

วงจรการทำงาน: synchronous_or_streamed

ราคา

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว
อัตรามาตรฐาน เมื่อเลือกโหมดรวดเร็ว
โหมดยืดหยุ่น
อัตรามาตรฐาน เมื่อเลือกโหมด flex
ระดับการใช้เหตุผลสูงสุด
อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด
ระดับการใช้เหตุผล · สูง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง
ระดับการใช้เหตุผล · ต่ำ
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ
ระดับการใช้เหตุผล · ปานกลาง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง
ระดับการใช้เหตุผล · xhigh
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

อัตราค่าบริการ Ailoot

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าอัตราราคาพื้นฐานของโทเคนตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 2ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

ตัวอย่างคำขอ

Ailoot Ultra · Anthropic Messages

เนื้อหาคำขอ JSON ขั้นต่ำที่ครบถ้วนcurl · ใช้เอกสาร UTF-8 ของคุณPython · บันทึกผลลัพธ์ให้ครบถ้วน
{
  "model": "grok-4.6",
  "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': 'grok-4.6', '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': 'grok-4.6', '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 Messages

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot · Anthropic Messages POST /v1/messages grok-4.6-latest

grok-4.6-latest

SpaceXAI /grok-4.6-latest
ID โมเดล
  • grok-4.6
  • grok-4.6-latest

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot · Anthropic Messages POST /v1/messages
ขาเข้า
text, image
ขาออก
text
บริบท
500,000 tokens
เอาต์พุตสูงสุด
500,000 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6-latest
ค่าเริ่มต้น—
ฟิลด์messagesประเภทmessage[]ข้อกำหนดจำเป็นค่าและข้อจำกัด
จำนวนรายการขั้นต่ำ: 1
ค่าเริ่มต้น—
ฟิลด์messages[].roleประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
user, assistant
ค่าเริ่มต้น—
ฟิลด์messages[].contentประเภทstring|content_block[]ข้อกำหนดจำเป็นค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์systemประเภทstring|content_block[]ข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์max_tokensประเภทintegerข้อกำหนดจำเป็นค่าและข้อจำกัด
ขั้นต่ำ: 1
ข้อจำกัดใช้กับ: เพดานที่ตรงกับโมเดล/การ์ดที่เลือก
ค่าเริ่มต้น—
ฟิลด์streamประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้นfalse
ฟิลด์temperatureประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์top_pประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์stop_sequencesประเภทstring[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์toolsประเภทtool[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์tools[].nameประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ใช้เมื่อ: มีเครื่องมือให้ใช้
ค่าเริ่มต้น—
ฟิลด์tools[].descriptionประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์tools[].input_schemaประเภทJSON_schemaข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์tool_choiceประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์thinking.typeประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์thinking.budget_tokensประเภทintegerข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์output_config.effortประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์metadataประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์cache_controlประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ชุดผสมของสื่ออินพุต

ข้อความ · ข้อความ UTF8

messages[].content หรือบล็อก type=text

ข้อความ + ภาพ

{type:image,source:{type:base64,media_type,data}} หรือแหล่งข้อมูลชนิด type=url

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์requiredข้อกำหนดmodel, messages, max_tokens
พารามิเตอร์optional_controlsข้อกำหนดnull
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์text_file_materialข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก

วงจรการทำงาน: exact retained published method

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

ราคา

อัตราค่าบริการเมธอด Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
ขาเข้า
US$0.002 / 1K
ขาออก
US$0.006 / 1K
การอ่านแคช
US$0.0005 / 1K
การเขียนแคช
US$0.00 / 1K
การเขียนแคช, 5 นาที
US$0.00 / 1K tokens
การเขียนแคช, 1 ชั่วโมง
US$0.00 / 1K tokens

ราคาตามความยาวคำขอ · Anthropic Messages

ขนาดคำขอ, โทเคนขาเข้าขาออกการอ่านแคชการเขียนแคชแคช 5 นาทีแคช 1 ชั่วโมง
ขนาดคำขอ, โทเคน(0; 200,000]ขาเข้าUS$0.002ขาออกUS$0.006การอ่านแคชUS$0.0005การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00
ขนาดคำขอ, โทเคน(200,000; ∞)ขาเข้าUS$0.004ขาออกUS$0.012การอ่านแคชUS$0.001การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

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

รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

ตัวอย่างคำขอ

Ailoot · Anthropic Messages

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python
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": "grok-4.6-latest", "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": "grok-4.6-latest", "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="grok-4.6-latest",
    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: "grok-4.6-latest",
  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='grok-4.6-latest',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")

รับและบันทึกผลลัพธ์

Ailoot · Anthropic Messages

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot · OpenAI Responses POST /v1/responses grok-4.6-latest

grok-4.6-latest

SpaceXAI /grok-4.6-latest
ID โมเดล
  • grok-4.6
  • grok-4.6-latest

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot · OpenAI Responses POST /v1/responses
ขาเข้า
text, image
ขาออก
text
บริบท
500,000 tokens
เอาต์พุตสูงสุด
500,000 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6-latest
ค่าเริ่มต้น—
ฟิลด์inputประเภทstring|input_item[]ข้อกำหนดจำเป็นค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์instructionsประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์input[].typeประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
message, reasoning, function_call, function_call_output
ค่าเริ่มต้น—
ฟิลด์input[].contentประเภทstring|content_part[]ข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้น—
ฟิลด์input[].call_idประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ใช้เมื่อ: function_call_output โดยเก็บ call_id ที่ส่งกลับจริง
ค่าเริ่มต้น—
ฟิลด์input[].outputประเภทstring|content_part[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ใช้เมื่อ: function_call_output
ค่าเริ่มต้น—
ฟิลด์max_output_tokensประเภทintegerข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขั้นต่ำ: 1
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์streamประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัดค่าเริ่มต้นfalse
ฟิลด์temperatureประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์top_pประเภทnumberข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์toolsประเภทtool[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์tool_choiceประเภทstring|objectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์parallel_tool_callsประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์reasoning.effortประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์reasoning.summaryประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์text.formatประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์text.verbosityประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์includeประเภทstring[]ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์storeประเภทbooleanข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์previous_response_idประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ข้อกำหนด ID: เฉพาะ ID คำตอบจริงจากขั้นตอนต่อเนื่องที่รองรับ
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์service_tierประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์prompt_cache_keyประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์prompt_cache_optionsประเภทobjectข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ชุดผสมของสื่ออินพุต

ข้อความ · ข้อความ UTF8

ข้อความอินพุตหรือส่วน input_text

ข้อความ + ภาพ

{type:input_image,image_url}

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์requiredข้อกำหนดmodel, input
พารามิเตอร์optional_controlsข้อกำหนดnull
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์text_file_materialข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก

วงจรการทำงาน: exact retained published method

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

ราคา

อัตราค่าบริการเมธอด Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
ขาเข้า
US$0.002 / 1K
ขาออก
US$0.006 / 1K
การอ่านแคช
US$0.0005 / 1K
การเขียนแคช
US$0.00 / 1K
การเขียนแคช, 5 นาที
US$0.00 / 1K tokens
การเขียนแคช, 1 ชั่วโมง
US$0.00 / 1K tokens

ราคาตามความยาวคำขอ · OpenAI Responses

ขนาดคำขอ, โทเคนขาเข้าขาออกการอ่านแคชการเขียนแคชแคช 5 นาทีแคช 1 ชั่วโมง
ขนาดคำขอ, โทเคน(0; 200,000]ขาเข้าUS$0.002ขาออกUS$0.006การอ่านแคชUS$0.0005การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00
ขนาดคำขอ, โทเคน(200,000; ∞)ขาเข้าUS$0.004ขาออกUS$0.012การอ่านแคชUS$0.001การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

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

รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

ตัวอย่างคำขอ

Ailoot · OpenAI Responses

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python
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": "grok-4.6-latest", "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": "grok-4.6-latest", "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="grok-4.6-latest", 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: "grok-4.6-latest", 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="grok-4.6-latest", 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")

รับและบันทึกผลลัพธ์

Ailoot · OpenAI Responses

json หรือ SSE

เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกผลลัพธ์และส่วนเนื้อหา call_id ของฟังก์ชันจริง การใช้เหตุผลที่เข้ารหัส และข้อมูลการใช้งาน ในการสตรีมให้เก็บตัวตนของเหตุการณ์/รายการครบถ้วน

เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ
ฟิลด์ประเภท
ฟิลด์idประเภทstring
ฟิลด์statusประเภทstring
ฟิลด์output[]ประเภทmessage|reasoning|function_call|other item
ฟิลด์output[].content[]ประเภทcontent part
ฟิลด์usageประเภทobject
ข้อผิดพลาดและขั้นตอนถัดไป
การตอบกลับเงื่อนไขขั้นตอนถัดไป
การตอบกลับ400 · invalid_request_errorเงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

ชื่ออื่นของโมเดล

Ailoot grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot · OpenAI Chat POST /v1/chat/completions grok-4.6-latest

grok-4.6-latest

SpaceXAI /grok-4.6-latest
ID โมเดล
  • grok-4.6
  • grok-4.6-latest

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text, image
ขาออก
text
บริบท
500,000 tokens
เอาต์พุตสูงสุด
500,000 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
grok-4.6-latest
ค่าเริ่มต้น—
ฟิลด์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ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ฟิลด์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ข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขึ้นอยู่กับโมเดล
ค่าเริ่มต้น—
ชุดผสมของสื่ออินพุต

ข้อความ · ข้อความ UTF8

messages[].content

ข้อความ + ภาพ

{type:image_url,image_url:{url,detail}}

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์requiredข้อกำหนดmodel, messages
พารามิเตอร์optional_controlsข้อกำหนดnull
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์text_file_materialข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก

วงจรการทำงาน: exact retained published method

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

ราคา

อัตราค่าบริการเมธอด Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
ขาเข้า
US$0.002 / 1K
ขาออก
US$0.006 / 1K
การอ่านแคช
US$0.0005 / 1K
การเขียนแคช
US$0.00 / 1K
การเขียนแคช, 5 นาที
US$0.00 / 1K tokens
การเขียนแคช, 1 ชั่วโมง
US$0.00 / 1K tokens

ราคาตามความยาวคำขอ · OpenAI Chat

ขนาดคำขอ, โทเคนขาเข้าขาออกการอ่านแคชการเขียนแคชแคช 5 นาทีแคช 1 ชั่วโมง
ขนาดคำขอ, โทเคน(0; 200,000]ขาเข้าUS$0.002ขาออกUS$0.006การอ่านแคชUS$0.0005การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00
ขนาดคำขอ, โทเคน(200,000; ∞)ขาเข้าUS$0.004ขาออกUS$0.012การอ่านแคชUS$0.001การเขียนแคชUS$0.00แคช 5 นาทีUS$0.00แคช 1 ชั่วโมงUS$0.00

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

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

รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็นตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

ตัวอย่างคำขอ

Ailoot · OpenAI Chat

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python
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": "grok-4.6-latest", "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": "grok-4.6-latest", "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="grok-4.6-latest",
    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: "grok-4.6-latest",
  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='grok-4.6-latest',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 · OpenAI Chat

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions x-ai/grok-4.6

x-ai/grok-4.6

SpaceXAI /x-ai/grok-4.6
ID โมเดล
  • grok-4.6
  • x-ai/grok-4.6

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ
ผลลัพธ์
ข้อความ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text
ขาออก
text
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
x-ai/grok-4.6
ค่าเริ่มต้น—
ฟิลด์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
ระดับการใช้เหตุผลสูงสุด
อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด
ระดับการใช้เหตุผล · สูง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง
ระดับการใช้เหตุผล · ต่ำ
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ
ระดับการใช้เหตุผล · ปานกลาง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง
ระดับการใช้เหตุผล · xhigh
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

อัตราค่าบริการ Ailoot

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าอัตราราคาพื้นฐานของโทเคนตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 2ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

ตัวอย่างคำขอ

Ailoot Ultra · OpenAI Chat

curlPython SDKสตรีมด้วย Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "x-ai/grok-4.6", "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='x-ai/grok-4.6',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='x-ai/grok-4.6',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 Chat

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

Ailoot Ultra · Anthropic Messages POST /v1/messages x-ai/grok-4.6

x-ai/grok-4.6

SpaceXAI /x-ai/grok-4.6
ID โมเดล
  • grok-4.6
  • x-ai/grok-4.6

เริ่มต้น

Grok 4.6 สร้างสำหรับงานโค้ด การวิจัย และโครงการเชิงโต้ตอบต่อเนื่อง รับข้อความและภาพ รองรับบริบท 500 000 โทเคนและการใช้เหตุผลสี่ระดับ

อินพุตที่รองรับ
ข้อความ
ผลลัพธ์
json · sse

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot Ultra · Anthropic Messages POST /v1/messages
ขาเข้า
text
ขาออก
json, sse
รูปแบบเอาต์พุต
JSON หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
x-ai/grok-4.6
ค่าเริ่มต้น—
ฟิลด์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 จริง แล้วใส่ข้อความใน input หรือสตริงเนื้อหาข้อความที่ระบุ

วงจรการทำงาน: synchronous_or_streamed

ราคา

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว
อัตรามาตรฐาน เมื่อเลือกโหมดรวดเร็ว
โหมดยืดหยุ่น
อัตรามาตรฐาน เมื่อเลือกโหมด flex
ระดับการใช้เหตุผลสูงสุด
อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด
ระดับการใช้เหตุผล · สูง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง
ระดับการใช้เหตุผล · ต่ำ
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ
ระดับการใช้เหตุผล · ปานกลาง
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง
ระดับการใช้เหตุผล · xhigh
อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

อัตราค่าบริการ Ailoot

ราคาตามการตั้งค่า

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าอัตราราคาพื้นฐานของโทเคนตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่า200,000ค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.004 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.012 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.001 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 2ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า200,000โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.008 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.002 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

ตัวอย่างคำขอ

Ailoot Ultra · Anthropic Messages

เนื้อหาคำขอ JSON ขั้นต่ำที่ครบถ้วนcurl · ใช้เอกสาร UTF-8 ของคุณPython · บันทึกผลลัพธ์ให้ครบถ้วน
{
  "model": "x-ai/grok-4.6",
  "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': 'x-ai/grok-4.6', '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': 'x-ai/grok-4.6', '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 Messages

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 grok-4.6, grok-4.6-latest
Ailoot Ultra grok-4.6, x-ai/grok-4.6

ชื่อพาธเมธอดอื่น

/chat/completions

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

x-ai/grok-4.6, grok-4.6-latest, grok-4.6, grok-4.6

FAQ · SpaceXAI: Grok 4.6
มีอินพุตและผลลัพธ์ใดบ้าง?

POST /v1/messages · grok-4.6: text, image → text

POST /v1/responses · grok-4.6: text, image → text

POST /v1/chat/completions · grok-4.6: text, image → text

POST /v1/chat/completions · grok-4.6: text → text

POST /v1/messages · grok-4.6: text → json, sse

POST /v1/messages · grok-4.6-latest: text, image → text

POST /v1/responses · grok-4.6-latest: text, image → text

POST /v1/chat/completions · grok-4.6-latest: text, image → text

POST /v1/chat/completions · x-ai/grok-4.6: text → text

POST /v1/messages · x-ai/grok-4.6: text → json, sse

คำขอใช้ฟิลด์ใดบ้าง?

POST /v1/messages · grok-4.6: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · grok-4.6: model, input, instructions, stream

POST /v1/chat/completions · grok-4.6: model, messages, stream

POST /v1/chat/completions · grok-4.6: model, messages, stream

POST /v1/messages · grok-4.6: model, messages, max_tokens, stream

POST /v1/messages · grok-4.6-latest: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · grok-4.6-latest: model, input, instructions, stream

POST /v1/chat/completions · grok-4.6-latest: model, messages, stream

POST /v1/chat/completions · x-ai/grok-4.6: model, messages, stream, modalities, provider

POST /v1/messages · x-ai/grok-4.6: model, messages, max_tokens, stream

มีข้อจำกัดใดบ้าง?

POST /v1/messages · grok-4.6: ctx: 500000; max_out: 500000; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · grok-4.6: ctx: 500000; max_out: 500000

POST /v1/chat/completions · grok-4.6: ctx: 500000; max_out: 500000; messages.min_items: 1

POST /v1/chat/completions · grok-4.6: messages.min_items: 1

POST /v1/messages · grok-4.6-latest: ctx: 500000; max_out: 500000; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · grok-4.6-latest: ctx: 500000; max_out: 500000

POST /v1/chat/completions · grok-4.6-latest: ctx: 500000; max_out: 500000; messages.min_items: 1

POST /v1/chat/completions · x-ai/grok-4.6: messages.min_items: 1

รายละเอียดเพิ่มเติม

เชื่อม Ailoot กับ Claude Code, OpenCode, Hermes หรือแอปของคุณ

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท: ลูกค้าหลายล้านราย; ยอดขายระดับหลายพันล้านต่อเดือน.

ซื้อโทเคนพร้อมส่วนลด

ส่วนลดสมาชิกสำหรับงานประจำ โค้ดโปรโมชั่นลดซื้อโทเคนสูงสุด 50%

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

เลือกสมาชิก · ดูราคาโมเดล

เชื่อม API กับผลิตภัณฑ์ ที่คุณขาย

SaaS แอป และบอต ตามข้อเสนอและสัญญาอนุญาต Ailoot หากขายต่อให้ขอใบอนุญาตรีเซลเลอร์

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

ขอใบอนุญาตขายต่อ · ข้อเสนอและสัญญาอนุญาต