ავტორიზაცია
API გასაღები გაგზავნეთ როგორც bearer token. ეს ენდპოინტი სპეციფიკაციაში არ მიუთითებს კონკრეტულ ნებართვას, ამიტომ მიანიჭეთ თქვენს გასაღებს მინიმალური საჭირო უფლებები და ვარაუდის ნაცვლად შეამოწმეთ პასუხი.
სwhere your organisation id goes-ის ადგილი
ესენდპოინტი იღებს org_id-ს JSON ტანის ველად.
თქვენი ორგანიზაციის ID მითითებულია თქვენი სამართავი პანელის API გასაღებების ეკრანზე, თავად გასაღებთან ახლოს. ის ერთნაირია თქვენ მიერ განხორციელებულ ყველა გამოძახებაში.
სცადეთ
შეSubstituted any value inside angle brackets with your own and the key placeholder with a key from your dashboard.
curl -X POST https://api.zinndigital.com/v1/trials \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "plan_code": <string> }'შესული ხართ? თქვენი სამართავ პანელში არსებული API კონსოლი ავტომატურად ამატებს თქვენი რეალური ორგანიზაციის ID-სა და საკუთარ გასაღებს და ატარებს მოთხოვნას ცოცხალ API-ს წინააღმდეგ, რათა იხილოთ რეალური პასუხი. გაAღით ეს ენდპოინტი API კონსოლში
დეტალები
docs/20. **The endpoint the "Start trial" buttons had nowhere to point at.** Three admin trial endpoints existed — list templates, edit a template, staff-extend a trial — and no customer-facing one, so all 47 CTAs on the public pricing page linked to `?intent=register`: *register first*, which is the opposite of what the button says. ⛔ `plan_code`, never a product line. Eligibility is a property of the **plan** (owner ruling 2026-07-29): cloud and VPS live in the same line as plans that do carry a trial, so a line-shaped request could not express "never on billable per-instance compute" at all. One trial per organization, enforced by a database constraint as well as a check — so a double-click races safely and the loser is refused rather than granted a second trial.
მოთხოვნის სხეული
| სახელი | ტიპი | სავალდებულო | რა არის ეს |
|---|---|---|---|
plan_code | string | დიახ | — |
org_id | string | არა | Required only when the caller bills for more than one organization. With exactly one it is unambiguous; with several it is asked for rather than guessed, because starting a rese… |
auto_convert_opt_in | boolean | არა | ⛔ Defaults to false — the direction that cannot take money nobody agreed to. |
პასუხი
| სახელი | ტიპი | სავალდებულო | რა არის ეს |
|---|---|---|---|
id | string | დიახ | — |
org_id | string | დიახ | — |
status | string<active, expired, converted, canceled> | დიახ | — |
product_line | string | დიახ | The line's CODE, not its display name — the dashboard renders the label from its own catalogue, so prose here would be a second, untranslated source of that word on the screen. |
max_sites | integer | დიახ | — |
started_at | string | დიახ | — |
ends_at | string | დიახ | — |
auto_convert_opt_in | boolean | არა | Whether the customer agreed **at the start** that this may become a paid subscription when the period ends. Captured per trial rather than read from the template at expiry, so c… |
days_remaining | integer | არა | Whole days until `ends_at`, rounded UP and floored at zero. Computed on the server on purpose: a client doing `(ends_at - Date.now())` measures the **device** clock, so a laptop… |
upgrade | TrialUpgradeOffer | არა | The plan this trial invites the customer to buy, priced in their own currency (`X-Zinn-Currency`, falling back to the org default). ⛔ `null` when the template names no target or… |
შეცდომები, რომლებიც ამ ენდპოინტს შეუძლია დააბრუნოს
401 · 403 · 404 · 422