curl --request PATCH \
--url https://www.genviral.io/api/partner/v1/templates/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Hooks Template v2",
"description": null,
"visibility": "workspace"
}'
{
"ok": true,
"code": 200,
"message": "Template updated",
"data": {
"id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"name": "Hooks Template v2",
"description": null,
"visibility": "workspace",
"preview_url": null,
"use_count": 12,
"last_used_at": "2026-02-14T09:11:00.000Z",
"created_at": "2026-02-12T15:00:00.000Z",
"updated_at": "2026-02-14T10:00: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
Update Template
Update mutable template fields
PATCH
/
api
/
partner
/
v1
/
templates
/
{templateId}
curl --request PATCH \
--url https://www.genviral.io/api/partner/v1/templates/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Hooks Template v2",
"description": null,
"visibility": "workspace"
}'
{
"ok": true,
"code": 200,
"message": "Template updated",
"data": {
"id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"name": "Hooks Template v2",
"description": null,
"visibility": "workspace",
"preview_url": null,
"use_count": 12,
"last_used_at": "2026-02-14T09:11:00.000Z",
"created_at": "2026-02-12T15:00:00.000Z",
"updated_at": "2026-02-14T10:00: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"
}
}
}
}
}
Updates a template you own and can mutate in the authenticated scope.
Path Parameters
string
required
Template UUID.
Body Parameters
string
Optional new name (
1-100 chars after trimming). Must remain owner-unique.string | null
Optional description update. Pass
null to clear.string
Optional:
private or workspace.object
Optional full config replacement. Must satisfy config v1 schema.
Body cannot be empty. Send at least one updatable field.
visibility: "workspace" requires workspace scope.curl --request PATCH \
--url https://www.genviral.io/api/partner/v1/templates/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Hooks Template v2",
"description": null,
"visibility": "workspace"
}'
{
"ok": true,
"code": 200,
"message": "Template updated",
"data": {
"id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"name": "Hooks Template v2",
"description": null,
"visibility": "workspace",
"preview_url": null,
"use_count": 12,
"last_used_at": "2026-02-14T09:11:00.000Z",
"created_at": "2026-02-12T15:00:00.000Z",
"updated_at": "2026-02-14T10:00: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_template_id- path param missing400 invalid_json- body is not valid JSON422 invalid_payload- schema validation failed or body is empty404 not_found- template not found in readable scope403 forbidden_template- template exists but mutation is not allowed in current scope409 template_name_conflict- name already exists for owner422 invalid_template_config- provided config is invalid401- 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_update_failed- unexpected update failure
