Encelade API Docs

Quick Start

Make your first API call in under 5 minutes.

This guide walks you through creating an API token and generating your first presentation.

Create an API token

Navigate to your workspace settings and create an API token. Select the scopes you need:

  • project:read / project:write / project:delete — manage projects
  • project:plan / project:generate — AI generation
  • session:read / session:write — track generation progress
  • webhook:read / webhook:write — manage webhooks

Copy your token immediately — it will only be shown once.

Make your first request

List your projects to verify your token works:

curl -X GET https://your-instance.com/api/public/v1/projects \
  -H "x-api-key: YOUR_API_TOKEN"
const res = await fetch("https://your-instance.com/api/public/v1/projects", {
  headers: { "x-api-key": "YOUR_API_TOKEN" },
});
const data = await res.json();
console.log(data);
import requests

res = requests.get(
"https://your-instance.com/api/public/v1/projects",
headers={"x-api-key": "YOUR_API_TOKEN"},
)
print(res.json())

Generate a presentation

Use the combined generate endpoint for a single-call flow:

curl -X POST https://your-instance.com/api/public/v1/projects/generate \
  -H "x-api-key: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "outlineHints": ["Q3 Revenue Growth", "Market Expansion", "Product Roadmap"],
    "topic": "Q3 Business Review"
  }'
const res = await fetch(
  "https://your-instance.com/api/public/v1/projects/generate",
  {
    method: "POST",
    headers: {
      "x-api-key": "YOUR_API_TOKEN",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      outlineHints: ["Q3 Revenue Growth", "Market Expansion", "Product Roadmap"],
      topic: "Q3 Business Review",
    }),
  }
);
const { sessionId } = await res.json();
console.log("Session:", sessionId);
import requests

res = requests.post(
"https://your-instance.com/api/public/v1/projects/generate",
headers={
"x-api-key": "YOUR_API_TOKEN",
"Content-Type": "application/json",
},
json={
"outlineHints": ["Q3 Revenue Growth", "Market Expansion", "Product Roadmap"],
"topic": "Q3 Business Review",
},
)
data = res.json()
print("Session:", data["sessionId"])

This returns a 202 response with a sessionId. Poll the session to track progress:

curl -X GET https://your-instance.com/api/public/v1/sessions/SESSION_ID \
  -H "x-api-key: YOUR_API_TOKEN"

When the session phase reaches "done", the response includes a link to the generated project.

Next steps