public

POST /v1/public/checkout

Check out as a guest — create the account and place the order.

所有 public 端点

身份验证

此端点是公开的。它不需要任何凭据或组织——这是我们自己的营销网站和 AI 问答引擎所读取的内容。

此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。

免费试用

将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。

curl -X POST https://api.zinndigital.com/v1/public/checkout \
  -H "Content-Type: application/json" \
  -d '{ "cart_token": <string>, "email": <string>, "billing": <PublicBilling> }'

已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点

详细信息

Converts an anonymous cart into a real tenant: it **creates the organization and the user at this point**, captures the billing details, and places an immutable order. Availability is **re-verified live** against the registrar first, so a name taken while the customer was typing aborts the whole call (`409`) with nothing created. Tax is computed against `billing.country` (§2.8). **It never takes a card, and what it does next depends entirely on the total.** The response is `{order_id, org_id, next}`: - `"payment"` — the order has something to pay and is left `pending_payment`. Taking payment is the authenticated step that follows, because a brand-new organization has no payment mandate on file. - `"done"` — the total is **zero** (a free trial, a zero-priced plan, a 100% discount), so the order is **settled and provisioned inside this call**: a zero `Payment` is recorded, the order becomes `paid`, and the fulfilment workflow starts. No gateway is contacted — a brand-new organization has none to resolve, and there is nothing to charge. Owner ruling 2026-08-09: *a free trial takes no card and starts immediately.* ⛔ Between that ruling and 2026-08-12 this endpoint answered `"done"` and performed **none** of it — the order stayed `pending_payment` with no payment, no fulfilment and no workflow, so the customer was told their trial had started and no site was ever built. Anything that keys off `next` should key off it alone; the order state now follows it. **Idempotent on the cart.** A double-submit — concurrent or an hour later — produces one organization, one user and one order; the repeat returns the same ids. There is no `Idempotency-Key` header to send: the cart token *is* the key. If the email already has an account the call is refused with `409` and nothing is created: the purchase must be completed signed in, so that an unauthenticated request can never attach an order to somebody else's tenant. The cart stays open.

请求正文

名称类型必填内容简介
cart_tokenstring
emailstring
passwordstringOptional. Omit it and the account is created without a credential, so the customer sets one through the identity provider's own verified flow — which is the safer default, becau…
namestring
localestring
billingPublicBillingThe buyer block. Only `country` is required, because tax is country- and currency-aware and an order with no jurisdiction has no determinable tax; the rest can be completed late…
attributionobject

响应

名称类型必填内容简介
order_idUuidUUIDv7 identifier — sortable by creation time (docs/02 §8).
org_idUuidThe organization created by this call — the customer's new tenant.
nextstring<payment, done>What the client should do next. `payment` — the order exists and is `pending_payment`; nothing has been charged. `done` — the order totals **zero** and there is nothing to charg…

此端点可能返回的错误

404 · 409 · 422 · 429 · 503