Quickstart: Host Your First SCORM Course in 30 Seconds
AllureConnect is SCORM hosting infrastructure for developers and AI tools. Upload a PowerPoint or send JSON — get a hosted, trackable SCORM course.
1. Get Your API Key
Sign up at allureconnect.com and get a sandbox API key instantly — no credit card required.
Your test key starts with ac_test_. When you're ready for production, upgrade and get an ac_live_ key.
2. Create a Course (One API Call)
curl -X POST https://app.allureconnect.com/api/v1/quick-publish \
-H "Authorization: Bearer ac_test_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"title": "Workplace Safety Training",
"slides": [
{
"title": "Introduction",
"content": "Welcome to the workplace safety training course.\n\nBy the end, you will understand:\n- Fire safety procedures\n- Emergency exit locations\n- First aid basics"
},
{
"title": "Fire Safety",
"content": "**Key Points:**\n- Know your nearest exit\n- Stay low in smoke\n- Never use elevators during a fire\n- Call 911 immediately"
},
{
"title": "Summary",
"content": "You have completed the workplace safety training.\n\n*Remember: safety is everyone'\''s responsibility.*"
}
],
"scorm_version": "2004"
}'
Response:
{
"package_id": "pkg_a1b2c3d4e5f6",
"title": "Workplace Safety Training",
"scorm_version": "2004",
"slide_count": 3,
"created_at": "2026-04-07T12:00:00.000Z"
}
3. Using the SDK
npm install @allureconnect/sdk
import { AllureConnect } from '@allureconnect/sdk';
const ac = new AllureConnect('ac_test_your_key_here');
const course = await ac.courses.create({
title: 'Safety Training',
slides: [
{ title: 'Intro', content: 'Welcome to the course.' },
{ title: 'Module 1', content: '- Point A\n- Point B' }
]
});
console.log(course.package_id); // pkg_...
4. Convert a PowerPoint
import fs from 'fs';
const pptx = fs.readFileSync('training.pptx');
const job = await ac.conversions.create({
file: new Blob([pptx]),
filename: 'training.pptx'
});
// For large files, poll until the job completes
let status = job;
while (status.status !== 'completed' && status.status !== 'failed') {
await new Promise((r) => setTimeout(r, 2000));
status = await ac.conversions.get(job.job_id);
}
console.log(status.status); // "completed"
console.log(status.package_id); // "pkg_..."
What's Next?
- MCP Server Setup — Use AllureConnect from Claude
- GPT Actions — Build a SCORM-hosting GPT
- Use Cases — AI + SCORM integration patterns
- Full API Reference
Sandbox vs. Production
| Sandbox (ac_test_) | Production (ac_live_) | |
|---|---|---|
| Credit card | Not required | Required |
| Packages | 3 max | Per plan (25-unlimited) |
| Launches | 25/month | Per plan (5K-unlimited) |
| Output | Watermarked | Clean |
| Expiry | 30 days | None |