The Daysli API
Connect the day. Protect the journal. Software you write can read a Daysli owner’s free time, events, to-dos and requests, ask them for time or a to-do, and hear when things change — only as far as the owner allows, and only until they say stop.
The journal is never available. No token, scope, route, field or webhook can reach it, and the database role the API runs as has no access to a single table — it can only call the functions written for it.
What it can do
- Read the owner’s profile, appointment types and free times; their calendar events and appointments; their to-dos; and the requests people send them.
- Ask: send an appointment or to-do request into the owner’s inbox, exactly as their booking page does. Nothing is confirmed until the owner accepts.
- Listen: signed webhooks when requests, to-dos or events change, with a catch-up route for anything a receiver missed.
What it will not do
- Write into the owner’s calendar or to-do list. Software asks; the owner decides.
- Show why a time is not free, or anything about other calendars.
- Touch the journal, exports, account settings or anyone’s contact details unless granted.
Quickstart
1. Make a token
In the Daysli app, open Settings → Developer and choose New token. Name it, pick what it may do, and copy it — it is shown once. Start with a Test token: it reads the same data, and nothing it sends can email anyone (see tokens, scopes and the sandbox).
2. Ask who it is
curl https://beta-pages.daysli.com/api/v1/me -H "Authorization: Bearer $DAYSLI_TOKEN"
{
"accountId": "acct_Q2p9…",
"scopes": ["profile:read", "tasks:read", "webhooks"],
"mode": "test",
"profile": { "displayName": "Alex Rivera", "username": "alex", "publicUrl": "https://daysli.com/alex",
"timezone": "Indian/Maldives", "locale": "en" }
}3. List today’s to-dos
curl "https://beta-pages.daysli.com/api/v1/tasks?status=open&limit=20" -H "Authorization: Bearer $DAYSLI_TOKEN"
4. Find a free time and ask for it
curl "https://beta-pages.daysli.com/api/v1/appointment-types" -H "Authorization: Bearer $DAYSLI_TOKEN"
curl "https://beta-pages.daysli.com/api/v1/availability?appointmentTypeId=TYPE_ID&from=2026-10-12&to=2026-10-16&tz=Europe/London" -H "Authorization: Bearer $DAYSLI_TOKEN"
curl -X POST "https://beta-pages.daysli.com/api/v1/requests/appointments" -H "Authorization: Bearer $DAYSLI_TOKEN" -H "Content-Type: application/json" -H "Idempotency-Key: $(uuidgen)" -d '{"appointmentTypeId":"TYPE_ID","slot":{"start":"2026-10-12T09:00:00Z","end":"2026-10-12T09:30:00Z"},"requester":{"name":"Ahmed Rauf","email":"ahmed@example.com"},"requesterTimezone":"Europe/London","requesterLocale":"en-GB","message":"About the fuel quotation."}'5. Hear about changes
Give the token webhooks and add an address under it in Settings → Developer. Daysli sends a signed ping first; then every change it may see. See webhooks for the payload and how to check the signature.
Base URL
https://beta-pages.daysli.com/api/v1. JSON in and out, UTF-8, instants in RFC 3339 UTC, dates as YYYY-MM-DD, time zones as IANA names. The API is for servers and native apps: it sends no CORS headers, so a browser has to go through your own backend.
Every route, parameter and answer is in the reference and in openapi.json (OpenAPI 3.1), generated from the same definitions the server enforces.