---
title: "Create a new template"
method: POST
path: "/templates"
tags: ["templates"]
---

# Create a new template

`POST /templates`

Create a new template.

## Request body

- TemplateCreateInput
  - `category` 'NVIDIA' | 'AMD' | 'CPU' — The compute category of the resource defined by this template.
  - `containerDiskInGb` integer — The amount of disk space in GB to allocate for the container.
  - `containerRegistryAuthId` string — The unique string representing the container auth object needed for a private image.
  - `dockerEntrypoint` string[] — If specified, overrides the ENTRYPOINT for the Docker image run on the Pods using this template. If [], uses the ENTRYPOINT defined in the DockerFile.
  - `dockerStartCmd` string[] — If specified, overrides the start CMD for the Docker image run on the Pods using this template. If [], uses the start CMD defined in the DockerFile.
  - `env` object
  - `imageName` string, required — Docker image name.
  - `isPublic` boolean — If this is a Pod template, specifies whether the template is visible to other Runpod users.
  - `isServerless` boolean — Whether the template specifies a Serverless worker or a Pod.
  - `name` string, required — Template name.
  - `ports` string[] — A list of ports exposed on the created Pod. Each port is formatted as [port number]/[protocol]. Protocol can be either http or tcp.
  - `readme` string — README content in markdown format.
  - `volumeInGb` integer — The amount of disk space, in gigabytes (GB), to allocate on the Pods deployed with this template.
  - `volumeMountPath` string — If a volume is attached to a Pod deployed with this template, the absolute path where the volume will be mounted in the filesystem.

## Response `200`

Successful operation.

- Template
  - `category` string — The category of the template. The category can be used to filter templates in the Runpod UI. Current categories are NVIDIA, AMD, and CPU.
  - `containerDiskInGb` integer — The amount of disk space, in gigabytes (GB), to allocate on the container disk for a Pod or worker. The data on the container disk is wiped when the Pod or worker restarts. To persist data across restarts, set volumeInGb to configure the local network volume.
  - `containerRegistryAuthId` string
  - `dockerEntrypoint` string[] — If specified, overrides the ENTRYPOINT for the Docker image run on a Pod or worker. If [], uses the ENTRYPOINT defined in the image.
  - `dockerStartCmd` string[] — If specified, overrides the start CMD for the Docker image run on a Pod or worker. If [], uses the start CMD defined in the image.
  - `earned` number — The amount of Runpod credits earned by the creator of a template by all Pods or workers created from the template.
  - `env` object
  - `id` string — A unique string identifying a template.
  - `imageName` string — The image tag for the container run on Pods or workers created from a template.
  - `isPublic` boolean — Set to true if a template is public and can be used by any Runpod user. Set to false if a template is private and can only be used by the creator.
  - `isRunpod` boolean — If true, a template is an official template managed by Runpod.
  - `isServerless` boolean — If true, instances created from a template are Serverless workers. If false, instances created from a template are Pods.
  - `name` string — A user-defined name for a template. The name needs to be unique.
  - `ports` string[] — A list of ports exposed on a Pod or worker. Each port is formatted as [port number]/[protocol]. Protocol can be either http or tcp.
  - `readme` string — A string of markdown-formatted text that describes a template. The readme is displayed in the Runpod UI when a user selects the template.
  - `runtimeInMin` integer
  - `volumeInGb` integer — The amount of disk space, in gigabytes (GB), to allocate on the local network volume for a Pod or worker. The data on the local network volume is persisted across restarts. To persist data so that future Pods and workers can access it, create a network volume and set networkVolumeId to attach it to the Pod or worker.
  - `volumeMountPath` string — If a local network volume or network volume is attached to a Pod or worker, the absolute path where the network volume is mounted in the filesystem.

## Other responses

- `400` — Invalid input.

---

[API](https://skmtc.dev/runpod/apis/runpod-api.md) · [All operations](https://skmtc.dev/runpod/apis/runpod-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runpod/runpod-api/revisions/759c8050ed88/schema)
