Read documentation of our API that generates social media carousels & graphics
All endpoints require Bearer token authentication.
This API provides asynchronous image/PDF generation from templates. The workflow consists of:
| Method | Endpoint | Description |
|---|---|---|
| POST | /render |
Submit single graphic job |
| POST | /render?tool=carousel-maker |
Submit carousel job |
| GET | /job/:jobId/status |
Check job status |
| GET | /job/:jobId/result |
Get completed result |
| GET | /queue/stats |
Get queue statistics (no auth required) |
/renderconst response = await fetch("https://generate.contentdrips.com/render", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_TOKEN_HERE"
},
body: JSON.stringify({
template_id: "123456",
output: "png", // or "pdf"
content_update: [
{
type: "textbox",
label: "quote",
value: "Your inspiring quote goes here"
}
/* ... other content ... */
]
})
});
{
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "queued",
"message": "Job has been queued for processing",
"check_status_url": "/job/a1b2c3d4-e5f6-7890-abcd-ef1234567890/status"
}
/job/:jobId/status{
"job_id": "...",
"status": "completed",
"updated_at": "2024-01-15T10:35:00.000Z",
"completedAt": "2024-01-15T10:35:00.000Z"
}
{
"job_id": "...",
"status": "failed",
"error": "Template not found"
}
/job/:jobId/result{
"date": "2024-01-15T10:35:00.000Z",
"type": "normal",
"export_url": "https://your-bucket.s3.amazonaws.com/server/.../abc123-template.png"
}
{
"job_id": "...",
"status": "processing",
"message": "Job not yet completed"
}
// ... (The full JavaScript example for single graphic workflow) ...
async function generateSingleGraphic() {
// Step 1: Submit job
// ...
// Step 2: Poll status until complete
// ...
// Step 3: Get result
// ...
}
generateSingleGraphic();
/render?tool=carousel-makerThe carousel object must contain intro_slide, slides array, and ending_slide.
// ... headers and auth ...
body: JSON.stringify({
template_id: "126149",
output: "png",
carousel: {
intro_slide: { /* ... */ },
slides: [ /* ... */ ],
ending_slide: { /* ... */ }
}
})
// ...
{
"job_id": "b2c3d4e5-f6g7-8901-bcde-fg2345678901",
"status": "queued",
"message": "Job has been queued for processing"
}
Same as single graphic job status check (GET /job/:jobId/status).
{
"date": "...",
"type": "carousel",
"export_url": [
"https://your-bucket.s3.amazonaws.com/.../frame-0.png",
"https://your-bucket.s3.amazonaws.com/.../frame-1.png",
// ... more URLs
]
}
{
"date": "...",
"type": "carousel",
"export_url": "https://your-bucket.s3.amazonaws.com/.../carousel-output.pdf"
}
// ... (The full JavaScript example for carousel workflow) ...
async function generateCarousel() {
// Step 1: Submit carousel job
// ...
// Step 2: Poll status until complete
// ...
// Step 3: Get result
// ...
}
generateCarousel();
"png" | "pdf".{ type, label, value } objects.?tool=carousel-maker). Contains intro_slide, slides array, and ending_slide.| Code | Description |
|---|---|
| 202 | Accepted (job queued successfully) |
| 400 | Bad Request (validation error) |
| 401 | Unauthorized (invalid/missing token) |
| 404 | Not Found (job/template not found) |
| 500 | Internal Server Error |
{
"error": "Error Type",
"message": "Detailed error description"
}
/queue/stats{
"waiting": 5,
"active": 2,
"completed": 1543,
"failed": 12
// ... other stats
}
For additional support or questions about the API, please contact the development team.