Skip to main content
POST
/
api
/
partner
/
v1
/
templates
curl --request POST \
  --url https://www.genviral.io/api/partner/v1/templates \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Hooks Template",
  "description": "2-slide educational format",
  "visibility": "private",
  "config": {
    "version": 1,
    "structure": {
      "slides": [
        {
          "type": "pack",
          "id": "11111111-1111-1111-1111-111111111111",
          "pinnedImageUrl": null,
          "textElements": [
            {
              "id": "22222222-2222-2222-2222-222222222222",
              "content": "Hook",
              "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"
      }
    }
  }
}'
{
  "ok": true,
  "code": 201,
  "message": "Template created",
  "data": {
    "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "name": "Hooks Template",
    "description": "2-slide educational format",
    "visibility": "private",
    "preview_url": null,
    "use_count": 0,
    "last_used_at": null,
    "created_at": "2026-02-14T09:45:00.000Z",
    "updated_at": "2026-02-14T09:45: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",
                "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"
        }
      }
    }
  }
}
Creates a template with a validated config object.

Body Parameters

name
string
required
Template name (1-100 chars after trimming). Must be unique per owner.
description
string
Optional description (max 500 chars).
visibility
string
Optional: private or workspace. Default: private.
config
object
required
Versioned slideshow template config.
visibility: "workspace" requires a workspace-scoped key.
curl --request POST \
  --url https://www.genviral.io/api/partner/v1/templates \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Hooks Template",
  "description": "2-slide educational format",
  "visibility": "private",
  "config": {
    "version": 1,
    "structure": {
      "slides": [
        {
          "type": "pack",
          "id": "11111111-1111-1111-1111-111111111111",
          "pinnedImageUrl": null,
          "textElements": [
            {
              "id": "22222222-2222-2222-2222-222222222222",
              "content": "Hook",
              "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"
      }
    }
  }
}'
{
  "ok": true,
  "code": 201,
  "message": "Template created",
  "data": {
    "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "name": "Hooks Template",
    "description": "2-slide educational format",
    "visibility": "private",
    "preview_url": null,
    "use_count": 0,
    "last_used_at": null,
    "created_at": "2026-02-14T09:45:00.000Z",
    "updated_at": "2026-02-14T09:45: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",
                "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 invalid_json - body is not valid JSON
  • 422 invalid_payload - schema validation failed
  • 409 template_name_conflict - name already exists for owner
  • 422 invalid_template_config - config failed server-side config validation
  • 401 - authentication failed (missing/invalid/revoked token)
  • 402 subscription_required - active Creator/Professional/Business plan required
  • 403 tier_not_allowed - Scheduler tier cannot use Partner API
  • 500 template_create_failed - unexpected creation failure