---
title: "Deployment Status"
method: POST
path: "/margot/actions/deployment_status"
tags: ["margot"]
---

# Deployment Status

`POST /margot/actions/deployment_status`

## Request

- Base URL: `https://api.nanocorp.so` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nanocorp.so/margot/actions/deployment_status`
- Auth: HTTP bearer

What a visitor of one of the caller's sites gets right now, and why (ungated read).

A diagnosis plus facts, from the computation the agents' ``get_site_status``
tool uses too (:mod:`use_cases.support.deployment`). No ids, no build logs.

## Request body

- MargotActionRequest: Common request body for every Margot action. Identity comes from the request: on a customer ticket Parahelp's tool fills it from the ticket's requester (never from the message text), on a team call the teammate names the founder. The backend resolves `external_id` (our `user.id`) or a unique `email` to the account server-side; it never trusts a company/conglomerate id from the body.
  - `external_id` string, nullable: The founder's NanoCorp user id (external_id on the helpdesk contact).
  - `email` string, nullable: The founder's email. Used as a fallback identity and a cross-check.
  - `company` string, nullable: Optional company name/handle hint, resolved against the caller's own companies.
  - `limit` integer, nullable: Optional row limit for list actions.

## Response `200`

Successful Response

- DeploymentStatusResponse: What a visitor of one of the founder's sites gets right now, and why. No deployment or project ids, no build logs, no command hints.
  - `found` boolean
  - `company` CompanySummary: Customer-safe view of one of the caller's companies.
    - `name` string, required
    - `handle` string, required
    - `status` string, required
    - `custom_domain` string, nullable
    - `custom_domain_verified` boolean
  - `diagnosis` string, nullable: not_provisioned, archived, paused, unknown (the hosting read failed: never a guess), never_deployed, building, stuck (building for more than 30 minutes), failed or live.
  - `visitors_see` string, nullable: 'site', 'placeholder' or 'nothing'.
  - `url` string, nullable: The address that serves the site right now.
  - `latest_deploy_state` string, nullable: State of the latest production deployment: QUEUED, INITIALIZING, BUILDING, READY, ERROR, CANCELED or BLOCKED.
  - `latest_deploy_age_minutes` integer, nullable
  - `serving_last_good_build` boolean: The latest build failed or is building, but an older good build is live.
  - `custom_domain` string, nullable
  - `custom_domain_verified` boolean
  - `custom_domain_misconfigured` boolean, nullable: Only read when a custom domain is set. Null when it could not be read.
  - `site_paused` boolean: The owner turned the Website switch off.
  - `plan_expired` boolean: The site serves, but checkout is closed (plan ended).

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-26** `8a8592d6845d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nanocorp/apis/nanocorp-api/changes/margot/actions/deployment_status/post.md)

---

[API](https://skmtc.dev/nanocorp/apis/nanocorp-api.md) - [All operations](https://skmtc.dev/nanocorp/apis/nanocorp-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nanocorp/apis/nanocorp-api/revisions/291bb76b720b?raw)
