Privacy and analytics

We use necessary technical cookies and, only with your consent, analytics and marketing pixels to improve the website and measure campaigns.

Privacy policyCookie policy
Docs
English
EspañolEnglishFrançaisDeutschItalianoPortuguês

Getting started

  • What is Nömad?
  • Getting started with Nömad
  • Create your brand and complete the Genome
  • Invite your team
  • Glossary

Brand OS

  • What is inside Brand OS
  • What is the Genome?
  • Who is Nödo?
  • Messages: your team and Nödo
  • What does a Brand Manager do?
  • Brand Kit and Library
  • Posts and calendar
  • Connections
  • Meetings
  • Files we send you with NödoTransfer

Work

  • Work and tasks
  • Ordering work
  • Following, reviewing and approving deliveries
  • Approving the posts Nömad prepares
  • Custom quotes
  • Brand history
  • Yes, there are humans behind it

Account and billing

  • Plans and pricing
  • Billing and payments
  • People and access
  • Organization and brand roles
  • Workspaces and multiple brands
  • Your name and @username
  • Languages, apps and data
  • Leave, close or delete: account, brands and workspaces
  • Notifications: how we let you know
  • Push notifications on your phone and browser
  • Nömad emails and your preferences

Help

  • How to get help

API

  • Brand API
    • Errors
    • Permissions and roles
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    • Calendar
    • Connections
    • Publishing
    • Inbox
    • Team
    • Account and team
    • Conversation
    • Memory
    • Questions
    • Media
    • Store
    • Plan
    • Orders
    • Activity
    • Workspace
    • Your account
    • Billing
    • Website and domains

MCP

  • MCP server

Connectors

  • Brand connectors

Nödo and agents

  • Nödo in the brand

Genome

  • Genome specification
API/Brand API
Reference10 min read

Your account

Profile, preferences, notices, devices and tokens.

On this page
  • profile.time_zone.set · Set your time zone
  • profile.update · Edit your profile
  • profile.avatar.set · Set your avatar
  • profile.avatar.remove · Remove your avatar
