---
title: "Deploy a starter template on an owned node"
method: POST
path: "/api/nodes/{node_id}/app-templates/{template_id}/deploy"
tags: ["nodes"]
---

# Deploy a starter template on an owned node

`POST /api/nodes/{node_id}/app-templates/{template_id}/deploy`

## Request

- Base URL: `https://app.nerdit.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://app.nerdit.ai/api/nodes/{node_id}/app-templates/{template_id}/deploy`
- Auth: none declared

Gate, call, translate, audit: ``node_services.run_action``'s order.

No ``pusher.on_node_apps_changed``: that nudge index and token push are
GitHub's, and a template deploy mints no token and sets no auto-deploy.

## Path parameters

- `template_id` string, required
- `node_id` string, uuid, required

## Request body

- NodeTemplateDeployRequest: The service name to deploy the template as, and deliberately nothing else. Or, to add it to an existing project, ``project_id`` + ``service`` (both or neither) in place of ``name``, as on the GitHub deploy.
  - `name` string, nullable
  - `project_id` string, nullable
  - `service` string, nullable

## Response `201`

Successful Response

- NodeTemplateDeployView: What the deploy created, with the daemon's own ``summary``/``hints``/``next_step``.
  - `operation` ServiceOperationView: Dated operation metadata; arbitrary errors and output never enter this view.
    - `identity` string, nullable
    - `phase` string, nullable
    - `action` string, nullable
    - `started_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable
    - `failure` string, nullable
  - `node_id` string, uuid, required
  - `service_name` string, required
  - `project_id` string, nullable
  - `template_id` string, required
  - `summary` object, nullable, required
  - `hints` string[], required
  - `next_step` GitHubDeployNextStep, required: The daemon's machine-shaped "what now" (``{tool, args, why}``).
    - `tool` string, required
    - `args` object, required
    - `why` string, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Unprocessable Content
- `502`: Bad Gateway

---

[API](https://skmtc.dev/nerdit/apis/nerdit-cloud-web.md) · [All operations](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/llms.txt) · [OpenAPI document](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/revisions/06e3b44b58be?raw)
