extras

POST /v1/extras/{code}/purchase

Purchase an extra service.

Lahat ng extras endpoint

Pagpapatotoo

Magpadala ng API key bilang isang bearer token. Kailangang taglayin ng key ang pahintulot na billing.payment.manage; ang key na wala nito ay tatanggihan gamit ang 403, hindi 404.

Kung saan mapupunta ang id ng iyong organisasyon

Ang endpoint na ito ay kumukuha ng org_id bilang isang field sa JSON body.

Ang id ng iyong organisasyon ay nasa screen ng mga API key sa iyong dashboard, sa tabi mismo ng key. Ito ang parehong id sa bawat tawag na gagawin mo.

Subukan ito

Palitan ang anuman sa loob ng mga panaklong na may anggulo ng iyong sariling mga halaga, at ang placeholder ng key na may key mula sa iyong dashboard.

curl -X POST https://api.zinndigital.com/v1/extras/{code}/purchase \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{  }'

Nakalagda? Ang API console sa iyong dashboard ay awtomatikong naglalagay ng iyong tunay na ID ng organisasyon at sariling susi, at pinapatakbo ang kahilingan laban sa live na API upang makita mo ang aktwal na tugon. Buksan ang endpoint na ito sa console ng API

Mga Detalye

Buys the extra: it is charged wallet-first then gateway, and handed to durable fulfilment (an automated workflow, or a staff task). The price and fulfilment path are server-decided (docs/26 §3). Requires `billing.payment.manage`. Two different `422`s, and a client must tell them apart: `PAYMENT_METHOD_REQUIRED` means the organization holds no chargeable payment method, so nothing was presented to any gateway and nothing was refused — the remedy is to add a card and buy again. `UNPROCESSABLE_ENTITY` on this path is a genuine gateway decline. Reporting the first as the second tells a customer who has never entered a card that their bank refused them (`docs/491` §7).

Mga Parameter

PangalanUriKailanganAno ito
code (path)stringOoThe extra's code (e.g. `db_maintenance`).

Katawan ng kahilingan

PangalanUriKailanganAno ito
org_idUuidHindiUUIDv7 identifier — sortable by creation time (docs/02 §8).
site_idobjectHindi
domain_idobjectHindiThe domain a **domain-scoped** extra is bought for. Premium DNS (`premium_dns`) is the first: it is applied at the registrar, per zone, on a name held in our registrar account.…
currencyCurrencyCode | nullHindiThe currency the customer was quoted in on the catalogue screen. Omit it and the engine uses the `X-Zinn-Currency` header. `Extra` rows are stored in the base currency only, so…
pay_withstring<card, credit>HindiWhere the money comes from. Owner ruling 2026-08-24: *"Credit pays, or card — customer picks"*. Only the AI products (`ai_webmaster`, `ai_update_guard` and any other row in thos…

Tugon

PangalanUriKailanganAno ito
idUuidOoUUIDv7 identifier — sortable by creation time (docs/02 §8).
org_idUuidOoUUIDv7 identifier — sortable by creation time (docs/02 §8).
extra_idUuidOoUUIDv7 identifier — sortable by creation time (docs/02 §8).
site_idobjectHindi
domain_idobjectHindi
statusExtraPurchaseStatusOoAn extra purchase's lifecycle state.
categorystringOo
fulfilment_typeExtraFulfilmentTypeOoHow an extra is delivered.
intervalExtraIntervalOoOne-off charge or a recurring subscription.
priceMoneyAmountOoA money value — integer minor units + an ISO 4217 code (CLAUDE.md §2.8).
recurrencestring<none, active, ended>OoWhether the recurrence behind this purchase is still live. `none` = it never recurred (a one-off); `active` = a scheduled charge exists; `ended` = it recurred and no longer does…
next_renewal_onobjectHindiThe next charge date, or `null`. Also `null` for a live charge that has no date scheduled yet, so read `recurrence` — not this field — to decide whether a purchase renews at all.
sla_due_atobjectHindi
completed_atobjectHindi
failure_reasonstringHindi
created_atstringOo
updated_atstringOo

Mga error na maibabalik ng endpoint na ito

401 · 403 · 404 · 422 · 429