Docs menu

API keys & authentication

Every API key is a pair: a secret key for your servers and a public key you can safely ship in websites and apps.

Secret keyPublic key
Looks likesmx_sk_live_…smx_pk_live_…
Where to use itServers, back-end jobs, ETL, automationBrowsers, mobile apps, embedded forms, IoT
Sent asAuthorization: Bearer smx_sk_live_…X-Summarix-Key: smx_pk_live_…
Can doAnything its scopes allow (read and write)Only POST /v1/ingest, which appends rows to the key's own dataset
ShownOnce, when created or rolled. Stored as a SHA-256 hashAny time in the dashboard
RestrictionsScopes, IP allowlist, expiryAllowed origins, expiry, strict rate limits
Never put a secret key in client-side code, a mobile app or a public repository. If one leaks, roll it in the dashboard. The public key stays the same, so your embedded snippets keep working.

Creating keys #

Workspace owners and admins manage keys in Dashboard → API keys. You can have up to 20 active keys per workspace. Use one key per integration so you can revoke it on its own and see its last used time.

Scopes #

Give each key only the scopes it needs. A request that needs a scope the key doesn't have returns 403.

ScopeAllows
reports:readList reports and fetch results
reports:writeGenerate new AI reports
datasets:readList datasets
datasets:writeUpload files and push rows
calls:readCall summaries and transcripts
calls:writeUpload recordings for summarising

Using the secret key #

curl https://api.summarix.co.za/v1/whoami \
  -H "Authorization: Bearer smx_sk_live_…"

IP allowlist: if you list IP addresses on the key, requests from any other IP get 403. Use this for fixed-IP servers.
Expiry: keys can expire after a set number of days, which is useful for contractors and short-lived integrations.

Using the public key #

Public keys are for collecting data from places where a secret can't be kept, such as a sign-up form, a point-of-sale tablet or a mobile app. They can only append rows (the /v1/ingest endpoint) to a dataset called <key name> (public key), so they can never read anything.

browser
await fetch("https://api.summarix.co.za/v1/ingest", {
  method: "POST",
  headers: { "X-Summarix-Key": "smx_pk_live_…", "Content-Type": "application/json" },
  body: JSON.stringify({ event: "quote_requested", product: "Fibre 100", province: "WC" }),
});

Allowed origins: add your site origins (e.g. https://www.example.co.za). Browser requests from any other origin are rejected. Origin checks stop other websites using your key, but a determined script can fake the header. That's why public keys are write-only and rate-limited (30 requests per minute per visitor IP).

Rotation & revocation #

  • Roll secret: issues a new secret immediately and the old one stops working. The public key, scopes and restrictions don't change.
  • Revoke: disables both keys permanently. Data already sent is kept.
  • All key actions (created, rolled, revoked) are recorded in the workspace audit log.