billing
GET /v1/trials/eligibility
Can this organization start a trial on this plan, and on what terms?
Authentifizierung
Senden Sie einen API-Schlüssel als Bearer-Token. Dieser Endpunkt gibt in der Spezifikation keine spezifische Berechtigung an. Versehen Sie Ihren Schlüssel daher mit den minimal erforderlichen Rechten und prüfen Sie die Antwort, anstatt Annahmen zu treffen.
Hier kommt Ihre Organisations-ID hin
Dieser Endpunkt akzeptiert org_id als Abfrageparameter. Lassen Sie ihn weg, erfasst der Aufruf Ihren gesamten Mandanten-Unterbaum; übergeben Sie ihn, um den Aufruf auf eine Organisation einzugrenzen.
Die ID Ihrer Organisation finden Sie im Dashboard auf dem Bildschirm für API-Schlüssel direkt neben dem Schlüssel selbst. Sie ist bei jedem Ihrer Aufrufe dieselbe.
Ausprobieren
Ersetzen Sie alles in spitzen Klammern durch Ihre eigenen Werte und den Platzhalter für den Schlüssel durch einen Schlüssel aus Ihrem Dashboard.
curl -X GET https://api.zinndigital.com/v1/trials/eligibility?plan_code=<plan_code> \
-H "Authorization: Bearer zdk_live_…"Angemeldet? Die API-Konsole in Ihrem Dashboard trägt automatisch Ihre echte Organisations-ID sowie Ihren eigenen Schlüssel ein und führt die Anfrage gegen die Live-API aus, sodass Sie die tatsächliche Antwort sehen können. Öffnen Sie diesen Endpunkt in der API-Konsole
Details
Lets a CTA be honest **before** it is clicked. Without it the only way to learn that a plan has no trial, or that this organization has already had one, is to press the button and read a 422 — which is how a "Start free trial" button that cannot start a free trial stays on a pricing page for months. `reason` distinguishes the cases deliberately: "this plan has no trial" and "you have already had yours" lead a customer to do completely different things, and a bare `eligible: false` would collapse them into one shrug.
Parameter
| Name | Typ | Erforderlich | Was es ist |
|---|---|---|---|
plan_code (query) | string | Ja | — |
org_id (query) | string | Nein | — |
Antwort
| Name | Typ | Erforderlich | Was es ist |
|---|---|---|---|
plan_code | string | Ja | — |
eligible | boolean | Ja | — |
duration_days | integer | Nein | — |
max_sites | integer | Nein | — |
requires_card | boolean | Nein | — |
reason | string<, no_trial_on_plan, no_billing_org, already_used> | Ja | Empty when eligible. |
upgrade | TrialUpgradeOffer | Nein | The plan the customer asked about, priced in their currency, so a refusal ends in a decision rather than a dead end. ⚖️ Owner instruction 2026-08-19: *"if they try to start a ne… |
Fehler, die dieser Endpunkt zurückgeben kann
401 · 403