billing

GET /v1/first-run

Every product this organization holds, with its one next step and whether it is done.

All billing endpoints

All developer docs →

Authentication

Send an API key as a bearer token. The endpoint checks sites.view; a key without it is refused with 403, not 404.

Where your organisation id goes

This endpoint takes org_id as a query parameter. Leave it out and the call covers your whole tenancy subtree; send it to narrow the call to one organisation.

Your organisation id is on the API keys screen in your dashboard, beside the key itself. It is the same id in every call you make.

Try it

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

curl -X GET https://api.zinndigital.com/v1/first-run \
  -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

s1014 FIRSTRUN (docs/1080). ⚖️ Owner 2026-10-18: "Nothing worse than someone taking a trial for x and then ending up lost in the app dashboard". One row per held product — each live free trial, live plan subscription and add-on purchase — with what "set up" means for it (kind), the screen that does it (next_path, with the plan and line already chosen), an equal "Build it with AI" alternative where one exists, the guide, and whether the first success moment has happened, decided from account state on every call (engine.billing.first_run). Undone rows first, trials first. product (an app sign-up ?product= key) adds the product the person signed up for when they hold nothing yet. reminders says whether the Overview home card and the trial banner may show for this organization (BRIEF 28: internal organizations only until switched on).

Parameters

NameTypeRequiredWhat it is
org_id (query)stringNo—
product (query)stringNoAn app sign-up product key (hosting, boards, seo-tools, ...). Unknown keys are ignored.

Response

NameTypeRequiredWhat it is
dataFirstRunItem[]Yes—
all_donebooleanYesEvery held product has reached its first success moment.
remindersbooleanYesWhether the Overview home card and the trial reminder banner may show (BRIEF 28 switch).

Errors this endpoint can return

401 · 403 · 404