---
title: "Check whether an app can use zero-downtime redeploys, and why not"
method: GET
path: "/platform/deployments/{id}/zero-downtime"
tags: ["Platform"]
---

# Check whether an app can use zero-downtime redeploys, and why not

`GET /platform/deployments/{id}/zero-downtime`

## Request

- Base URL: `https://api.imprezahost.com/v1`
- URL: `https://api.imprezahost.com/v1/platform/deployments/{id}/zero-downtime`
- Auth: API key in header `X-API-Key` and API key in header `X-API-Secret`

Requires read scope and current ownership; another account's app is 404.
Works for custom and catalog apps. Returns the same answer as
impreza_get_zero_downtime and the My Apps card. eligible is true only when
no reason applies. Each reason has a stable code, a scope, an English
message and a remedy. App-scope reasons (catalog_app, preview, tor_egress,
sandbox, no_proxy_route, compose_unreadable, multiple_services,
container_name, network_mode, not_on_proxy_network, fixed_host_port,
writable_volume) make POST /platform/deployments/custom/{id}/zero-downtime
refuse the opt-in with 422 and the same reasons in error.details.reasons.
Agent-scope reasons (agent_unknown, agent_unsupported) do not: the setting
is saved and redeploys run normally until the agent supports ready-swap-v1
(agent 0.6.27 or newer). A Compose file that cannot be
read is a reason, never eligible. Codes are only ever added.

## Response `200`

Eligibility, every reason, the saved setting and the last outcome

- object
  - `success` boolean
  - `data` object
    - `deployment_id` string, required
    - `app_kind` 'custom' | 'catalog', required
    - `zero_downtime` object, required
      - `enabled` boolean, required
      - `policy` object, nullable, required
        - `path` string
        - `status_min` integer
        - `status_max` integer
        - `timeout_seconds` integer
        - `drain_seconds` integer
      - `eligible` boolean, required
      - `can_opt_in` boolean, required
      - `reasons` object[], required
        - `code` 'catalog_app' | 'preview' | 'tor_egress' | 'sandbox' | 'no_proxy_route' | 'compose_unreadable' | 'multiple_services' | 'container_name' | 'network_mode' | 'not_on_proxy_network' | 'fixed_host_port' | 'writable_volume' | 'agent_unknown' | 'agent_unsupported', required
        - `scope` 'app' | 'agent', required
        - `message` string, required
        - `remedy` string, required
      - `ineligible_reason` string, nullable, required
      - `agent_supported` boolean, required
      - `minimum_agent_version` string, required
      - `minimum_agent_released` boolean, required
      - `last` object, nullable, required
        - `outcome` string
        - `phase` string
        - `reason` string
  - `meta` Meta
    - `request_id` string
    - `timestamp` string, date-time

## Other responses

- `401`: Invalid or missing API credentials
- `403`: IP not whitelisted or resource not owned
- `404`: Resource not found

---

[API](https://skmtc.dev/imprezahost/apis/impreza-host-public-api.md) · [All operations](https://skmtc.dev/imprezahost/apis/impreza-host-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/imprezahost/apis/impreza-host-public-api/revisions/db86511f604f?raw)
