Felo API PlatformFelo API Platform

Felo APIs

PPT Task API

PPT তৈরির টাস্ক করুন, থিমের তালিকা দেখুন এবং শেয়ার করা টাস্ক endpoints পোল করুন।

POST/v2/ppts

অথেন্টিকেশন

Bearer API key

কনটেন্ট টাইপ

application/json

রেট সংক্রান্ত নোট

endpoint-ভিত্তিক সীমা প্রযোজ্য হতে পারে।

PPT Task API অ্যাসিঙ্ক্রোনাস PPT তৈরির সক্ষমতা দেয়। আপনি একটি টাস্ক তৈরি করে task_id দিয়ে টাস্ক স্ট্যাটাস পোল করতে পারেন। এছাড়া উপলব্ধ PPT থিম ব্রাউজ করে টাস্ক তৈরির সময় সেগুলো প্রয়োগ করতে পারেন।

এটি একটি অ্যাসিঙ্ক্রোনাস API। শেয়ার করা সাবমিট, পোল ও রিট্রিভ প্যাটার্নের জন্য Async Tasks দেখুন।

প্রমাণীকরণ

সব অনুরোধের Authorization header-এ একটি API Key প্রয়োজন:

Authorization: Bearer YOUR_API_KEY

AI এজেন্টের সাথে ব্যবহার

Agent থেকে স্লাইড তৈরি করতে Skills-এর নির্দিষ্ট উপসেটের বদলে সম্পূর্ণ felo-ai প্যাকেজ ইনস্টল করুন। এর ইনস্টলার গতিশীলভাবে SKILL.md থাকা প্রতিটি প্যাকেজ ডিরেক্টরি আবিষ্কার করে, PPT Skill ও ভবিষ্যতের সংযোজনসহ। আবিষ্কৃত সব Skill আপনার Agent-এর নেটিভ ডিরেক্টরিতে ইনস্টল করুন: Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills বা Hermes Agent ~/.hermes/skills। প্ল্যাটফর্ম-নির্দিষ্ট API key কনফিগারেশন ও যাচাইয়ের জন্য ম্যানুয়াল AI Agent সেটআপ গাইড অনুসরণ করুন।

1. List PPT Themes (থিমের তালিকা)

পেজিনেশন, কীওয়ার্ড সার্চ, ভাষা ও ধরন ফিল্টারসহ উপলব্ধ PPT থিম query করুন।

Endpoint

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

Query প্যারামিটার

প্যারামিটারধরনআবশ্যকবর্ণনা
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[].idstringথিম ID, PPT তৈরির সময় ai_theme_id হিসেবে এটি ব্যবহার করুন
items[].titlestringথিমের শিরোনাম (স্থানীয়কৃত)
items[].subtitlestringথিমের সাবটাইটেল (স্থানীয়কৃত)
items[].descriptionstringথিমের বর্ণনা (স্থানীয়কৃত)

2. PPT টাস্ক তৈরি করুন

Endpoint

POST https://openapi.felo.ai/v2/ppts
Headerআবশ্যকবর্ণনা
Authorizationহ্যাঁBearer YOUR_API_KEY ফরম্যাটে আপনার API Key
Content-Typeহ্যাঁapplication/json বা multipart/form-data

অনুরোধ বডি

প্যারামিটারধরনআবশ্যকবর্ণনা
querystringহ্যাঁPPT তৈরির অনুরোধ prompt
livedoc_short_idstringনাPPT সেশনের সাথে সংযুক্ত করার জন্য বিদ্যমান LiveDoc short ID। বাদ দিলে স্বয়ংক্রিয়ভাবে নতুন LiveDoc তৈরি হয়।
resource_idsarray of stringsনাPPT তৈরির context হিসেবে ব্যবহারের LiveDoc রিসোর্স ID-এর তালিকা
ppt_configobjectনাPPT কনফিগারেশন অপশন
ppt_config.ai_theme_idstringনাList PPT Themes endpoint থেকে থিম ID

উদাহরণ

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"
    }
  }'

আপলোড করা ফাইল থেকে তৈরি করুন

একটি ফাইল আপলোড করে একক অনুরোধে PPT টাস্ক তৈরি করতে multipart/form-data ব্যবহার করুন। প্ল্যাটফর্ম প্রথমে ফাইলটি LiveDoc রিসোর্স হিসেবে আপলোড করে, তারপর এর resource ID PPT টাস্কে পাঠায়।

Partধরনআবশ্যকবর্ণনা
querystringহ্যাঁPPT তৈরির অনুরোধ prompt
filefileহ্যাঁPPT context হিসেবে ব্যবহৃত উৎস ফাইল
stream_protocolstringনাস্ট্রিমিং প্রোটোকল; ডিফল্ট message_center_v1
livedoc_short_idstringনাফাইল গ্রহণ করার জন্য বিদ্যমান LiveDoc। বাদ দিলে নতুন LiveDoc তৈরি হয়।
ppt_configJSONনাJSON অনুরোধ body-র মতো একই গঠনের PPT কনফিগারেশন। এই part 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. টাস্ক স্ট্যাটাস query করুন

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. টাস্কের ঐতিহাসিক তথ্য query করুন

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_idstringটাস্ক ID
task_statusstringবর্তমান টাস্ক স্ট্যাটাস
ppt_biz_idstringPPT বিজনেস ID (ব্যাকএন্ড thread_short_id থেকে ম্যাপ করা)
ppt_urlstringPPT URL, ফরম্যাট: https://felo.ai/slides/{ppt_biz_id}
error_messagestringFAILED / PENDING / EXPIRED / CANCELED-এর জন্য থাকে; ডাউনস্ট্রিম ত্রুটির বিস্তারিত না দিলে খালি স্ট্রিং ""
ai_page_htmlstringটাস্ক AI_PAGE মোডে চললে এবং ডাউনস্ট্রিম historical একটি HTML ফলাফল URL ফেরত দিলে থাকে
live_doc_short_idstringLiveDoc short ID। COMPLETED-এর জন্য এটি ডাউনস্ট্রিম live_doc_short_id থেকে আসে; টার্মিনাল ব্যর্থতার স্ট্যাটাসে উপলব্ধ হলে ফেরত আসে
live_doc_urlstringlive_doc_short_id-এর সংশ্লিষ্ট LiveDoc URL

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 '{}'

একই Bearer API Key দিয়ে প্রতি 2–5 সেকেন্ডে GET https://openapi.felo.ai/v2/ppts/{ppt_business_id}/export পোল করুন। API Key-এর মালিককেই PPT-এর মালিক হতে হবে। উভয় endpoint data.status ফেরত দেয়: NOT_STARTED, PROCESSING, COMPLETED বা FAILED। কেবল COMPLETED-এ download_url ও expires_at থাকে।

স্বাক্ষরিত ডাউনলোড URL ইস্যু হওয়ার 30 মিনিট পরে মেয়াদোত্তীর্ণ হয়। নতুন URL-এর জন্য GET endpoint আবার কল করুন; এটি 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 স্ট্যাটাসবর্ণনা
UNAUTHORIZED401API Key অবৈধ বা প্রত্যাহৃত
PPT_TASK_CREATE_FAILED502টাস্ক তৈরির ডাউনস্ট্রিম কল ব্যর্থ
PPT_TASK_QUERY_FAILED502টাস্ক স্ট্যাটাস query-র ডাউনস্ট্রিম কল ব্যর্থ