Felo API PlatformFelo API Platform

Felo APIs

PPT Task API

สร้างงานสร้าง PPT แสดงธีม และสอบถาม endpoint งานที่ใช้ร่วมกัน

POST/v2/ppts

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

Bearer API key

ประเภทเนื้อหา

application/json

หมายเหตุเรื่องข้อจำกัด

อาจมีข้อจำกัดเฉพาะของ endpoint

PPT Task API มอบความสามารถในการสร้าง PPT แบบอะซิงโครนัส คุณสามารถสร้างงานแล้วโพลสถานะงานด้วย task_id ได้ คุณยังเรียกดูธีม PPT ที่มีให้ใช้และนำไปใช้เมื่อสร้างงานได้ด้วย

นี่คือ API แบบอะซิงโครนัส สำหรับรูปแบบการส่งงาน โพล และดึงผลลัพธ์ที่ใช้ร่วมกัน โปรดดู งานอะซิงโครนัส

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

ทุกคำขอต้องมีคีย์ API ใน header Authorization:

Authorization: Bearer YOUR_API_KEY

ใช้กับ AI Agent

หากต้องการสร้างสไลด์จาก Agent ให้ติดตั้งแพ็กเกจ felo-ai ที่ครบถ้วน แทนชุดย่อยของ Skill แบบตายตัว ตัวติดตั้งจะค้นหาไดเรกทอรีแพ็กเกจทุกไดเรกทอรีที่มี SKILL.md แบบไดนามิก รวมถึง PPT Skill และส่วนเพิ่มเติมในอนาคต ให้ติดตั้ง Skill ทั้งหมดที่ค้นพบในไดเรกทอรีดั้งเดิมสำหรับ Agent ของคุณ: Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills หรือ Hermes Agent ~/.hermes/skills ปฏิบัติตามคู่มือการตั้งค่า AI Agent ด้วยตนเองสำหรับการกำหนดค่าคีย์ API และการตรวจสอบเฉพาะแพลตฟอร์ม

1. แสดงรายการธีม PPT

สอบถามธีม PPT ที่มีให้ใช้พร้อมการแบ่งหน้า การค้นหาด้วยคำค้น และการกรองตามภาษาและประเภท

Endpoint

GET https://openapi.felo.ai/v2/ppt-themes

พารามิเตอร์คิวรี

พารามิเตอร์ชนิดจำเป็นคำอธิบาย
langstringไม่รหัสภาษาสำหรับเนื้อหาที่แปลแล้ว (เช่น en, zh-Hans) ค่าเริ่มต้น: en
typestringไม่กรองตามประเภทธีม (เช่น default, custom)
keywordstringไม่คำค้นสำหรับค้นหา ตรงกับชื่อธีม
pageintegerไม่หมายเลขหน้า เริ่มจาก 1 ค่าเริ่มต้น: 1
sizeintegerไม่ขนาดหน้า สูงสุด 100 ค่าเริ่มต้น: 20

ตัวอย่าง

curl -X GET 'https://openapi.felo.ai/v2/ppt-themes?lang=en&page=1&size=10' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY'

การตอบกลับที่สำเร็จ (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "total": 8,
    "page": 1,
    "size": 10,
    "items": [
      {
        "id": "43122897-0d3c-4c9e-ae19-20527ad36c04",
        "title": "Inspiration Themes",
        "subtitle": "AI-tailored visual solutions",
        "description": "Style and layout, both crafted by AI from your content in real time"
      }
    ]
  }
}

ฟิลด์ของการตอบกลับธีม

ฟิลด์ชนิดคำอธิบาย
totalintegerจำนวนธีมทั้งหมดที่ตรงกับตัวกรอง
pageintegerหมายเลขหน้าปัจจุบัน
sizeintegerขนาดหน้า
itemsarrayรายการออบเจกต์ธีม
items[].idstringID ธีม ใช้เป็น ai_theme_id เมื่อสร้าง PPT
items[].titlestringชื่อธีม (แปลแล้ว)
items[].subtitlestringคำอธิบายย่อยของธีม (แปลแล้ว)
items[].descriptionstringคำอธิบายธีม (แปลแล้ว)

2. สร้างงาน PPT

Endpoint

POST https://openapi.felo.ai/v2/ppts
Headerจำเป็นคำอธิบาย
Authorizationใช่คีย์ API ของคุณในรูปแบบ Bearer YOUR_API_KEY
Content-Typeใช่application/json หรือ multipart/form-data

เนื้อหาคำขอ

