---
title: "Create template (v1)"
method: POST
path: "/v1/templates"
tags: ["Legacy v1"]
deprecated: true
---

# Create template (v1)

`POST /v1/templates`

## Request

- Base URL: `https://api.pdfs.build`
- URL: `https://api.pdfs.build/v1/templates`
- Auth: HTTP bearer

> **Deprecated.**

Creates a draft whose external id equals its generated internal id. Cannot lock the schema or set a tenant scope; use v2 for those.

## Request body

- CreateTemplateRequestV1
  - `name` string, required
  - `description` string
  - `code` string, required: Template source (`typstCode` accepted as a legacy alias).
  - `schema` object
  - `sampleData` object
  - `pageSettings` object

## Response `201`

The created draft.

- TemplateV1
  - `id` string, required: Internal id.
  - `name` string, required
  - `description` string, nullable
  - `status` 'draft' | 'published', required
  - `createdAt` string, required: UTC, ISO 8601 without a timezone suffix.
  - `updatedAt` string, required: UTC, ISO 8601 without a timezone suffix.
  - `schema` object, nullable
  - `sampleData` object, nullable
  - `baseTemplateId` string, nullable
  - `userId` string, required
  - `organizationId` string, nullable

## Other responses

- `400`: Missing `name` or `code`.
- `401`: Missing, invalid or expired API key.

---

[API](https://skmtc.dev/pdfs/apis/pdfs-build-api.md) · [All operations](https://skmtc.dev/pdfs/apis/pdfs-build-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pdfs/apis/pdfs-build-api/revisions/1c7340b9521d?raw)
