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=10Query Parameters#
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
page | Integer | No | 1 | Page number (must be > 0) |
limit | Integer | No | 10 | Templates per page (max: 40, must be > 0) |
search | String | No | - | Filter templates by name (case-insensitive substring match, server-side) |
tags | String | No | - | Comma-separated list of tags. Returns templates that have all of the specified tags |
embedId | String | No* | - | Embed instance ID (for user-specific filtering) |
embedUserId | String | No* | - | 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>",
},
},
);searchperforms a case-insensitive substring match on the template name.tagsis 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#
| Field | Type | Description |
|---|---|---|
page | Integer | Current page number |
limit | Integer | Number of templates per page |
total | Integer | Total number of templates |
totalPages | Integer | Total number of available pages |
Template Response Fields#
| Field | Type | Description |
|---|---|---|
id | Integer | Unique identifier for the template |
created_at | String | Timestamp when the template was created |
workspace_id | String | ID of the workspace the template belongs to |
user_id | String | ID of the user who created the template |
canvas_width | Number | Width of the template canvas in pixels |
canvas_height | Number | Height of the template canvas in pixels |
updated_at | String | Timestamp when the template was last updated |
name | String | Name of the template |
description | String | Description of the template |
tags | Array | Array of tag strings assigned to the template |
thumbnail_url | String | URL to the template's thumbnail image |
embed_user_id | String | Internal ID of the embed user (null for workspace templates) |
pages_data | Array | Array of pages (for multi-page templates) |
modifications | Array | Array of available modifications for parameters |
Modification Fields#
Each modification object contains:
| Field | Type | Description |
|---|---|---|
key | String | Unique key for the modification. For multi-page templates this is prefixed, e.g. page1@title |
id | String | Same as key |
type | String | Type of modification (text, imageUrl, videoUrl, backgroundColor, fill, color, stroke) |
description | String | Human-readable description, e.g. "Heading — Text content" or "Image URL" when no element name is set |
help_text | String | Same as description |
element_name | String | Layer name of the element in the editor (only present when the element has a name) |
example | String | Default/example value for the field |
page_number | Integer | 1-based page number this modification belongs to |
page_id | String | Stable 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:
| Field | Type | Description |
|---|---|---|
page_id | String | Stable UUID for the page |
name | String | Display name of the page |
thumbnail_url | String | URL 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:
| Header | Description |
|---|---|
RateLimit-Limit | Maximum requests per minute |
RateLimit-Remaining | Remaining requests in the current window |
RateLimit-Reset | Seconds until the rate limit window resets |
Retry-After | Seconds to wait (only on 429 responses) |
Error Responses#
| Code | Description |
|---|---|
| 400 | Invalid page/limit parameters |
| 403 | Missing or invalid API key |
| 403 | No 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