🎯 Endpoint
POST /api/v3/presentation/generate/async
Use this endpoint to schedule presentation generation.
It immediately returns a Task ID which you can later use to check status and download the presentation.
For detailed information about the request format, please see the API Reference.
🔐 Authentication
Before calling the API, log in to Presenton and create an API key from your account page: Presenton Account.
Your key will look like sk-presenton-xxxxx.
Include this key in every request using the Authorization header:
Authorization: Bearer sk-presenton-xxxxx
📤 Example Request
curl -X POST https://api.presenton.ai/api/v3/presentation/generate/async \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-presenton-xxxxx" \
-d '{
"content": "Introduction to Machine Learning",
"n_slides": 5,
"language": "English",
"standard_template": "general",
"export_as": "pptx"
}'
import requests
import json
url = "https://api.presenton.ai/api/v3/presentation/generate/async"
data = {
"content": "Introduction to Machine Learning",
"n_slides": 10,
"language": "English",
"standard_template": "modern",
"export_as": "pptx"
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer sk-presenton-xxxxx"
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
const data = {
content: "Introduction to Machine Learning",
n_slides: 10,
language: "English",
standard_template: "modern",
export_as: "pptx"
};
fetch("https://api.presenton.ai/api/v3/presentation/generate/async", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer sk-presenton-xxxxx"
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(task => {
console.log(task); // contains task id
})
.catch(error => {
console.error("Error:", error);
});
📥 Example Response (Task Creation)
{
"id": "task-9a827c13f4",
"status": "pending",
"message": "Presentation generation task created",
"created_at": "2025-09-14T08:00:00Z",
"updated_at": "2025-09-14T08:00:00Z",
"data": {}
}
id: The unique Task ID (use this to check status)
status: Current state of the task (pending, processing, completed, failed)
message: Human-readable status message
created_at / updated_at: Timestamps
It gives error regarding credits and other things immediately on this request itself.
Check API reference of asynchronous generation for more details on options.
🔄 Checking Task Status
Use the following endpoint to then check the status of your async task:
GET /api/v3/async-task/status/{id}
Replace {id} with the Task ID returned earlier.
Once the task is completed, the response will include the presentation file path and editor link.
Example Status Check
curl -X GET https://api.presenton.ai/api/v3/async-task/status/task-9a827c13f4 \
-H "Authorization: Bearer sk-presenton-xxxxx"
import requests
task_id = "task-9a827c13f4"
url = f"https://api.presenton.ai/api/v3/async-task/status/{task_id}"
headers = {
"Authorization": "Bearer sk-presenton-xxxxx"
}
response = requests.get(url, headers=headers)
print(response.json())
const taskId = "task-9a827c13f4";
fetch(`https://api.presenton.ai/api/v3/async-task/status/${taskId}`, {
method: "GET",
headers: {
"Authorization": "Bearer sk-presenton-xxxxx"
}
})
.then(response => response.json())
.then(status => {
console.log(status);
})
.catch(error => {
console.error("Error:", error);
});
✅ Example Completed Response
{
"id": "task-9a827c13f4",
"status": "completed",
"message": "Presentation generated successfully",
"created_at": "2025-09-14T08:00:00Z",
"updated_at": "2025-09-14T08:01:30Z",
"data": {
"presentation_id": "d3000f96-096c-4768-b67b-e99aed029b57",
"path": "https://api.presenton.ai/static/user_data/d3000f96-096c-4768-b67b-e99aed029b57/Introduction_to_Machine_Learning.pptx",
"edit_path": "https://presenton.ai/presentation?id=d3000f96-096c-4768-b67b-e99aed029b57",
"credits_consumed": 5
}
}
Check API Reference of status check for more details.