curl --request POST \
--url https://www.genviral.io/api/partner/v1/templates/from-slideshow/2ab58bb0-0c39-45c0-a4d5-b6852f9d7fc0 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Converted Winner",
"description": "Built from a high-performing slideshow",
"visibility": "workspace",
"preserve_text": true
}'
{
"ok": true,
"code": 201,
"message": "Template created",
"data": {
"id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"name": "Converted Winner",
"description": "Built from a high-performing slideshow",
"visibility": "workspace",
"preview_url": null,
"use_count": 0,
"last_used_at": null,
"created_at": "2026-02-14T10:05:00.000Z",
"updated_at": "2026-02-14T10:05:00.000Z",
"is_owner": true,
"config": {
"version": 1,
"structure": {
"slides": [
{
"type": "pack",
"id": "11111111-1111-1111-1111-111111111111",
"pinnedImageUrl": null,
"textElements": [
{
"id": "22222222-2222-2222-2222-222222222222",
"content": "Hook text",
"x": 50,
"y": 25,
"fontSize": 48,
"width": 70
}
]
}
]
},
"content": {
"mode": "manual",
"productId": null,
"language": "en",
"slideshowType": "educational"
},
"visuals": {
"packId": null,
"aspectRatio": "4:5",
"textSettings": {
"fontSize": "default",
"preset": "tiktok",
"width": "default"
}
}
}
}
}
Templates
Create Template From Slideshow
Convert an existing slideshow into a reusable template
POST
/
api
/
partner
/
v1
/
templates
/
from-slideshow
/
{slideshowId}
curl --request POST \
--url https://www.genviral.io/api/partner/v1/templates/from-slideshow/2ab58bb0-0c39-45c0-a4d5-b6852f9d7fc0 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Converted Winner",
"description": "Built from a high-performing slideshow",
"visibility": "workspace",
"preserve_text": true
}'
{
"ok": true,
"code": 201,
"message": "Template created",
"data": {
"id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"name": "Converted Winner",
"description": "Built from a high-performing slideshow",
"visibility": "workspace",
"preview_url": null,
"use_count": 0,
"last_used_at": null,
"created_at": "2026-02-14T10:05:00.000Z",
"updated_at": "2026-02-14T10:05:00.000Z",
"is_owner": true,
"config": {
"version": 1,
"structure": {
"slides": [
{
"type": "pack",
"id": "11111111-1111-1111-1111-111111111111",
"pinnedImageUrl": null,
"textElements": [
{
"id": "22222222-2222-2222-2222-222222222222",
"content": "Hook text",
"x": 50,
"y": 25,
"fontSize": 48,
"width": 70
}
]
}
]
},
"content": {
"mode": "manual",
"productId": null,
"language": "en",
"slideshowType": "educational"
},
"visuals": {
"packId": null,
"aspectRatio": "4:5",
"textSettings": {
"fontSize": "default",
"preset": "tiktok",
"width": "default"
}
}
}
}
}
Builds a template from an existing slideshow in key scope.
Path Parameters
string
required
Source slideshow UUID.
Body Parameters
string
Optional template name (
1-100 chars). If omitted, API auto-generates one.string
Optional description (
<=500 chars).string
Optional:
private or workspace. Default: private.boolean
Optional. Default:
true. Controls whether text is kept in converted config.Empty body is valid (
{} behavior). The API will generate a name and apply
defaults.curl --request POST \
--url https://www.genviral.io/api/partner/v1/templates/from-slideshow/2ab58bb0-0c39-45c0-a4d5-b6852f9d7fc0 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Converted Winner",
"description": "Built from a high-performing slideshow",
"visibility": "workspace",
"preserve_text": true
}'
{
"ok": true,
"code": 201,
"message": "Template created",
"data": {
"id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"name": "Converted Winner",
"description": "Built from a high-performing slideshow",
"visibility": "workspace",
"preview_url": null,
"use_count": 0,
"last_used_at": null,
"created_at": "2026-02-14T10:05:00.000Z",
"updated_at": "2026-02-14T10:05:00.000Z",
"is_owner": true,
"config": {
"version": 1,
"structure": {
"slides": [
{
"type": "pack",
"id": "11111111-1111-1111-1111-111111111111",
"pinnedImageUrl": null,
"textElements": [
{
"id": "22222222-2222-2222-2222-222222222222",
"content": "Hook text",
"x": 50,
"y": 25,
"fontSize": 48,
"width": 70
}
]
}
]
},
"content": {
"mode": "manual",
"productId": null,
"language": "en",
"slideshowType": "educational"
},
"visuals": {
"packId": null,
"aspectRatio": "4:5",
"textSettings": {
"fontSize": "default",
"preset": "tiktok",
"width": "default"
}
}
}
}
}
Error Responses
400 missing_slideshow_id- path param missing400 invalid_json- body is not valid JSON422 invalid_payload- schema validation failed404 slideshow_not_found- source slideshow not found in key scope409 template_name_conflict- name already exists for owner422 invalid_template_config- generated/normalized config failed validation401- authentication failed (missing/invalid/revoked token)402 subscription_required- active Creator/Professional/Business plan required403 tier_not_allowed- Scheduler tier cannot use Partner API500 template_create_failed- unexpected conversion failure
