สร้างแชท
BazaarLink ส่งคืน response มาตรฐานและลบฟิลด์เฉพาะของ upstream ออก usage.cost คือจำนวน USD ที่เรียกเก็บจากลูกค้าสำหรับคำขอนี้ ใช้ BazaarLink request ID แบบ opaque จาก response id หรือ header x-request-id กับ GET /v1/generation; response non-streaming มี ID เดียวกันใน x-generation-id สถิติอาจปรากฏหลังเสร็จไม่กี่วินาที หากได้ 404 ให้ลองซ้ำช่วงสั้นๆ คำขอ Chat, Messages และ Responses แบบ non-streaming ที่นาน (ประมาณ 12 วินาทีขึ้นไป) อาจมี whitespace keep-alive ก่อน JSON body โดย JSON parser มาตรฐานรองรับช่องว่างนำหน้า Audio chat ใช้ endpoint นี้ ขอเสียงเอาต์พุตด้วย modalities:["text","audio"] และ audio:{voice,format} GET /v1/models?output_modalities=audio กรองเฉพาะโมเดลที่ให้เสียงเอาต์พุต ไม่ใช่ทุกโมเดลที่รับเสียงอินพุต โมเดลที่รับเสียงแล้วตอบเป็นข้อความยังอยู่ในรายการ text ป้ายความสามารถเพียงอย่างเดียวไม่รับประกันว่ามีเส้นทางที่ใช้งานได้ ให้เลือกโมเดลในรายการสาธารณะและพารามิเตอร์ที่รองรับ เอาต์พุตเสียงล้วน TTS STT และโหมดสร้างที่ไม่คิดตาม token อยู่นอกข้อกำหนดนี้
/v1/chat/completionsการอนุญาต
Authorizationจำเป็นAPI key เป็น bearer token ใน header Authorization
Body
modelจำเป็นโมเดลที่จะใช้ ในรูปแบบมีคำนำหน้าผู้ให้บริการ เช่น "openai/gpt-4o" GET /v1/models แสดง id เช่น "claude-sonnet-4.6" และ canonical alias เช่น "anthropic/claude-sonnet-4.6" คำขอใช้ได้ทั้งสองแบบ ให้ใช้ค่าที่แสดงในรายการ
"openai/gpt-4o"messagesจำเป็นอาร์เรย์ของข้อความสนทนา อย่างน้อยหนึ่งรายการ แต่ละข้อความมี role (system/user/assistant/tool) และ content
contentใส่เสียงอินพุตใน messages[].content[]: {"type":"input_audio","input_audio":{"data":"<raw base64>","format":"wav"}} ใช้ base64 ดิบสำหรับ data ไม่ใช้ data URI รูปแบบที่รองรับขึ้นอยู่กับโมเดล อย่าใช้ input_audio ระดับบนสุด เพราะไม่มีการตรวจสอบเฉพาะและไม่มีข้อกำหนดการกันเครดิตไว้ล่วงหน้า
[{"type":"input_audio","input_audio":{"data":"<raw base64>","format":"wav"}}]modelsรายการโมเดลสำรอง — ลองตามลำดับ ใช้ก็ต่อเมื่อกลุ่มตัวเลือกของโมเดลหลักหมดแล้วเท่านั้น
streamtrue จะสตรีมการตอบกลับแบบ SSE; ละไว้หรือ false จะคืนค่าการตอบกลับ JSON เดียว สตรีมเสียงส่งคืนชิ้นส่วน data (เสียง base64) และ transcript ใน choices[].delta.audio ส่วนการตอบแบบไม่สตรีมใช้ choices[].message.audio โมเดลอาจให้ id และ expires_at ด้วย ให้รวมชิ้นส่วนแล้วถอดรหัสตาม audio.format รูปแบบการสตรีมขึ้นอยู่กับโมเดล
temperatureอุณหภูมิการสุ่มตัวอย่าง — ค่ายิ่งสูงยิ่งสุ่ม ค่ายิ่งต่ำยิ่งแน่นอน ค่าสุ่มจะถูกส่งต่อโดยไม่ตรวจสอบช่วง โมเดลอาจจำกัดหรือไม่สนใจค่าที่อยู่นอกช่วงที่รองรับ
max_tokensจำนวนโทเค็นสูงสุดที่การตอบกลับสามารถสร้างได้
max_completion_tokensชื่อแทนของ max_tokens ที่มีความหมายเดียวกัน
top_pเกณฑ์ nucleus sampling
top_kจำกัดการสุ่มตัวอย่างให้เหลือ K โทเค็นที่มีความน่าจะเป็นสูงสุด
frequency_penaltyลงโทษโทเค็นตามความถี่ที่ปรากฏมาแล้ว
presence_penaltyลงโทษโทเค็นตามว่าเคยปรากฏหรือไม่ ไม่นับจำนวนครั้ง
repetition_penaltyค่าสัมประสิทธิ์บทลงโทษการซ้ำ — กลไกแยกจาก frequency/presence penalty
min_pเกณฑ์ความน่าจะเป็นขั้นต่ำเทียบกับโทเค็นที่มีโอกาสสูงสุด
top_aกลไกการสุ่มตัวอย่างแบบตัดขอบเขตแบบไดนามิกอีกแบบ ปรับเกณฑ์ตามกำลังสองของความน่าจะเป็นสูงสุด
seedseed สุ่มแบบกำหนดได้ ไม่ใช่ทุกผู้ให้บริการที่รับประกันการทำซ้ำได้
nจำนวนการตอบกลับที่จะสร้าง
stopลำดับที่ทำให้การสร้างหยุด สูงสุด 4 รายการ
toolsรายการนิยามเครื่องมือ/ฟังก์ชันที่โมเดลสามารถเรียกใช้ได้
tool_choiceควบคุมว่าโมเดลจะถูกบังคับให้เรียกเครื่องมือหรือไม่/อย่างไร
parallel_tool_callsอนุญาตให้เรียกเครื่องมือแบบขนานเมื่อมี tools หรือไม่ ค่าเริ่มต้น true ใช้ได้เฉพาะโมเดลตระกูล OpenAI เท่านั้น — จะถูกตัดออกอย่างเงียบ ๆ เมื่อโมเดลเป้าหมายไม่ใช่ของ OpenAI ไม่ใช่ข้อผิดพลาด
response_formatจำกัดรูปแบบเอาต์พุต เช่น {type:"json_object"} หรือ {type:"json_schema"} พร้อม JSON Schema
logit_biasแมป ID โทเค็นไปยังค่าอคติ [-100, 100] ที่เพิ่มก่อนการสุ่มตัวอย่าง ใช้ได้เฉพาะโมเดลตระกูล OpenAI เท่านั้น — จะถูกตัดออกอย่างเงียบ ๆ เมื่อโมเดลเป้าหมายไม่ใช่ของ OpenAI ไม่ใช่ข้อผิดพลาด
logprobsคืนค่า log probabilities ของแต่ละโทเค็นเอาต์พุต ใช้ได้เฉพาะโมเดลตระกูล OpenAI เท่านั้น — จะถูกตัดออกอย่างเงียบ ๆ เมื่อโมเดลเป้าหมายไม่ใช่ของ OpenAI ไม่ใช่ข้อผิดพลาด
top_logprobsจำนวนโทเค็นที่น่าจะเป็นไปได้มากที่สุดต่อตำแหน่ง (ต้องใช้ logprobs: true) ใช้ได้เฉพาะโมเดลตระกูล OpenAI เท่านั้น — จะถูกตัดออกอย่างเงียบ ๆ เมื่อโมเดลเป้าหมายไม่ใช่ของ OpenAI ไม่ใช่ข้อผิดพลาด
userตัวระบุผู้ใช้ปลายทางสำหรับการตรวจสอบและตรวจจับการละเมิด ไม่มีผลต่อการเรียกเก็บเงิน ใช้ได้เฉพาะโมเดลตระกูล OpenAI เท่านั้น — จะถูกตัดออกอย่างเงียบ ๆ เมื่อโมเดลเป้าหมายไม่ใช่ของ OpenAI ไม่ใช่ข้อผิดพลาด
reasoningอ็อบเจ็กต์ควบคุมการคิดของโมเดล reasoning (เช่น {effort, max_tokens})
reasoning_effortฟิลด์แบบย่อของ reasoning.effort
lowmediumhighinclude_reasoningtrue จะส่งเนื้อหาความคิดกลับใน message.reasoning (delta.reasoning เมื่อสตรีม); false ปิดการคิดสำหรับโมเดลที่คิดโดยค่าเริ่มต้น (ดูหัวข้อ reasoning) จึงไม่มีการคิดเงินค่าคิด หากไม่ส่ง reasoning_effort, reasoning หรือ thinking จะมีเพียงโมเดลเหล่านั้นที่คิดและส่งกลับโดยค่าเริ่มต้น โมเดลอื่นส่งกลับเมื่อร้องขอเท่านั้น.
image_configตัวเลือกการสร้าง/แก้ไขภาพ (ใช้เมื่อ modalities มี image)
modalitiesโมดัลลิตีเอาต์พุตที่ร้องขอ หากมี image จะเดินทางผ่านเส้นทาง dispatch การสร้างภาพ Audio chat ใช้ ["text","audio"] ร่วมกับอ็อบเจ็กต์ audio และต้องใช้โมเดลที่รองรับเอาต์พุตทั้งข้อความและเสียง
textimageaudio["text","audio"]audioตัวเลือกเสียงเอาต์พุต ใช้ร่วมกับ modalities:["text","audio"] ค่า voice และ format ที่รองรับขึ้นอยู่กับโมเดล
{"voice":"alloy","format":"wav"}voiceเสียงที่โมเดลรองรับ เช่น alloy
"alloy"formatรูปแบบเอาต์พุตที่โมเดลรองรับ เช่น wav การสตรีมมักใช้ pcm16 ทั้งนี้ขึ้นอยู่กับการรองรับของโมเดล
"wav"pluginsอาร์เรย์ปลั๊กอิน (เช่น {id:"web"} เพื่อเปิดค้นหาเว็บ) รองรับเฉพาะบางเส้นทางโมเดล; :online เปิดค้นหาเว็บบนเส้นทางที่รองรับ การค้นหาผ่าน plugins, :online หรือ web_search_options อาจมีค่าบริการเพิ่มเติมจาก upstream โดยคิดกับคีย์ที่ใช้ในคำขอ: คีย์แพลตฟอร์มของ BazaarLink หรือคีย์ BYOK ของคุณ