Get All Studio Templates

Retrieve studio templates from your workspace with pagination


List all studio templates in your workspace with pagination support.

Endpoint#

GET /templates/all#

Returns templates with pagination support.

https://api.orshot.com/v1/studio/templates/all?page=1&limit=10

Query Parameters#

ParameterTypeRequiredDefaultDescription
pageIntegerNo1Page number (must be > 0)
limitIntegerNo10Templates per page (max: 40, must be > 0)
searchStringNo-Filter templates by name (case-insensitive substring match, server-side)
tagsStringNo-Comma-separated list of tags. Returns templates that have all of the specified tags
embedIdStringNo*-Embed instance ID (for user-specific filtering)
embedUserIdStringNo*-User ID to filter templates for a specific user

*Both embedId and embedUserId are required together for user-specific filtering.

Request Example#

await fetch("https://api.orshot.com/v1/studio/templates/all?page=1&limit=10", {
  method: "GET",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer <ORSHOT_API_KEY>",
  },
});

Filtering by Search and Tags#

You can filter templates by name and tags:

// Search by name and filter by tags
await fetch(
  "https://api.orshot.com/v1/studio/templates/all?search=banner&tags=social,marketing&page=1&limit=10",
  {
    method: "GET",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer <ORSHOT_API_KEY>",
    },
  },
);
  • search performs a case-insensitive substring match on the template name.
  • tags is a comma-separated list — only templates that contain all specified tags are returned.

Filtering by Embed User#

To retrieve templates for a specific embed user, pass both embedId and embedUserId:

await fetch(
  "https://api.orshot.com/v1/studio/templates/all?embedId=YOUR_EMBED_ID&embedUserId=user_123&page=1&limit=10",
  {
    method: "GET",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer <ORSHOT_API_KEY>",
    },
  },
);

This returns only templates belonging to the specified user. Without these parameters, the endpoint returns all workspace templates (including user-specific ones).

Response Example#

{
  "data": [
    {
      "id": 123,
      "created_at": "2025-09-10T15:30:45.123Z",
      "workspace_id": "workspace-uuid-456",
      "user_id": "user-uuid-789",
      "canvas_width": 1200,
      "canvas_height": 630,
      "updated_at": "2025-10-15T10:20:30.456Z",
      "name": "Social Media Post",
      "description": "Template for social media posts",
      "tags": ["social", "marketing"],
      "thumbnail_url": "https://storage.orshot.com/thumbnails/template-123.png",
      "embed_user_id": null,
      "pages_data": [
        {
          "page_id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
          "name": "Page 1",
          "thumbnail_url": "https://storage.orshot.com/thumbnails/page-1.png"
        }
      ],
      "modifications": [
        {
          "key": "title",
          "id": "title",
          "type": "text",
          "description": "Heading — Text content",
          "help_text": "Heading — Text content",
          "element_name": "Heading",
          "example": "Hello World",
          "page_number": 1,
          "page_id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890"
        }
      ]
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 45,
    "totalPages": 5
  }
}

Pagination Response Fields#

FieldTypeDescription
pageIntegerCurrent page number
limitIntegerNumber of templates per page
totalIntegerTotal number of templates
totalPagesIntegerTotal number of available pages

Template Response Fields#

FieldTypeDescription
idIntegerUnique identifier for the template
created_atStringTimestamp when the template was created
workspace_idStringID of the workspace the template belongs to
user_idStringID of the user who created the template
canvas_widthNumberWidth of the template canvas in pixels
canvas_heightNumberHeight of the template canvas in pixels
updated_atStringTimestamp when the template was last updated
nameStringName of the template
descriptionStringDescription of the template
tagsArrayArray of tag strings assigned to the template
thumbnail_urlStringURL to the template's thumbnail image
embed_user_idStringInternal ID of the embed user (null for workspace templates)
pages_dataArrayArray of pages (for multi-page templates)
modificationsArrayArray of available modifications for parameters

Modification Fields#

Each modification object contains:

FieldTypeDescription
keyStringUnique key for the modification. For multi-page templates this is prefixed, e.g. page1@title
idStringSame as key
typeStringType of modification (text, imageUrl, videoUrl, backgroundColor, fill, color, stroke)
descriptionStringHuman-readable description, e.g. "Heading — Text content" or "Image URL" when no element name is set
help_textStringSame as description
element_nameStringLayer name of the element in the editor (only present when the element has a name)
exampleStringDefault/example value for the field
page_numberInteger1-based page number this modification belongs to
page_idStringStable UUID of the page this modification belongs to — use this to reliably map modifications to pages after reorder

Page Fields#

Each entry in pages_data contains:

FieldTypeDescription
page_idStringStable UUID for the page
nameStringDisplay name of the page
thumbnail_urlStringURL to the thumbnail image of the page

Rate Limits#

This endpoint is rate limited to 20 requests per minute per API key. Rate limit headers are included in every response:

HeaderDescription
RateLimit-LimitMaximum requests per minute
RateLimit-RemainingRemaining requests in the current window
RateLimit-ResetSeconds until the rate limit window resets
Retry-AfterSeconds to wait (only on 429 responses)

Error Responses#

CodeDescription
400Invalid page/limit parameters
403Missing or invalid API key
403No studio templates found in workspace

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
  • 60 free renders — no credit card required