Русский
한국어
日本語
中文
हिन्दी
Open the app
  • profile.identity.update · Name and @username
  • profile.presence.touch · Presence heartbeat
  • profile.push_devices.test · Send a test push
  • profile.push_devices.remove · Remove a push device
  • profile.notifications.set_read · Mark notices read
  • profile.notifications.set_archived · Archive notices
  • profile.notifications.set_saved · Save notices
  • profile.notifications.snooze · Snooze notices
  • profile.notifications.read_all · Mark all read
  • profile.notifications.mark_seen · Notices seen
  • profile.notifications.mute_thread · Mute a thread
  • profile.notification_preferences.set · Change a notification preference
  • profile.notification_preferences.reset · Reset notification preferences
  • profile.notification_delivery.update · Notification delivery settings
  • profile.notification_pause.set · Do not disturb
  • profile.agent_approvals.decide · Decide an agent request
  • profile.tokens.create · Create a personal token
  • profile.tokens.rotate · Rotate a personal token
  • profile.tokens.revoke · Revoke a personal token
  • profile.marketing_consent.answer · Answer the news opt-in
  • profile.time_zone.set · Set your time zone

    Sets the signed-in person's own time zone on every device. Null goes back to each device's own. no_person when the account has no person record yet.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.time_zone.set
    MCP toolprofile_time_zone_set
    Scopeprofile.write
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      timeZone: string | null  // IANA zone (`Europe/Madrid`), or null to fall back.
    }

    Output

    {
      timeZone: string | null
    }

    profile.update · Edit your profile

    Changes the signed-in person's display name, avatar URL, phone or interface language. A national phone number is stored in E.164 read with the person's country (Spain when unknown). Legal name and @username go through profile.identity.update.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.update
    MCP toolprofile_update
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      fullName?: string  // ≤ 200
      avatarUrl?: string  // ≤ 2048
      phone?: string | null
      locale?: "es" | "en" | "fr" | "de" | "it" | "ru" | "ko" | "ja" | "zh" | "pt" | "hi"
    }

    Output

    {
      ok: true
    }

    profile.avatar.set · Set your avatar

    Sets the profile picture to an image already uploaded to the person's own avatar folder (the upload itself is the screen's binary step). Any other URL is refused with invalid_input.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.avatar.set
    MCP toolprofile_avatar_set
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      avatarUrl: string  // uri · ≤ 2048
    }

    Output

    {
      ok: true
    }

    profile.avatar.remove · Remove your avatar

    Removes the signed-in person's profile picture and deletes its stored files. Their initials show instead.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.avatar.remove
    MCP toolprofile_avatar_remove
    Scopeprofile.write
    Minimum roleself
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {}

    Output

    {
      ok: true
    }

    profile.identity.update · Name and @username

    Saves legal first and last name, display name and @username in one write (update_my_identity). The database owns the limits; refusals come back as invalid_input/conflict with the reason in detail (username_taken, username_cooldown, legal_name_limit…). Returns the saved identity.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.identity.update
    MCP toolprofile_identity_update
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      firstName: string  // ≤ 80
      lastName: string  // ≤ 80
      displayName: string  // ≤ 60
      username: string  // ≤ 31
    }

    Output

    {
      identity: Record<string, unknown>
    }

    profile.presence.touch · Presence heartbeat

    Records that the signed-in person is active now (last seen), and for Nömad staff their live presence. Creates the person record from the profile when it does not exist yet. Sent by the apps every few minutes.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.presence.touch
    MCP toolprofile_presence_touch
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      path?: string  // ≤ 400
    }

    Output

    {
      touched: boolean
    }

    profile.push_devices.test · Send a test push

    Sends a test push to the person's own devices, or to one of them by id. Answers per device what happened; refuses with ok: false when it is too soon after the last test, there is no device or no transport is configured.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.push_devices.test
    MCP toolprofile_push_devices_test
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      deviceId?: string | null
    }

    Output

    {
      ok: true
      outcomes: Record<string, unknown>[]
    }
    | {
      ok: false
      error: "too_soon" | "no_device" | "transport_not_configured" | "failed"
    }

    profile.push_devices.remove · Remove a push device

    Stops pushes to one of the person's own browsers or phones until it subscribes again. removed is false when no active device of theirs had that id.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.push_devices.remove
    MCP toolprofile_push_devices_remove
    Scopeprofile.write
    Minimum roleself
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      deviceId: string  // uuid
    }

    Output

    {
      removed: boolean
    }

    profile.notifications.set_read · Mark notices read

    Marks the person's own notices read (which also marks them seen) or unread again.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notifications.set_read
    MCP toolprofile_notifications_set_read
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      ids: string[]  // ≤ 200 items · Notification ids of the person (up to 200); ids of other people are ignored.
      read: boolean
    }

    Output

    {
      ok: true
    }

    profile.notifications.set_archived · Archive notices

    «Done»: moves the person's own notices out of the inbox (they stay under Archive), or brings them back. Archiving also marks them read.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notifications.set_archived
    MCP toolprofile_notifications_set_archived
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      ids: string[]  // ≤ 200 items · Notification ids of the person (up to 200); ids of other people are ignored.
      archived: boolean
    }

    Output

    {
      ok: true
    }

    profile.notifications.set_saved · Save notices

    Keeps the person's own notices under Saved for later, or takes them out of Saved.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notifications.set_saved
    MCP toolprofile_notifications_set_saved
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      ids: string[]  // ≤ 200 items · Notification ids of the person (up to 200); ids of other people are ignored.
      saved: boolean
    }

    Output

    {
      ok: true
    }

    profile.notifications.snooze · Snooze notices

    Hides the person's own notices until a future moment, when they come back unread at the top. until: null wakes them now. A moment in the past is refused.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notifications.snooze
    MCP toolprofile_notifications_snooze
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      ids: string[]  // ≤ 200 items · Notification ids of the person (up to 200); ids of other people are ignored.
      until: string | null
    }

    Output

    {
      ok: true
    }

    profile.notifications.read_all · Mark all read

    Marks every unread notice of the person's inbox read: within one brand (plus account-level notices) or one category when given.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notifications.read_all
    MCP toolprofile_notifications_read_all
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      brandId?: string | null
      category?: string | null
    }

    Output

    {
      ok: true
    }

    profile.notifications.mark_seen · Notices seen

    Opening the bell: every notice counts as seen so the badge clears; unread ones stay unread.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notifications.mark_seen
    MCP toolprofile_notifications_mark_seen
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {}

    Output

    {
      ok: true
    }

    profile.notifications.mute_thread · Mute a thread

    «Mute this thread»: no push or email for notices of that thread key; they still land in the inbox. muted: false turns them back on.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notifications.mute_thread
    MCP toolprofile_notifications_mute_thread
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      threadKey: string  // ≤ 200
      muted: boolean
    }

    Output

    {
      ok: true
    }

    profile.notification_preferences.set · Change a notification preference

    Turns one notification type or category on or off for a channel (in_app, push, email or all), everywhere or in one workspace; enabled: null goes back to the default. Required notices cannot be turned off (forbidden, detail locked). The «Nömad news» category is the person's marketing consent and every change is recorded in the consent ledger.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notification_preferences.set
    MCP toolprofile_notification_preferences_set
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      workspaceId?: string | null
      targetType: "category" | "type"
      targetKey: string  // ≤ 120
      channel: "all" | "in_app" | "push" | "email"
      enabled: boolean | null
    }

    Output

    {
      ok: true
    }

    profile.notification_preferences.reset · Reset notification preferences

    Removes the person's own preference overrides so the catalogue defaults apply again, everywhere or in one workspace.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notification_preferences.reset
    MCP toolprofile_notification_preferences_reset
    Scopeprofile.write
    Minimum roleself
    Human confirmationYes
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      workspaceId?: string | null
    }

    Output

    {
      ok: true
    }

    profile.notification_delivery.update · Notification delivery settings

    Changes the person's delivery settings: time zone, quiet hours (HH:MM and weekdays 0–6), daily or weekly digest with its hour and weekday, and the push, email and sound switches. Only the fields sent change.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notification_delivery.update
    MCP toolprofile_notification_delivery_update
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      timeZone?: string  // ≤ 80
      quietHoursEnabled?: boolean
      quietStart?: string  // ≤ 5
      quietEnd?: string  // ≤ 5
      quietDays?: integer[]  // ≤ 7 items
      digestFrequency?: "off" | "daily" | "weekly"
      digestHour?: integer  // -9007199254740991–9007199254740991
      digestWeekday?: integer  // -9007199254740991–9007199254740991
      pushEnabled?: boolean
      emailEnabled?: boolean
      soundEnabled?: boolean
    }

    Output

    {
      ok: true
    }

    profile.notification_pause.set · Do not disturb

    «Do not disturb»: pushes and emails wait until until (at most a week ahead); the inbox keeps receiving. until: null resumes now and releases what the pause held.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.notification_pause.set
    MCP toolprofile_notification_pause_set
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsAPI, Screens, Apps
    StatusAvailable

    Input

    {
      until: string | null
    }

    Output

    {
      pausedUntil: string | null
    }

    profile.agent_approvals.decide · Decide an agent request

    Accepts or rejects, once, a write an outside agent asked to make for the person («Aprobaciones»). Accepting runs it as the person through the full gate again. Only the person decides: agents never call it.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.agent_approvals.decide
    MCP toolprofile_agent_approvals_decide
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      id: string  // uuid
      accept: boolean
    }

    Output

    {
      status: "approved" | "rejected"
    }

    profile.tokens.create · Create a personal token

    Issues a personal API token (nmu_) with a name, expiry, scopes and optionally a subset of the person's brands; it never reaches further than their live role. Needs a sign-in from the last minutes on the screen. The token is returned once.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.tokens.create
    MCP toolprofile_tokens_create
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsScreens
    StatusAvailable

    Input

    {
      name: string  // ≤ 80
      expiresAt?: string | null  // ISO date; empty takes the default lifetime.
      scopes: string[]  // ≤ 200 items
      brandIds?: string[]  // ≤ 200 items · default []
    }

    Output

    {
      token: string
      credential: {
        id: string  // uuid
        kind: string
        name: string
        prefix: string
        scopes: string[]
        brandIds: string[] | null
        createdAt: string
        expiresAt: string
        lastUsedAt: string | null
        revokedAt: string | null
        revokedSource: string | null
        legacy: boolean
        serviceAccountId: string | null
      }
    }

    profile.tokens.rotate · Rotate a personal token

    Issues a replacement for one of the person's personal tokens; the old one keeps working for the grace hours given. Needs a recent sign-in on the screen. The new token is returned once.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.tokens.rotate
    MCP toolprofile_tokens_rotate
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsScreens
    StatusAvailable

    Input

    {
      id: string  // uuid
      graceHours: integer  // 0–720
    }

    Output

    {
      token: string
      credential: {
        id: string  // uuid
        kind: string
        name: string
        prefix: string
        scopes: string[]
        brandIds: string[] | null
        createdAt: string
        expiresAt: string
        lastUsedAt: string | null
        revokedAt: string | null
        revokedSource: string | null
        legacy: boolean
        serviceAccountId: string | null
      }
    }

    profile.tokens.revoke · Revoke a personal token

    Ends one of the person's personal tokens now; anything using it stops working.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.tokens.revoke
    MCP toolprofile_tokens_revoke
    Scopeprofile.write
    Minimum roleself
    Human confirmationYes
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      id: string  // uuid
    }

    Output

    {
      ok: true
    }

    profile.marketing_consent.answer · Answer the news opt-in

    The person's own answer to the brand shell's «Do you want to receive news?» card: yes grants marketing consent, no withdraws it. The ledger stores the exact question, the button pressed and the request evidence. Only the person, from the app.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/profile.marketing_consent.answer
    MCP toolprofile_marketing_consent_answer
    Scopeprofile.write
    Minimum roleself
    Human confirmationNo
    DoorsScreens, Apps
    StatusAvailable

    Input

    {
      accepted: boolean
    }

    Output

    {
      ok: true
    }

    Updated on January 1, 1970

    PreviousWorkspaceNextBilling

    In this section

    • Errors
    • Permissions and roles
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    • Calendar
    Can't find what you need? Write to usWrite to usGo to the app
    © 2026 Nömad · Nömad documentationLinkedInInstagramThreadsFacebookTikTokYouTubeX
    Go to nomad.oooBack to top

    On this page

    • profile.time_zone.set · Set your time zone
    • profile.update · Edit your profile
    • profile.avatar.set · Set your avatar
    • profile.avatar.remove · Remove your avatar
    • profile.identity.update · Name and @username
    • profile.presence.touch · Presence heartbeat
    • profile.push_devices.test · Send a test push
    • profile.push_devices.remove · Remove a push device
    • profile.notifications.set_read · Mark notices read
    • profile.notifications.set_archived · Archive notices
    • profile.notifications.set_saved · Save notices
    • profile.notifications.snooze · Snooze notices
    • profile.notifications.read_all · Mark all read
    • profile.notifications.mark_seen · Notices seen
    • profile.notifications.mute_thread · Mute a thread
    • profile.notification_preferences.set · Change a notification preference
    • profile.notification_preferences.reset · Reset notification preferences
    • profile.notification_delivery.update · Notification delivery settings
    • profile.notification_pause.set · Do not disturb
    • profile.agent_approvals.decide · Decide an agent request
    • profile.tokens.create · Create a personal token
    • profile.tokens.rotate · Rotate a personal token
    • profile.tokens.revoke · Revoke a personal token
    • profile.marketing_consent.answer · Answer the news opt-in