พารามิเตอร์ชนิดจำเป็นคำอธิบาย
querystringใช่พรอมต์คำขอสร้าง PPT
livedoc_short_idstringไม่ID ย่อของ LiveDoc ที่มีอยู่เพื่อเชื่อมกับเซสชัน PPT หากละเว้น ระบบจะสร้าง LiveDoc ใหม่โดยอัตโนมัติ
resource_idsarray of stringsไม่รายการ ID ทรัพยากรของ LiveDoc เพื่อใช้เป็นบริบทสำหรับการสร้าง PPT
ppt_configobjectไม่ตัวเลือกการกำหนดค่า PPT
ppt_config.ai_theme_idstringไม่ID ธีมจาก endpoint แสดงรายการธีม PPT

ตัวอย่าง

curl -X POST 'https://openapi.felo.ai/v2/ppts' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "Felo, 2 pages",
    "ppt_config": {
      "ai_theme_id": "02968979-a69f-42c4-b136-de02c40ab2d7"
    }
  }'

สร้างจากไฟล์ที่อัปโหลด

ใช้ multipart/form-data เพื่ออัปโหลดไฟล์หนึ่งไฟล์และสร้างงาน PPT ในคำขอเดียว แพลตฟอร์มจะอัปโหลดไฟล์เป็นทรัพยากร LiveDoc ก่อน จากนั้นส่ง ID ทรัพยากรไปยังงาน PPT

ส่วนชนิดจำเป็นคำอธิบาย
querystringใช่พรอมต์คำขอสร้าง PPT
filefileใช่ไฟล์ต้นฉบับที่ใช้เป็นบริบทของ PPT
stream_protocolstringไม่โปรโตคอลสตรีม ค่าเริ่มต้น: message_center_v1
livedoc_short_idstringไม่LiveDoc ที่มีอยู่เพื่อรับไฟล์ ระบบจะสร้าง LiveDoc ใหม่เมื่อละเว้น
ppt_configJSONไม่การกำหนดค่า PPT ที่มีโครงสร้างเดียวกับเนื้อหาคำขอแบบ JSON ส่งส่วนนี้เป็น application/json
curl -X POST 'https://openapi.felo.ai/v2/ppts' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -F 'query=Create a 10-page presentation based on this report' \
  -F 'ppt_config={"ai_theme_id":"02968979-a69f-42c4-b136-de02c40ab2d7"};type=application/json' \
  -F '[email protected]'

การตอบกลับใช้สคีมาเดียวกับคำขอแบบ JSON livedoc_short_id ที่ส่งกลับระบุ LiveDoc ที่มีทรัพยากรที่อัปโหลด

การตอบกลับที่สำเร็จ (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "livedoc_short_id": "PvyKouzJirXjFdst4uKRK3",
    "ppt_business_id": "BfLPuQKmChk9SPmyQawxgr",
    "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9"
  }
}

3. สอบถามสถานะงาน

Endpoint

GET https://openapi.felo.ai/v2/tasks/{task_id}/status

ตัวอย่าง

curl -X GET 'https://openapi.felo.ai/v2/tasks/019cad6d-e874-55ef-d577-686344b5a7e9/status' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY'

การตอบกลับที่สำเร็จ (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "status": "RUNNING"
  }
}

4. สอบถามข้อมูลย้อนหลังของงาน

Endpoint

GET https://openapi.felo.ai/v2/tasks/{task_id}/historical

ตัวอย่าง

curl -X GET 'https://openapi.felo.ai/v2/tasks/019cb17e-9e23-3d40-4447-48a651249460/historical' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY'

การตอบกลับ RUNNING

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019cb17e-9e23-3d40-4447-48a651249460",
    "task_status": "RUNNING",
    "ppt_biz_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx"
  }
}

การตอบกลับ COMPLETED

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019cb17e-9e23-3d40-4447-48a651249460",
    "task_status": "COMPLETED",
    "ppt_biz_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx",
    "live_doc_short_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx"
  }
}

การตอบกลับ COMPLETED (AI_PAGE)

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019d7a4d-6ab5-a96d-0f98-43ca434ab621",
    "task_status": "COMPLETED",
    "ppt_biz_id": "9qiLTmT77fA3aVurrMHvRJ",
    "ppt_url": "https://felo.ai/slides/9qiLTmT77fA3aVurrMHvRJ",
    "ai_page_html": "https://felo.ai/ai-page/9qiLTmT77fA3aVurrMHvRJ"
  }
}

