compute

POST /v1/compute/servers/{serverId}/cancel

Retire a server at the provider.

All compute endpoints

Authentication

Send an API key as a bearer token. The key must carry the sites.view permission; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X POST https://api.zinndigital.com/v1/compute/servers/{serverId}/cancel \
  -H "Authorization: Bearer zdk_live_…"

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

**A scheduled retirement, not an immediate deletion, and a client MUST say so.** The machine keeps running until the term already paid for runs out; the provider then powers it down 24 hours later and deletes it after a further six days. The response carries `renews_at`, which is the date that countdown starts from - a "Cancel" button that silently means "in 31 days" is worse than no button at all. The row is deliberately **not** marked terminated: it is still a working machine the customer is entitled to use, and marking it otherwise would strip every control off a server they are still paying for. Requires `sites.view` **and** `sites.delete` - ending a machine is a different order of trust from paying for one.

Parameters

NameTypeRequiredWhat it is
serverId (path)UuidYesThe server's id, as `listComputeServers` reports it. **Ours** (UUIDv7), minted when the order row was written — never the provider's own identifier for the machine.

Response

NameTypeRequiredWhat it is
contract_idstringYesThe provider's contract identifier.
auto_renewbooleanYesWhether **Zinn®** will charge for this machine again — `Subscription.auto_renew` for the subscription that pays for it, reached through the paid order line. It is **not** the pr…
subscription_idstringYesThe subscription whose switch `auto_renew` reports, to send the customer to `POST /v1/subscriptions/{subscriptionId}/auto-renew`. `""` when the machine was provisioned outside a…
renews_atstringYes**The provider's date** - when the machine lapses at them, as they state it, or `""` when they state none. Blank means "not stated" - never "never". It is what the "runs until X…
charge_atstringYes**Zinn®'s date** - when the customer's card is charged next, ISO-8601, or `""` when the machine has no Zinn® subscription. This is `Subscription.current_period_end`: the rebill…
price_amount_minorobjectYesWhat the customer will be charged at `charge_at`, in **integer minor units** of `price_currency`, taken from the subscription's captured price (a live subscriber keeps the price…
price_currencystringYesThe ISO-4217 code `price_amount_minor` is denominated in, or `""` when there is no subscription. Never rendered apart from the amount, and the amount never without it.
periodstringYesThe renewal cadence as the provider spells it, or `""`.

Errors this endpoint can return

401 · 403 · 404 · 422 · 429 · 503