Templated Render API

Generates an image, PDF, or video from a template by overriding layer content, with synchronous or asynchronous rendering, batch templates, custom dimensions, transparent backgrounds, multi-page merging, and webhook callbacks.

OpenAPI Specification

templated-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Templated API
  description: >-
    REST API for automated image, video, and PDF generation from reusable
    templates. Render templates by overriding layer content, synchronously
    or asynchronously, and retrieve templates and renders.
  termsOfService: https://templated.io/terms/
  contact:
    name: Templated Support
    url: https://templated.io/
  version: '1.0'
servers:
  - url: https://api.templated.io/v1
paths:
  /render:
    post:
      operationId: createRender
      tags:
        - Renders
      summary: Create a render
      description: >-
        Generates an image, PDF, or video from a template by applying layer
        overrides. Renders are synchronous by default (around 2 seconds);
        set async to true to render in the background and receive a webhook
        callback on completion.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRenderRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Render'
        '401':
          description: Unauthorized
        '422':
          description: Unprocessable Entity
  /render/{id}:
    get:
      operationId: getRender
      tags:
        - Renders
      summary: Retrieve a render
      description: Retrieves a single Render object referenced by its unique ID.
      parameters:
        - name: id
          in: path
          required: true
          description: The unique ID of the render.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Render'
        '401':
          description: Unauthorized
        '404':
          description: Not Found
    delete:
      operationId: deleteRender
      tags:
        - Renders
      summary: Delete a render
      description: Deletes a Render object referenced by its unique ID.
      parameters:
        - name: id
          in: path
          required: true
          description: The unique ID of the render.
          schema:
            type: string
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
  /renders:
    get:
      operationId: listRenders
      tags:
        - Renders
      summary: List all renders
      description: Lists Render objects in the account with pagination.
      parameters:
        - name: page
          in: query
          description: Pagination page number.
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          description: Number of results per page.
          schema:
            type: integer
            default: 25
        - name: externalId
          in: query
          description: Filter renders by external ID.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Render'
        '401':
          description: Unauthorized
  /templates:
    get:
      operationId: listTemplates
      tags:
        - Templates
      summary: List all templates
      description: Lists Template objects in the account with search, filtering, and pagination.
      parameters:
        - name: query
          in: query
          description: Search templates by name.
          schema:
            type: string
        - name: page
          in: query
          description: Pagination page number.
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          description: Number of results per page.
          schema:
            type: integer
            default: 25
        - name: width
          in: query
          description: Filter by template width.
          schema:
            type: integer
        - name: height
          in: query
          description: Filter by template height.
          schema:
            type: integer
        - name: tags
          in: query
          description: Filter by comma-separated tags.
          schema:
            type: string
        - name: externalId
          in: query
          description: Filter by external ID.
          schema:
            type: string
        - name: includeLayers
          in: query
          description: Include template layers in the response.
          schema:
            type: boolean
            default: false
        - name: includePages
          in: query
          description: Include template pages and layers in the response.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Template'
        '401':
          description: Unauthorized
  /template/{id}:
    get:
      operationId: getTemplate
      tags:
        - Templates
      summary: Retrieve a template
      description: Retrieves a single Template object referenced by its unique ID.
      parameters:
        - name: id
          in: path
          required: true
          description: The unique ID of the template.
          schema:
            type: string
        - name: includeLayers
          in: query
          description: Include template layers in the response.
          schema:
            type: boolean
            default: false
        - name: includePages
          in: query
          description: Include template pages and layers in the response.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Template'
        '401':
          description: Unauthorized
        '404':
          description: Not Found
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        The API key must be included in all requests in the Authorization
        header as a Bearer token. Obtain an API key from the account
        dashboard at app.templated.io.
  schemas:
    CreateRenderRequest:
      type: object
      properties:
        template:
          type: string
          description: ID of the template to render. Required unless templates is provided.
        templates:
          type: array
          description: Array of template IDs for batch rendering. Overrides template when present.
          items:
            type: string
        layers:
          type: object
          description: Layer modifications to apply, keyed by layer name.
          additionalProperties: true
        pages:
          type: array
          description: Page-specific layer modifications for multi-page templates.
          items:
            type: object
            additionalProperties: true
        format:
          type: string
          description: Output format.
          enum:
            - jpg
            - png
            - webp
            - pdf
            - mp4
            - html
          default: jpg
        transparent:
          type: boolean
          description: Make the PNG background transparent.
          default: false
        width:
          type: integer
          description: Custom output width in pixels (100-5000).
        height:
          type: integer
          description: Custom output height in pixels (100-5000).
        duration:
          type: integer
          description: Video duration in milliseconds (max 90000).
        fps:
          type: integer
          description: Frames per second for video output (1-60).
        merge:
          type: boolean
          description: Merge multi-page renders into a single PDF.
        zip:
          type: boolean
          description: Bundle multiple renders into a ZIP archive.
        name:
          type: string
          description: Custom name for the render.
        external_id:
          type: string
          description: External identifier to associate the render with an entity in your system.
        async:
          type: boolean
          description: Render asynchronously in the background instead of synchronously.
          default: false
        webhook_url:
          type: string
          description: URL the full Render object is POSTed to when an async render completes.
      required:
        - template
    Render:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the render.
        status:
          type: string
          description: Processing state of the render.
          enum:
            - PENDING
            - COMPLETED
            - FAILED
        url:
          type: string
          description: URL where the rendered output is stored.
        width:
          type: integer
          description: Output width in pixels.
        height:
          type: integer
          description: Output height in pixels.
        format:
          type: string
          description: Output file format.
        templateId:
          type: string
          description: ID of the source template.
        templateName:
          type: string
          description: Name of the source template.
        name:
          type: string
          description: User-assigned name for the render.
        externalId:
          type: string
          description: Associated external identifier.
        createdAt:
          type: string
          description: Timestamp of render creation.
    Template:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the template.
        name:
          type: string
          description: Name of the template.
        width:
          type: integer
          description: Template width in pixels.
        height:
          type: integer
          description: Template height in pixels.
        background:
          type: string
          description: Background color value (e.g. "#ffffff" or "rgb(255, 255, 255)").
        thumbnail:
          type: string
          description: URL of the template thumbnail.
        layers:
          type: array
          description: Template layers, included when includeLayers is true.
          items:
            type: object
            additionalProperties: true
        pages:
          type: array
          description: Template pages and their layers, included when includePages is true.
          items:
            type: object
            additionalProperties: true
        createdAt:
          type: string
          description: Timestamp of template creation.
security:
  - bearerAuth: []