Skip to content
Livstick Developers

Before you read this

The quickstart already put a bearer token in a request header without explaining its shape or what it is allowed to do — this page fills that in. Revisit the first API request

The shape of a v3 token

A v3 key is sent as a standard bearer token, with a fixed prefix that identifies it as a Livstick key before the secret half:

http
Authorization: Bearer liv_<prefix>_<secret>
  • liv_ marks the token as a Livstick key, at a glance in logs and support tickets.
  • <prefix> identifies the key without exposing the secret — it is safe to log or display.
  • <secret> is the part that authenticates the request, and the only part that must stay confidential.

The nine v3 scopes

A v3 key is granted one or more of nine scopes. Each scope maps to a slice of the container and message surface, not to a single endpoint — containers:read, for instance, covers both listing and reading a single container.

v3 scopes
Scope Grants
containers:read List containers, read a single container, and retrieve its recording and preview URLs.
containers:write Create or retrieve a container, and correct it with a partial update.
containers:notify Trigger delivery to the recipient.
containers:unlock Make a message accessible to its recipient.
containers:qrcode Retrieve the container's QR code as a PNG.
containers:card Retrieve the container's printable card as a PDF.
messages:read Read messages, filtered by container id or by code group.
messages:write Update a message's data and privateData.
code_groups:read Read the list of code groups.

Four scopes added for API v3.1

API v3.1 reuses the containers:* and messages:read scopes listed above, for the same operations, and adds four. A key that must call one of the new routes needs its scope when it is created: a scope cannot be added to an existing key, so create a new key and retire the old one.

v3.1 scopes
Scope Grants
tokens:record Mint record tokens, which let the recording widget write one message for one mrid.
tokens:view Mint view tokens, which let the viewing widget read one message or a whole container.
messages:publish Release a held message, and delete a message for a refund or a withdrawal.
webhooks:read Read the delivery log of your platform.

The two 2.1 scopes

The 2.1 API does not split permissions by operation the way v3 does. It grants access by route family instead, one scope per family: client_v2 for the client-facing /v2.1/client/… routes, user_v2 for the recipient-facing /v2.1/user/… route.

2.1 scopes
Scope Grants
client_v2 Every /v2.1/client/{key}/{crid}/… route: redirect, retarget, QR code, card, notify, modify, details, webhook registration.
user_v2 The recipient-facing /v2.1/user/{key}/{crid}/redirect route.

One key system for both APIs

This is the fact worth carrying forward: v3 and 2.1 are not two credential systems bolted together. A key — whichever API it targets — is managed through the same infrastructure underneath.

  • Secrets are stored hashed, never in a form that could be read back.
  • A key can carry an expiration, and its status (active, revoked, expired) is checked on every request.
  • Every use is audited, and lastUsedAt is kept up to date for each key.
  • A key can be constrained to a platform, in addition to its scopes.

Where to see your actual scopes

This page lists what exists — every scope either API defines, and the shape a key takes. It does not, and cannot, tell you which scopes your own keys hold, or show you a key's actual value.