---
title: "POST /v1/apps"
method: POST
path: "/v1/apps"
tags: ["apps"]
---

# POST /v1/apps

`POST /v1/apps`

## Request body

- DeployRequest
  - `coLocateWith` string, nullable
  - `cpus` integer
  - `domain` string, nullable
  - `env` EnvVar[]
    - `key` string, required
    - `value` string, required
  - `health` HealthCheck
    - `intervalSecs` integer
    - `path` string, nullable
    - `port` integer, nullable
    - `retries` integer
    - `timeoutSecs` integer
    - `type` 'http' | 'tcp' | 'exec', required
  - `image` string, required
  - `memoryMb` integer
  - `name` string, required
  - `network` boolean
  - `port` integer
  - `stopGraceSecs` integer
  - `strategy` union
    - object — Replace instances in batches. Each batch: start new → health check → destroy old.
      - `batchSize` integer — Instances to replace per batch (default: 1).
      - `type` 'rolling', required
      - `useHealthCheck` boolean — Wait for health check to pass before destroying old instances.
      - `waitSeconds` integer — Seconds to wait between batches if not using health checks (default: 5).
    - object — Deploy N canary instances first. If healthy, replace the rest. If canaries fail, roll back without touching existing instances.
      - `autoPromote` boolean — Auto-promote after health check passes. If false, requires manual promotion.
      - `canaryCount` integer — Number of canary instances to deploy (default: 1).
      - `type` 'canary', required
    - object — Deploy a complete new set alongside the old. Switch traffic atomically, then destroy old instances.
      - `type` 'blueGreen', required
  - `volume` VolumeMount
    - `mountPath` string, required
    - `name` string, required
    - `sizeGb` integer

## Response `200`

App deployed

- AppInfo
  - `createdAt` string, required
  - `domain` string, nullable
  - `id` string, required
  - `image` string, required
  - `instances` InstanceInfo[], required
    - `generation` integer, required
    - `hostPort` integer, nullable
    - `id` string, required
    - `nodeId` string, required
    - `status` string, required
  - `name` string, required
  - `port` integer, required
  - `replicas` integer, required
  - `status` string, required
  - `updatedAt` string, required

---

[API](https://skmtc.net/smolmachines/apis/smolfleet-api.md) · [All operations](https://skmtc.net/smolmachines/apis/smolfleet-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/smolmachines/smolfleet-api/versions/853ec529472a/schema)
