เอกสาร API Hop
Chat Completions ร่วม
API แชตร่วมสำหรับสลับโมเดลข้อความผ่านพารามิเตอร์ model รูปแบบคำขอเข้ากันได้กับ OpenAI Chat Completions
https://api.apihop.ai/v1/chat-completionsAPI แชตร่วมสำหรับสลับโมเดลข้อความผ่านพารามิเตอร์ model รูปแบบคำขอเข้ากันได้กับ OpenAI Chat Completions
ผู้ให้บริการต้นทางรองรับ Claude Sonnet 4.6 (claude-sonnet-4-6) แต่ปัจจุบันยังไม่เผยแพร่บน API Hop และไม่ใช่ค่าเริ่มต้นการเชื่อมต่อที่ใช้งาน ก่อนเรียกโมเดลใด ให้ยืนยันสิทธิ์ด้วยการตอบกลับ GET https://api.apihop.ai/v1/models ของคุณเอง
เอนด์พอยต์นี้ส่งการตอบกลับ JSON สมบูรณ์หนึ่งชุดเป็นค่าเริ่มต้น ตั้ง stream: true ชัดเจนเมื่อต้องการสตรีม SSE
POST https://api.apihop.ai/v1/chat-completionsการยืนยันตัวตน
ทุกคำขอต้องยืนยันตัวตนด้วย Bearer Token
Authorization: Bearer YOUR_API_KEYหากยืนยันตัวตนล้มเหลว ให้ตรวจ:
- คีย์ API ถูกต้องหรือไม่
- คีย์ใช้กับ API Base URL นี้ได้หรือไม่
- สะกดเฮดเดอร์คำขอถูกต้องหรือไม่
- พร็อกซีเขียนเฮดเดอร์ยืนยันตัวตนใหม่หรือไม่
เนื้อหาคำขอ
modelstringจำเป็นค่าเริ่มต้น: gpt-5.4ID โมเดลข้อความในเอกสาร (ยืนยันสิทธิ์ด้วย GET https://api.apihop.ai/v1/models):
- OpenAI:
gpt-5.4,gpt-5.5,gpt-5.6-sol,gpt-5.6-terra,gpt-6-astra - Anthropic:
claude-fable-5,claude-fable-5-1,claude-opus-4-6,claude-opus-4-7,claude-opus-4-8,claude-opus-5,claude-opus-5-5,claude-sonnet-5,claude-sonnet-5-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro,deepseek-v4.1-flash(V4.1 Flash เป็น ID โมเดลแยก พร้อมเฉพาะหลังติดตั้งและเปิดใช้ ตรวจGET https://api.apihop.ai/v1/models) - Gemini:
gemini-3.6-flash,gemini-3.7-flash,gemini-3.8-flash,gemini-3.5-flash-lite,gemini-4-argon(หลังติดตั้งและเปิดใช้) - Kimi:
kimi-k3 - MiniMax:
minimax-m3
ดูแค็ตตาล็อกโมเดล สำหรับรายการทั้งหมดและโมเดลที่คีย์ API ปัจจุบันมองเห็น ใช้การตอบกลับ GET https://api.apihop.ai/v1/models ของคุณเป็นแหล่งความพร้อมปัจจุบัน ดูคู่มือ DeepSeek, Gemini, Kimi และ MiniMax สำหรับหมายเหตุการเลือกและตัวอย่างเฉพาะตระกูล
messagesobject[]จำเป็นข้อความแชต แต่ละข้อความควรมี:
role:system,userหรือassistantcontent: เนื้อหาข้อความ
ตัวอย่าง:
[
{"role": "system", "content": "You are a helpful Python tutor."},
{"role": "user", "content": "How should I learn programming?"}
]ข้อจำกัดการสุ่มเฉพาะโมเดล: gpt-6-astra ไม่รับ temperature, top_p หรือ top_logprobs แบบเก่า ให้ละฟิลด์เหล่านี้แม้ไคลเอนต์เก่าส่งมา Playground GPT-6 Astra ของ API Hop ซ่อนตัวควบคุมการสุ่มและบทลงโทษแบบเก่าด้วย claude-sonnet-5 ปฏิเสธ top_p ในการตรวจเชื่อมต่อซ้ำที่บันทึกไว้ จึงควรละสำหรับโมเดลนั้นด้วย การส่งฟิลด์เสริมผ่านพร็อกซีไม่ยืนยันว่าโมเดลต้นทางที่เลือกรองรับ
temperaturenumberค่าเริ่มต้น: 1.0อุณหภูมิการสุ่ม ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ 0 ถึง 2 แต่โมเดลที่เลือกตัดสินการตรวจสุดท้าย
max_tokensintegerโทเคนเอาต์พุตสูงสุดแบบไม่บังคับ เป็นจำนวนเต็มบวก ไม่ระบุเพื่อใช้ค่าเริ่มต้นต้นทางของโมเดลที่เลือก ค่าเริ่มต้นและขีดสูงสุดต่างตามโมเดลและการตั้งค่าต้นทาง
งบอาจรวมโทเคนการให้เหตุผลและข้อความสุดท้ายตามโมเดล งบน้อยอาจทำให้ finish_reason: "length" ตัดคำตอบ หรือหมดก่อนข้อความสุดท้าย การเพิ่มงบอาจเพิ่มค่าใช้จ่าย
max_completion_tokensintegerตัวเลือกเพื่อความเข้ากันได้แทน max_tokens แบบไม่บังคับ มีข้อพิจารณางบเดียวกัน โมเดลอาจรับเพียงฟิลด์หนึ่ง จึงเริ่มด้วยเนื้อหาขั้นต่ำเมื่อสลับโมเดล ละทั้งสองเพื่อใช้ค่าเริ่มต้นต้นทาง
streambooleanค่าเริ่มต้น: falseจะสตรีมการตอบกลับหรือไม่
true: ส่ง Server-Sent Eventsfalse: ส่งการตอบกลับสมบูรณ์หนึ่งชุด
top_pnumberค่าเริ่มต้น: 1.0พารามิเตอร์สุ่มแบบ nucleus ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ 0 ถึง 1 โมเดลที่เลือกตรวจขั้นสุดท้าย
frequency_penaltynumberค่าเริ่มต้น: 0บทลงโทษความถี่ ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ -2.0 ถึง 2.0 โมเดลที่เลือกตรวจขั้นสุดท้าย
presence_penaltynumberค่าเริ่มต้น: 0บทลงโทษการปรากฏ ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ -2.0 ถึง 2.0 โมเดลที่เลือกตรวจขั้นสุดท้าย
stopstring | arrayลำดับหยุดหรืออาร์เรย์ลำดับหยุด โมเดลที่เลือกกำหนดจำนวนที่รับและพฤติกรรม
nintegerค่าเริ่มต้น: 1จำนวนการตอบกลับที่จะสร้าง ใช้ตัวเลข เช่น 1 ไม่ใช่สตริงในเครื่องหมายคำพูด
ความต่างพารามิเตอร์โมเดล
โมเดลข้อความปัจจุบันรองรับคำขอแชตขั้นต่ำทั้งสตรีมและไม่สตรีม แต่การยอมรับพารามิเตอร์เสริมและผลต่างตามโมเดลที่เลือกและการทำงานเพื่อความเข้ากันได้
การตรวจซ้ำล่าสุดเมื่อ 2026-09-26 ยอมรับ claude-fable-5 กับ temperature: 0 และส่งข้อความ การตรวจเดียวกันปฏิเสธ claude-sonnet-5 กับ top_p: 0.9 ด้วย HTTP 400 และ top_p is deprecated ให้ละ top_p สำหรับโมเดลนั้น การยอมรับไม่ได้ยืนยันผลต่อการสุ่มหรือรับประกันโมเดลอื่นและคำขอภายหลัง อย่าคิดว่ารองรับพารามิเตอร์สุ่มทั้งหมด
การตรวจ OpenAI เมื่อ 2026-09-26 ยอมรับ stop สำหรับ gpt-5.6-sol และ gpt-5.6-terra การยอมรับพารามิเตอร์อาจเปลี่ยนตามต้นทางและไม่พิสูจน์ว่าลำดับหยุดได้ผล
การส่งต่อแชตดั้งเดิมที่เข้ากันได้กับ OpenAI คง top_p และ stop ในคำขอต้นทาง เส้นทางแปลง Chat เป็น Responses คง top_p แต่ไม่ส่งต่อ stop การส่งฟิลด์ไม่ยืนยันการรองรับหรือผลจากต้นทาง ทั้งสองฟิลด์ไม่มีรับประกันทั่วแพลตฟอร์มทุกเส้นทาง
เริ่มด้วยคำขอขั้นต่ำเมื่อสลับโมเดล แล้วตรวจการสุ่ม ลำดับหยุด และพารามิเตอร์เครื่องมือขั้นสูงแยกกัน สำหรับลำดับหยุด ตรวจข้อความจริงและเหตุผลหยุด ไม่ใช่แค่สถานะ HTTP HTTP 200 ไม่ยืนยันผลการสุ่ม งบเอาต์พุตต้องครอบคลุมทั้งการคิดและข้อความสุดท้ายของโมเดล
ตัวอย่างคำขอ
{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "Hello, introduce yourself briefly."
}
],
"stream": false
}การตอบกลับ
idstringตัวระบุการตอบกลับไม่ซ้ำ
objectstringชนิดออบเจ็กต์ โดยทั่วไป chat.completion หรือ chat.completion.chunk สำหรับสตรีม
createdintegerเวลาสร้างแบบ Unix
modelstringตัวระบุโมเดลที่ส่งในการตอบกลับ
choicesarrayตัวเลือกที่สร้าง รวมเนื้อหาข้อความ ดัชนี และเหตุผลจบ
usageobjectสถิติการใช้โทเคน
ตัวอย่างสำเร็จ
{
"id": "chatcmpl-9876543210",
"object": "chat.completion",
"created": 1677652288,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I am an AI assistant that can help with writing, coding, and analysis."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 42,
"total_tokens": 70
}
}การตอบกลับข้อผิดพลาด
ดูรหัสข้อผิดพลาดและการแก้ปัญหา สำหรับรหัสอ้างอิงทั้งหมด ความต่างโปรโตคอล และขั้นตอนวินิจฉัย
ข้อผิดพลาด HTTP ของ Chat Completions ใช้เนื้อหา JSON แบบแบน รวมข้อผิดพลาด HTTP ต้นทางก่อนสตรีม SSE เริ่ม เช่น HTTP 402 ส่ง:
{
"code": 40000,
"message": "Insufficient credit. Required: 30000, Available: 20000",
"type": "api_error"
}code: รหัสข้อผิดพลาดแพลตฟอร์มตัวเลข แยกจากสถานะ HTTP และไม่ใช่สตริงmessage: คำอธิบายข้อผิดพลาดที่คนอ่านได้type:api_errorrequestId: ตัวระบุคำขอเสริมสำหรับแก้ปัญหา
| สถานะ HTTP | code | ความหมาย |
|---|---|---|
| 400 | 10000 | คำขอไม่ถูกต้อง |
| 401 | 20000 | ไม่มีการยืนยันตัวตนหรือไม่ถูกต้อง |
| 402 | 40000 | เครดิตไม่พอ |
| 403 | 20001 | ปฏิเสธสิทธิ์หรือโมเดลไม่พร้อมสำหรับคีย์นี้ |
| 404 | 30000 | ไม่พบโมเดลหรือทรัพยากร |
| 409 | 30001 | คำขอขัดแย้ง |
| 422 | 10001 | ตรวจสอบไม่ผ่าน |
| 429 | 40001 | เกินขีดจำกัดอัตรา |
| 500 | 50003 | ข้อผิดพลาดภายใน |
| 502 | 50000 | ข้อผิดพลาดผู้ให้บริการต้นทาง |
| 503 | 50001 | บริการไม่พร้อม |
| 504 | 50002 | เกตเวย์หมดเวลา |
ตรวจสถานะ HTTP ก่อนเพื่อดูว่าคำขอสำเร็จหรือไม่ แล้วเปรียบเทียบ code ตัวเลขเพื่อจัดการเฉพาะแอปพลิเคชัน อย่าเทียบ code กับสตริง เช่น "400" คิดว่าเท่ากับสถานะ HTTP หรือแยก message เป็นตัวระบุข้อผิดพลาดคงที่ messages ที่ขาดหรือชนิดไม่ถูกต้องถูกปฏิเสธด้วย HTTP 400 และ code: 10000 ก่อนเรียกผู้ให้บริการ
รูปแบบข้อผิดพลาดนี้ใช้กับการตอบกลับ HTTP ของ Chat Completions ไม่ใช่ข้อผิดพลาดภายในสตรีม SSE ที่เริ่มแล้วหรือโปรโตคอล API อื่น Model Catalog และเอนด์พอยต์โปรโตคอลดั้งเดิมมีรูปแบบข้อผิดพลาดในเอกสารของตน