---
title: "Get one published template (public)"
method: GET
path: "/api/v1/templates/{templateId}"
tags: ["catalog"]
---

# Get one published template (public)

`GET /api/v1/templates/{templateId}`

## Request

- Base URL: `https://amplerun-api.spiry.org`
- URL: `https://amplerun-api.spiry.org/api/v1/templates/{templateId}`
- Auth: none declared

## Path parameters

- `templateId` string, required

## Response `200`

Template.

- Template: Public template (D-19(b)); mirrors packages/contracts/schemas/template.schema.json, which remains the authority for templates.spec. kind=model requires model_ref and readiness.
  - `id` string, uuid, required
  - `published` boolean, required
  - `template_id` string, required
  - `name` string, required
  - `template_version` string, required
  - `image_digest` string, required
  - `launch_profile_version` string, required
  - `kind` 'model' | 'classical' | 'custom', required
  - `engine` 'vllm' | 'llamacpp' | 'comfyui' | 'faster-whisper' | 'pytorch' | 'jupyter' | 'ollama' | 'oci', required
  - `model_ref` object
    - `hf_repo` string, required
    - `revision` string, required
    - `files` object[], required
      - `name` string, required
      - `sha256` string, required
      - `size_bytes` string, required: Unsigned base-10 integer as string; never a float.
  - `quantization` string
  - `vram_fit` object, required
    - `min_vram_bytes` string, required: Unsigned base-10 integer as string; never a float.
    - `est_weights_bytes` string, required: Unsigned base-10 integer as string; never a float.
    - `est_kv_bytes_per_1k_tokens` string, required: Unsigned base-10 integer as string; never a float.
  - `readiness` object
    - `http_path` string, required
    - `expect_status` integer, required
  - `exposes` object[], required
    - `name` string, required
    - `port` integer, required
    - `protocol` 'http' | 'ssh' | 'tcp', required
  - `env` object, required
  - `min_gpu_count` integer, required
  - `required_runtime` 'cuda' | 'rocm-hip' | 'level-zero' | 'opencl' | 'xpu', required
  - `setup_notes` string, required
  - `runtimes` object: Additive. One template, many backends: the same weights and API contract per backend. tier container is an OCI image; tier inference is the signed Tier B runtime artifact (<source>@sha256:<hex>). The control plane picks the machine's runtime by preference (cuda > rocm > sycl > vulkan > metal) and pins its digest in the quote and lease.
    - `cuda` TemplateRuntime
      - `tier` 'container' | 'inference', required
      - `image_digest` string, required
    - `rocm` TemplateRuntime
      - `tier` 'container' | 'inference', required
      - `image_digest` string, required
    - `sycl` TemplateRuntime
      - `tier` 'container' | 'inference', required
      - `image_digest` string, required
    - `vulkan` TemplateRuntime
      - `tier` 'container' | 'inference', required
      - `image_digest` string, required
    - `metal` TemplateRuntime
      - `tier` 'container' | 'inference', required
      - `image_digest` string, required
  - `backends` string[]: Additive. Backends with a built runtime, in preference order ("Works on" filter). Spec compatibility, not a hardware test.
  - `works_on` string[]: Additive. Hardware vendors those backends cover. Spec compatibility only; a hardware report is what says "tested on".

## Other responses

- `default`: Error envelope. 401 unauthenticated, 403/404 forbidden, 409 conflict, 422 invalid input, 429 rate limited (code UNAVAILABLE, retryable:true, no Retry-After header), 503 unavailable money/provider state with retryable:true.

---

[API](https://skmtc.dev/amplerun/apis/amplerun-business-api.md) · [All operations](https://skmtc.dev/amplerun/apis/amplerun-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/amplerun/apis/amplerun-business-api/revisions/40944687fa52?raw)
