---
title: "Publish Template Version Route"
method: POST
path: "/templates"
---

# Publish Template Version Route

`POST /templates`

## Request

- Base URL: `https://api.goodeye.dev/v1`
- URL: `https://api.goodeye.dev/v1/templates`
- Auth: none declared

Publish a skill as a new template version.

Bundle a ``demo/README.md`` writeup with images referenced by relative path
inside ``demo/`` to render a visual demo on the public template page.

Publishing makes the template's verifier definitions public: anyone who
views the template (including anonymous readers) can read each verifier's
criterion and calibration examples. Publishing is hard-blocked
(``SafetyVerificationFailed``) if a verifier definition contains a secret or
credential, and flagged if it appears to contain private data. When the
template references verifiers, the response includes a
``verifier_exposure_notice`` restating this.

``SafetyVerificationFailed`` (422) and ``SafetyVerificationRuntimeError``
(503) propagate to the app-level ``GoodeyeError`` handler which
serializes them via ``to_wire``.

## Request body

- PublishTemplateVersionInput: Input for ``publish_template_version``.
  - `skill_id` string, required: Skill UUID (string) or slug (same as the skill's ``name``).
  - `release_notes` string, nullable

## Response `201`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/goodeye/apis/goodeye-api.md) · [All operations](https://skmtc.dev/goodeye/apis/goodeye-api/llms.txt) · [OpenAPI document](https://skmtc.dev/goodeye/apis/goodeye-api/revisions/547cb8bb6ede?raw)
