Tokens, scopes & the sandbox

Personal tokens

An owner makes a token in Settings → Developer for their own scripts and automations: a name, the scopes it may use, and an expiry of 30, 90 or 365 days. It is shown once. Daysli keeps only its SHA-256 and last four characters, so a lost token cannot be recovered — make a new one and revoke the old.

Authorization: Bearer dsl_pat_…

What each credential looks like

PrefixWhat it is
dsl_pat_Personal token, live
dsl_test_Personal token, test mode (the sandbox)
dsl_whsec_A webhook endpoint’s signing secret

The prefixes exist so a leaked credential is recognisable. If you find one in a log or a repository, revoke it.

The sandbox: test tokens

A test token (dsl_test_) is the same API over the owner’s own data, with one difference that matters: nothing it creates can reach a real person.

Build against a test token, then make a live one with the same scopes. Nothing else changes.

Scopes

A token can do only what its scopes allow, and the owner chose them. A missing scope is 403 insufficient_scope, with the scope named in WWW-Authenticate.

ScopeWhat the owner readsNever included
profile:readSee your name, username and timezoneEmail address, bio, settings.
availability:readSee your appointment types and when you’re freeWhy a time is not free; event titles; which calendar is busy. Nothing while booking is off.
events:readSee your calendar events and appointmentsNotes, participants, busy time imported from other calendars, repeat rules.
tasks:readSee your to-dosRequesters’ contact details.
requests:readSee requests people send youRequesters’ email, phone and handles (they need requests:contact); owner-side states.
requests:contactSee the email and phone number of people who send you requests—
requests:createSend requests to you, which you accept or declineAny direct change to the calendar or to-dos; other tokens’ requests.
webhooksBe told when these things changeEvents for scopes the token does not have.

requests:contact goes with requests:read and means nothing on its own. And beside every token, the owner reads the same fixed line: “Tokens and webhooks can never see your journal.”

Account ids

accountId (acct_…) identifies the owner to your integration and never changes. It is derived for your integration alone, so two different apps never see the same id for the same person. Store it to tell owners apart; do not try to parse it.

Apps for other people

Personal tokens are for an owner’s own automations. Apps that other Daysli owners connect through OAuth are designed (PKCE, per-app consent, revocation in Settings → Connected apps) and open once the Developer Terms are published.