คู่มือการเชื่อมต่อ Fortune API

วิธีเชื่อมต่อ โมเดลที่รองรับ ข้อกำหนดคำขอ กฎการคิดเครดิต และตัวอย่างการเรียกใช้สำหรับ Fortune API ของ YlanAI
มี.ค. 25, 2026

หน้านี้อธิบายรูปแบบการเชื่อมต่อมาตรฐานของ Fortune API จาก YlanAI

อินเทอร์เฟซปัจจุบันเป็นไปตามโปรโตคอลที่เข้ากันได้กับ OpenAI และเหมาะสำหรับไคลเอนต์ที่ใช้ chat/completions และ completions

1. ข้อมูลการเชื่อมต่อ

ที่อยู่ วิธีเรียก และ Standard Endpoints
รายการรายละเอียด
Base URL ที่แนะนำhttps://ylan.ai/api/openai
Base URL เพื่อความเข้ากันได้https://ylan.ai/api/openai/v1
วิธีเรียกหลักPOST
รายการโมเดลGET /models
รายละเอียดโมเดลGET /models/{id}
ปลายทางสนทนาPOST /chat/completions
ปลายทาง completions แบบเดิมPOST /completions

สำหรับไคลเอนต์ภายนอกที่ต่อท้าย /v1 โดยอัตโนมัติ แนะนำให้ตั้งค่า Base URL เป็น https://ylan.ai/api/openai

การยืนยันตัวตน

ทุกคำขอต้องส่ง header ต่อไปนี้:

Authorization: Bearer sk-...

API Key ผูกกับบัญชีผู้ใช้ปัจจุบัน และการใช้งานจะถูกหักจากเครดิตแบบชำระเงินของบัญชีนั้น

สำหรับไคลเอนต์ภายนอกที่ไม่สามารถตั้งค่า Authorization ได้ ปัจจุบันยังรองรับ api-key: sk-... และ x-api-key: sk-...

การสนทนาแบบหลายรอบ

รองรับการสนทนาแบบหลายรอบ โดยผู้เรียกสามารถส่งประวัติข้อความผ่านอาร์เรย์ messages เพื่อรักษาบริบทต่อเนื่อง

2. ขอบเขตบริการและโมเดล

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

ให้ยึดผลลัพธ์แบบเรียลไทม์จาก GET /models เป็นหลัก รายการโมเดลอาจมีการปรับตามแผนความสามารถของแพลตฟอร์ม

โมเดลรายละเอียด
openai/gpt-5.4เหมาะกับงานวิเคราะห์เชิงลึกที่ต้องการคุณภาพสูง
openai/gpt-5.3-chatเหมาะกับการตีความทั่วไปและการสนทนาแบบหลายรอบ
deepseek/deepseek-v3.2เหมาะกับการวิเคราะห์หลากหลายรูปแบบและการสนทนาแบบหลายรอบ

3. ข้อกำหนดคำขอ

รูปแบบการตอบกลับ
กรณีรูปแบบการตอบกลับ
stream=trueส่ง SSE ที่เข้ากันได้กับ OpenAI โดยใช้ payload แบบ chat.completion.chunk และจบด้วย data: [DONE]
stream=falseส่ง JSON มาตรฐานแบบ chat.completion
POST /completionsส่ง JSON แบบ text_completion หรือ SSE ที่เข้ากันได้กับ OpenAI
Header ของ non-stream ที่สำเร็จส่ง x-ylan-charged-credits และ x-ylan-remaining-paid-credits
พารามิเตอร์คำขอ
พารามิเตอร์ประเภทรายละเอียด
modelstringชื่อโมเดลที่ได้จาก GET /models
messagesarrayอาร์เรย์ข้อความแบบ OpenAI-compatible และต้องมีข้อความ user อย่างน้อย 1 รายการ
promptstringฟิลด์อินพุตแบบเดิมสำหรับ completions ใช้ได้เมื่อไม่ได้ส่ง messages
inputstringฟิลด์อินพุตเพื่อความเข้ากันได้กับไคลเอนต์บางประเภท เมื่อไม่ได้ส่ง messages
streambooleanใช้การตอบกลับแบบสตรีมหรือไม่ ค่าเริ่มต้นคือ false
localestringภาษาของผลลัพธ์ เช่น th, zh, en
topicstringหัวข้อการวิเคราะห์ เช่น wealth_pattern หรือ marriage_status
subject_modestringโหมดการวิเคราะห์ single หรือ pair
methodstringวิธีการวิเคราะห์ที่ระบบปัจจุบันใช้ตีความ
birth_profileobjectข้อมูลวันเวลาเกิดสำหรับการวิเคราะห์บุคคลเดียว
chart_inputobjectข้อมูลดวงแบบโครงสร้างสำหรับกรณีที่มีการเตรียมดวงไว้แล้ว
pair_stateobjectข้อมูลสำหรับการวิเคราะห์คู่
metadataobjectเมตาดาต้าเพิ่มเติม เช่น topic, locale, birthProfile, pairState
ตัวอย่างคำขอแบบสตรีมสำหรับบุคคลเดียว
curl -N https://ylan.ai/api/openai/chat/completions \
  -H 'Authorization: Bearer sk-your-api-key' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-5.4",
    "stream": true,
    "locale": "th",
    "topic": "wealth_pattern",
    "subject_mode": "single",
    "birth_profile": {
      "calendar": "solar",
      "birthDate": "1992-08-15",
      "birthTime": "09:30",
      "gender": "male",
      "location": "Shenzhen"
    },
    "messages": [
      {
        "role": "user",
        "content": "ช่วยวิเคราะห์แนวโน้มการเงินของฉันในปีนี้"
      }
    ]
  }'
