Platform
ScaiWave ScaiGrid ScaiCore ScaiBot ScaiDrive ScaiKey Models Tools & Services
Solutions
Organisations Developers Internet Service Providers Managed Service Providers AI-in-a-Box
Resources
Support Documentation Blog Downloads
Company
About Research Careers Investment Opportunities Contact
Log in

Profiles and preferences API

5 endpoints under /v1/me/ and /v1/profiles/.

Method Path Purpose
GET /v1/me Your profile + tenant context.
PUT /v1/me Update display name, avatar, bio.
GET /v1/me/preferences Your preferences.
PUT /v1/me/preferences Update preferences (merge-update).
PUT /v1/me/presence Set presence state manually.

GET /v1/me#

json
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{
  "data": {
    "participant_id": "5e4d…",
    "local_id": "alice",
    "fqid": "@alice:scaiwave.example.com",
    "display_name": "Alice Anderson",
    "email": "alice@example.com",
    "avatar_url": "...",
    "bio": "...",
    "personal_workspace_id": "ws-…",
    "roles": ["docs_developer"],
    "groups": ["group-eng"],
    "presence": "online",
    "tenant": {
      "id": "abc-…",
      "slug": "acme",
      "name": "Acme Corp",
      "features": { "prompt_studio": { "enabled": true } }
    }
  }
}

Preferences#

jsonc
{
  "data": {
    "locale": "en",                          // ui language: en | nl | de
    "timezone": "Europe/Amsterdam",          // IANA tz
    "time_format": "24h",                    // "12h" | "24h"
    "ai_response_mode": "conversational",    // "streaming" | "conversational"; updated by room-wide flips
    "ai_engagement_mode": "always",          // "always" | "mention" | "keyword" | "autonomous"
                                             //   — applied when this user invites an AI into a new group room
    "default_mode": "all",                   // notification floor: "all" | "mentions" | "none"
    "quiet_hours": {
      "enabled": false,
      "start": null, "end": null,
      "weekdays_only": false, "weekends_only": false
    },
    "keyword_alerts": [],
    "read_marker_mode": "leave",             // "leave" | "scroll"
    "push": true,
    "email": false,
    "email_address": null
  }
}

PUT /v1/me/preferences is merge-update — only the keys you send are touched; everything else is preserved.

Presence#

bash
1
2
3
curl -X PUT "$BASE/v1/me/presence" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"state": "busy"}'

States: online, idle, busy, appear_offline. Setting any of these is sticky — the auto-detect rule stops applying until you explicitly reset:

bash
1
2
3
curl -X PUT "$BASE/v1/me/presence" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"auto": true}'
Updated 2026-05-18 12:07:15 View source (.md) rev 5