Getting started

Quick start

Create an account, finish onboarding, copy your publishable key, and verify the API with a single request.

1. Create your workspace

Sign up (email or OAuth). Complete onboarding so your tenant, base API key, and defaults exist. You'll land in the Dashboard.

2. Copy your API key

Go to Settings → API keys. You will see your base publishable key (safe for browsers and embeds) and you can generate additional keys.

  • Publishable key (zentier_publishable_...). for frontend code, widgets, and public API calls. Scoped to permissions you assign.
  • Server secret (zentier_server_secret_...). for backend/server code only. Has full access to all endpoints. Click Generate key in the dashboard, select Server secret, and copy the key immediately (it is shown only once). Store it in your backend .env file.

Key format

There is no separate npm SDK-use HTTP from any stack. Keys are scoped per-key; server secrets bypass scope checks but must never be exposed to clients.

3. Test with cURL or Postman

Before writing application code, verify your setup with a direct API call. Replace YOUR_APP_URL with your deployment origin and YOUR_KEY with your publishable or server secret key.

cURL. widget availability
curl -sS "YOUR_APP_URL/api/widget/availability?key=YOUR_KEY&start_date=2026-06-01&end_date=2026-06-30"
cURL. create a free booking
curl -sS -X POST "YOUR_APP_URL/api/widget/booking" \
  -H "Content-Type: application/json" \
  -H "x-publishable-key: YOUR_KEY" \
  -d '{
    "resource_id": "YOUR_RESOURCE_UUID",
    "slot_id": "YOUR_SLOT_UUID",
    "customer_name": "Test User",
    "customer_email": "test@example.com",
    "amount_cents": 0,
    "currency": "SEK"
  }'

You can also pass the key as Authorization: Bearer … instead of x-publishable-key-see Authentication.

4. Use dashboard APIs while logged in

From the same origin as the app, with an active session (e.g. in the dashboard or your own authenticated pages), you can call routes like GET /api/resources-the session cookie identifies your tenant.

Browser / same-origin fetch
// Run from a page on YOUR_APP_URL while logged in
const res = await fetch('/api/resources')
const data = await res.json()
console.log(data.resources)

Next steps