ตัวอย่างคำขอแบบสตรีมสำหรับการวิเคราะห์คู่
curl -N https://ylan.ai/api/openai/chat/completions \
  -H 'Authorization: Bearer sk-your-api-key' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "deepseek/deepseek-v3.2",
    "stream": true,
    "locale": "th",
    "topic": "marriage_status",
    "subject_mode": "pair",
    "pair_state": {
      "subjects": [
        {
          "birthProfile": {
            "calendar": "solar",
            "birthDate": "1992-08-15",
            "birthTime": "09:30",
            "gender": "male",
            "location": "Shenzhen"
          }
        },
        {
          "birthProfile": {
            "calendar": "solar",
            "birthDate": "1995-03-08",
            "birthTime": "22:15",
            "gender": "female",
            "location": "Guangzhou"
          }
        }
      ]
    },
    "messages": [
      {
        "role": "user",
        "content": "ช่วยวิเคราะห์ทิศทางระยะยาวของความสัมพันธ์นี้และประเด็นสำคัญด้านความเข้ากันได้"
      }
    ]
  }'

4. การคิดเครดิตและการจัดการข้อผิดพลาด

กฎการคิดเครดิตและจุดยืนยันการหัก
กรณีกฎ
การวิเคราะห์บุคคลเดียว100 เครดิตต่อคำตอบที่สำเร็จ
การวิเคราะห์คู่200 เครดิตต่อคำตอบที่สำเร็จ
need_inputไม่คิดเครดิต
ช่วงเครดิตที่ใช้ได้ใช้ได้เฉพาะเครดิตแบบชำระเงิน โบนัสสมัครสมาชิกและเครดิตที่มอบให้ไม่สามารถนำมาใช้ได้
stream=trueยืนยันการหักเมื่อมีเนื้อหาที่มองเห็นได้และใช้ได้ส่งกลับเป็นครั้งแรก
stream=falseยืนยันการหักเมื่อคำตอบสมบูรณ์ถูกส่งกลับสำเร็จ
หมดเวลา ล้มเหลว หรือไม่มีเนื้อหาการหักจะไม่ถูกยืนยันหรือคืนกลับตามกฎปัจจุบัน
รหัสข้อผิดพลาดที่พบบ่อย
HTTP StatusError Codeรายละเอียด
400invalid_messagesไม่มีข้อความที่ถูกต้องหรือไม่มีข้อความ user
400invalid_promptคำขอไม่มีทั้ง messages prompt และ input
400invalid_modelโมเดลที่ร้องขอไม่ได้อยู่ใน allowlist ปัจจุบัน
401invalid_api_keyAPI Key ไม่ถูกต้องหรือไม่ได้ส่งมา
402insufficient_paid_creditsเครดิตแบบชำระเงินไม่เพียงพอ
500request_timeoutคำขอหมดเวลา
500request_failedคำขอล้มเหลว
500internal_errorข้อผิดพลาดภายในเซิร์ฟเวอร์
502empty_responseโมเดลไม่ส่งคืนเนื้อหาที่มองเห็นได้และใช้ได้
การตอบกลับแบบ need_input

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