Update Template

Update template metadata, dimensions or complete page structure

Updated

PATCH
/v1/studio/templates/{templateId}/update
curl -X PATCH "https://api.orshot.com/v1/studio/templates/<TEMPLATE_ID>/update" \
  -H "Authorization: Bearer <ORSHOT_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "<NAME>",
    "description": "<DESCRIPTION>",
    "tags": [],
    "canvas_width": 1
  }'

Update an existing studio template. You can update metadata (name, description, tags), canvas dimensions, or the full page structure including elements.

Endpoint#

Endpoint
https://api.orshot.com/v1/studio/templates/:templateId/update

Query Parameters#

ParameterTypeRequiredDefaultDescription
includeThumbnailsBooleanNofalseWhen true, the endpoint renders thumbnails synchronously and waits for all uploads before responding. When false or absent, thumbnails are generated asynchronously if visual content changed.

Request Examples#

JavaScript
// Update name, description, and tags
await fetch("https://api.orshot.com/v1/studio/templates/12345/update", {
  method: "PATCH",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer <ORSHOT_API_KEY>",
  },
  body: JSON.stringify({
    name: "Summer Sale Banner - Updated",
    description: "Updated promotional banner for the summer 2026 campaign",
    tags: ["sale", "summer", "promotional"]
  }),
});
JavaScript
// Update canvas dimensions and pages
await fetch("https://api.orshot.com/v1/studio/templates/12345/update?includeThumbnails=true", {
  method: "PATCH",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer <ORSHOT_API_KEY>",
  },
  body: JSON.stringify({
    canvas_width: 1200,
    canvas_height: 628,
    pages_data: [
      {
        id: "page-1-uuid",
        name: "Page 1",
        canvas: { width: 1200, height: 628, backgroundColor: "#ffffff" },
        elements: [
          {
            id: "headline-element",
            type: "text",
            position: { x: 100, y: 200 },
            dimensions: { width: 880, height: 100 },
            content: "Your Headline Here",
            parameterId: "headline",
            parameterizable: true
          }
        ]
      }
    ]
  }),
});
JSON
{
  "success": true,
  "template": {
    "id": 12345,
    "name": "Summer Sale Banner - Updated",
    "description": "Updated promotional banner for the summer 2026 campaign",
    "tags": ["sale", "summer", "promotional"],
    "updated_at": "2026-01-29T12:00:00.000Z"
  }
}
JSON
{
  "success": true,
  "template": {
    "id": 12345,
    "name": "Summer Sale Banner - Updated",
    "description": "Updated promotional banner for the summer 2026 campaign",
    "tags": ["sale", "summer", "promotional"],
    "updated_at": "2026-01-29T12:00:00.000Z",
    "thumbnails": {
      "success": true,
      "pages": [
        {
          "page": 1,
          "page_id": "page-1-uuid",
          "thumbnail_url": "https://storage.orshot.com/cloud/w-50/renders/thumbnails/abc123.png",
          "error": null
        }
      ]
    }
  }
}

Rate Limits#

LimitValue
Requests per minute30

URL Parameters#

ParameterTypeRequiredDescription
templateIdIntegerYesThe ID of the template to update

Request Body Parameters#

At least one of the following parameters must be provided:

ParameterTypeRequiredDescription
nameStringNoNew name for the template (max 255 characters)
descriptionStringNoNew description for the template
tagsArrayNoArray of tag strings to categorize the template (e.g. ["social", "marketing"])
canvas_widthIntegerNoNew canvas width in pixels
canvas_heightIntegerNoNew canvas height in pixels
pages_dataArrayNoFull array of page objects with elements (replaces existing pages)

Element motion and page motion fields (Motion) are validated on write: structural problems (a missing or cyclic after reference, values over the engine caps) fail with a 400 listing each issue, while unknown or misspelled motion params are accepted and reported back in the response warnings array with a suggestion. Problems already present in the stored template never block an unrelated update.

When pages_data is provided, template-level modifications are automatically recalculated from the elements. Pure metadata updates (name, description, tags) do not trigger thumbnail regeneration.

Pages may include audio tracks, generated narration, ambient audio, subtitles, waveform elements, and a saved video duration. Generated narration and ambient audio are resolved when the template is saved. See Template Anatomy for the complete schema.

Response Fields#

FieldTypeDescription
successBooleanWhether the update was successful
templateObjectUpdated template information
template.idIntegerTemplate ID
template.nameStringUpdated template name
template.descriptionStringUpdated template description
template.tagsArrayUpdated tags array
template.updated_atStringISO 8601 timestamp of the update
warningsArrayNon-blocking authoring warnings (e.g. an unknown motion param with a suggested fix). Present only when there is something to fix
template.thumbnailsObjectOnly present when ?includeThumbnails=true. See the Thumbnails Object Structure section

Thumbnails Object Structure#

When you pass ?includeThumbnails=true and the update includes visual changes (pages_data, canvas_width, or canvas_height), the response includes a thumbnails object:

FieldTypeDescription
successBooleantrue if at least one page rendered successfully
pages[].pageInteger1-based page number
pages[].page_idStringStable UUID of the page
pages[].thumbnail_urlString|nullPublic URL of the uploaded thumbnail PNG. null if this specific page failed
pages[].errorString|nullError message if this page failed. null on success

Error Responses#

Status CodeErrorDescription
400At least one field requiredNeither name nor description provided
400name must be non-empty stringEmpty or invalid name provided
400name must be 255 characters or lessName exceeds maximum length
400description must be a stringInvalid description type
403Access ForbiddenInvalid API key or template not in workspace
404Template not foundTemplate ID doesn't exist
429Rate limit exceededToo many requests (max 30/min)
500Internal server errorServer-side error

Cache Invalidation#

When the template is updated:

  1. Template render cache is automatically invalidated
  2. Dynamic URL cache for the template is cleared

Use Cases#

  • Rename templates after generation or import
  • Update descriptions for better organization
  • Tag templates for filtering and categorization
  • Update canvas dimensions when resizing templates
  • Replace page structure with updated elements and layouts
  • Batch rename templates via programmatic naming conventions
Was this page helpful?

Ready to automate?

Start rendering images, PDFs and videos from your templates in under 2 minutes. Free plan, no credit card.

Get your API key
  • Image, PDF and video generation via API
  • Visual editor with AI and smart layouts
  • Zapier, Make, MCP and 50+ integrations
  • White-label embed for your own app
  • 30 free credits — no credit card required