การตอบกลับ FAILED / PENDING / EXPIRED / CANCELED

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019cb17e-9e23-3d40-4447-48a651249460",
    "task_status": "FAILED",
    "ppt_biz_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx",
    "error_message": "PPT generation failed",
    "live_doc_short_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx"
  }
}

ฟิลด์ของการตอบกลับย้อนหลัง

ฟิลด์ชนิดคำอธิบาย
task_idstringID งาน
task_statusstringสถานะงานปัจจุบัน
ppt_biz_idstringID ธุรกิจของ PPT (แมปจาก thread_short_id ของแบ็กเอนด์)
ppt_urlstringURL ของ PPT รูปแบบ: https://felo.ai/slides/{ppt_biz_id}
error_messagestringมีสำหรับ FAILED / PENDING / EXPIRED / CANCELED เป็นสตริงว่าง "" เมื่อปลายทางไม่ได้ให้รายละเอียดข้อผิดพลาด
ai_page_htmlstringมีเมื่องานทำงานในโหมด AI_PAGE และข้อมูลย้อนหลังปลายทางส่ง URL ผลลัพธ์แบบ HTML
live_doc_short_idstringID ย่อของ LiveDoc สำหรับ COMPLETED จะมาจาก live_doc_short_id ของปลายทาง สำหรับสถานะล้มเหลวสิ้นสุดจะส่งกลับเมื่อมี
live_doc_urlstringURL ของ LiveDoc ที่ตรงกับ live_doc_short_id

ส่งออก PPTX

หลังจากงานสร้าง PPT ถึง COMPLETED ให้ส่งคำขอส่งออกแบบอะซิงโครนัสโดยใช้ ppt_business_id จากการตอบกลับเมื่อสร้าง (หรือ ppt_biz_id จากการตอบกลับย้อนหลัง):

curl -X POST 'https://openapi.felo.ai/v2/ppts/YOUR_PPT_BUSINESS_ID/export' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{}'

โพล GET https://openapi.felo.ai/v2/ppts/{ppt_business_id}/export ด้วยคีย์ API แบบ Bearer เดียวกันทุก 2–5 วินาที เจ้าของคีย์ API ต้องเป็นเจ้าของ PPT endpoint ทั้งสองส่ง data.status: NOT_STARTED, PROCESSING, COMPLETED หรือ FAILED เฉพาะ COMPLETED เท่านั้นที่รวม download_url และ expires_at

URL ดาวน์โหลดที่ลงนามแล้วจะหมดอายุ 30 นาทีหลังออก ให้เรียก endpoint GET อีกครั้งเพื่อรับ URL ใหม่ ซึ่งจะไม่สร้าง PPTX ใหม่ POST ใช้ application/json และยอมรับ {} การส่ง POST ซ้ำขณะกำลังส่งออกจะไม่เริ่มงานใหม่ การเรียกหลังเสร็จสมบูรณ์จะสร้าง PPTX ใหม่และมีค่าใช้จ่ายเครดิตการส่งออก PPT ตามเดิม เครดิตไม่เพียงพอจะได้ HTTP 402 ขีดจำกัดอัตราเฉพาะ endpoint อาจมีผล ให้ลองใหม่ภายหลังเมื่อได้ HTTP 429 การส่งออกที่ล้มเหลวสามารถส่งได้อีกครั้ง

{
  "status": "ok",
  "message": null,
  "data": {
    "status": "COMPLETED",
    "download_url": "https://example.com/presentation.pptx?signature=...",
    "expires_at": "2026-09-29T10:30:00Z"
  }
}

คำแนะนำการโพล

ใช้ task_id จากการตอบกลับเมื่อสร้างและโพลสถานะทุก 2-5 วินาทีจนกว่าสถานะจะเป็นสถานะสิ้นสุด

ตัวอย่างสถานะที่พบบ่อย:

  • RUNNING: งานยังคงประมวลผล
  • COMPLETED: งานเสร็จสมบูรณ์
  • FAILED / PENDING / EXPIRED / CANCELED: งานถึงสถานะสิ้นสุดพร้อม error_message และ live_doc_url จะถูกส่งกลับเมื่อมี

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

รหัสข้อผิดพลาด

รหัสสถานะ HTTPคำอธิบาย
UNAUTHORIZED401คีย์ API ไม่ถูกต้องหรือถูกเพิกถอน
PPT_TASK_CREATE_FAILED502การเรียกปลายทางเพื่อสร้างงานล้มเหลว
PPT_TASK_QUERY_FAILED502การเรียกปลายทางเพื่อสอบถามสถานะงานล้มเหลว