---
title: "Create"
method: POST
path: "/companies/{company_id}/templates"
tags: ["creatives"]
---

# Create

`POST /companies/{company_id}/templates`

## Request

- Base URL: `https://app.zalster.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zalster.com/companies/{company_id}/templates`
- Auth: none declared

A new template, from a starter or a document; published as its first version, or
with ``publish`` false kept as its draft until a person publishes it (decision 242).

## Path parameters

- `company_id` string, uuid, required: Company id

## Request body

- TemplateCreate
  - `name` string, required
  - `starter` string
  - `document` object, nullable
  - `source_ids` string[], nullable
  - `publish` boolean

## Response `201`

Successful Response

- TemplateOut
  - `id` string, uuid, required
  - `name` string, required
  - `status` string, required
  - `active_version_id` string, uuid, nullable, required
  - `archived_at` string, date-time, nullable
  - `auto_render` boolean
  - `needs_render_since` string, date-time, nullable
  - `all_sources` boolean
  - `source_ids` string[]
  - `draft_saved_at` string, date-time, nullable
  - `editor_url` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `renders_purge_at` string, date-time, nullable, required: When this archived template's renders are deleted; null if active. Derived rather than stored, and derived *here* rather than in the portal, so the countdown the operator reads comes from the same retention setting the sweep obeys. A client that computed it from its own idea of "30 days" would go quietly wrong the day that setting changed.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zalster/apis/zalster-feed-processor.md) - [All operations](https://skmtc.dev/zalster/apis/zalster-feed-processor/llms.txt) - [OpenAPI document](https://skmtc.dev/zalster/apis/zalster-feed-processor/revisions/d0b9dc66ad36?raw)
