Build a web or mobile client
Auth, envelopes, and the main /v1/api routes for dashboards and apps.
Build a web or mobile client
Use this when wiring a dashboard or native app to the Account API.
How integrations work
Connect over HTTP. There is no drop-in “battery” or in-process plugin for partners yet.
| You are building | Use |
|---|---|
| App or partner connector | /v1/api/* with Bearer tokens |
| Coding agent for that app | Project skill daayos-client + MCP & Ask AI |
| Runtime assistant inside the OS | CapToken + assistant turns + MCP tool invoke |
Future pack marketplaces would still go through CapGate allowlists — not arbitrary code inside the API.
Bases
- Development:
https://devospi.daaysorn.com - Production:
https://ospi.daaysorn.com - Prefix:
/v1/api
Interactive docs: /v1/api-reference. Machine-readable: /v1/docs-json.
Sign in once
POST /v1/api/auth/sign/up/emailorPOST /v1/api/auth/sign/in/email- Store
data.tokenanddata.refreshToken - Call APIs with
Authorization: Bearer <token> - Refresh with
POST /v1/api/auth/session/refreshbefore access expires
Do not call /v1/api/auth/get-session. Use GET /v1/api/user/profile for the signed-in user.
Mobile captcha skip (when captcha is on): send x-client-platform plus x-captcha-mobile-skip. Do not rely on User-Agent alone.
Sensitive changes
Phones, names, PIN, and personal AI API keys need a step-up grant (x-step-up-token from /v1/api/user/step-up/*).
AI models alone: PATCH /v1/api/user/ai-settings without step-up. Fields include chatModel, agiModel, and optimizeFor (cost | balance | intelligence). Setting cencoriApiKey needs step-up.
Product surfaces
| Need | Start here |
|---|---|
/v1/api/mail/* |
|
| Saved links | /v1/api/keeps |
| Money | /v1/api/wallet |
| Calendar | /v1/api/schedule/events |
| Assistant | /v1/api/agi/runs then /step |
| Tools | /v1/api/mcp/tools/invoke with the CapToken from spawn |
Assistant turns (chat / ask / agent)
POST /v1/api/agi/runs— keepcapToken(shown once). Optionalgoal/tasks.POST /v1/api/agi/runs/:runId/stepwithmessage,capToken, optionalmode(auto|chat|agent).- Branch on
phase:chat/ask— showreply(and optionalthinking)planned— showagentPlan.moves, then call/stepagain to actacting— ifaction.statusisawaiting_confirm, approve or deny the interrupt; otherwise continue/stepdone— finished
- Every response includes
routing(intent,complexity,model,optimizeFor) — show which model ran. - Also handle:
skillsUsed— chips for Life OS skills loaded this turnsubagents— parallel child runs (spawn viaPOST …/subagents)bootstrap— missing capability proposal; approve/deny like other interrupts (skill_install/capability_proposal)
See Queue work for the personal assistant for task edit/reorder, skills, subagents, and confirm flows.
For agents
Load the project skill daayos-client (.cursor/skills/daayos-client or .claude/skills/daayos-client), or use MCP & Ask AI.
