Account management

Use these endpoints to manage the signed-in consumer account: profile, password, email addresses, sign-in methods, preferences, and account activity.

Authentication

Send a consumer-user access token with every request:

Authorization: Bearer <ACCESS_TOKEN>

Account routes always operate on the signed-in user; callers cannot select a different user ID. If the session is DPoP- or fingerprint-bound, include the companion headers from the authorization guide.

Profile

Route Required fields What it does
/account/me/get None Returns the current profile.
/account/me/set None Creates or partially updates the current profile. Omitted fields are unchanged.
/account/me/password new, confirm, auth.pass Changes the account password and revokes related sessions.

/account/me/set accepts only these optional profile fields:

Field Description
display_name Display name.
avatar Avatar URL or application-supported avatar value.
bio Profile biography.
locale Preferred locale.
timezone Preferred time zone.
pronouns Pronouns.
website Website URL.
social Social-profile data.
settings Application-specific profile settings.

An account without a profile is a successful read; it returns the comment no profile found. ready for input instead of an error.

Update a profile

curl -sS https://api.user.m7.org/api/v2/account/me/set \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "display_name": "Alice Example",
    "bio": "Working on M7 integrations",
    "locale": "en-US",
    "timezone": "UTC"
  }'
{
  "status": 1,
  "comment": "OK",
  "data": {
    "display_name": "Alice Example",
    "bio": "Working on M7 integrations",
    "locale": "en-US",
    "timezone": "UTC"
  }
}

Change a password

Use auth.pass for the current password. The API also accepts current_password, current, pass, and password; use auth.pass in new integrations.

curl -sS https://api.user.m7.org/api/v2/account/me/password \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "auth": { "pass": "CURRENT_PASSWORD" },
    "new": "NEW_PASSWORD",
    "confirm": "NEW_PASSWORD"
  }'

Success returns comment: "CHANGED". new and confirm must match.

Email addresses

Email routes are limited to email records owned by the signed-in user. Where a route accepts an email lookup, send either the record id or the address in email.

Route Required fields Notes
/account/me/email/list None Lists the user's email records.
/account/me/email/get id or email optional Omit both for current primary-oriented detail.
/account/me/email/add email Optional primary. Starts confirmation unless already verified.
/account/me/email/setPrimary id or email The selected email must be verified.
/account/me/email/delete id or email The last active email cannot be deleted.
/account/me/email/confirm/send id or email Starts a confirmation request.
/account/me/email/confirm/resend id or email, confirmation_id job_id and job are aliases for confirmation_id.
/account/me/email/confirm/consume id or email, confirmation_id, code secret is an accepted alias for code.

The add, confirm/send, confirm/resend, and confirm/consume responses place confirmation details in data.email_confirmation.

Request a confirmation

curl -sS https://api.user.m7.org/api/v2/account/me/email/confirm/send \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{ "id": "EMAIL_RECORD_UUID" }'
{
  "status": 1,
  "comment": "CONFIRMATION REQUESTED",
  "data": {
    "email_confirmation": {
      "confirmation_id": "CONFIRMATION_UUID"
    }
  }
}

Other successful confirmation comments are EMAIL ALREADY VERIFIED, CONFIRMATION RESENT, and EMAIL VERIFIED. Setting the existing primary returns EMAIL ALREADY PRIMARY; changing it returns PRIMARY EMAIL UPDATED.

Sign-in methods

These routes start hosted browser flows or return the account's available sign-in methods. A successful start response includes data.redirect_url; open that URL in the browser to continue the flow.

Route Required fields Important response fields
/account/me/account-binding/start None success, redirect_url
/account/me/delegated-login/bind/start None success, redirect_url
/account/me/delegated-login/unlink/start None success, redirect_url
/account/me/federated-identities/list None success, delegated, identities
/account/me/federated-identities/unlink/start identity_id success, redirect_url

data.delegated reports the M7 username-and-password sign-in option with username, bound, verified, unlink_available, and, when removal is blocked, unlink_unavailable_reason.

Each item in data.identities can include identity_id, vendor, provider_name, handle, emails, and unlink_available.

Start account binding

curl -sS https://api.user.m7.org/api/v2/account/me/account-binding/start \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{}'
{
  "status": 1,
  "comment": "OK",
  "data": {
    "success": true,
    "redirect_url": "https://sso.user.m7.org/..."
  }
}

Preferences

Route Required fields Response
/account/preferences/get None Stored preference map; success comment GET.
/account/preferences/set At least one supported preference Updated preference map; success comment SET.

The supported preference keys are dotted JSON keys:

Field Type
display.dark_mode Boolean
display.developer_mode Boolean

Set preferences

curl -sS https://api.user.m7.org/api/v2/account/preferences/set \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "display.dark_mode": true,
    "display.developer_mode": false
  }'
{
  "status": 1,
  "comment": "SET",
  "data": {
    "display.dark_mode": true,
    "display.developer_mode": false
  }
}

Account activity

These routes return activity owned by the signed-in user.

Route Required fields Optional fields Notes
/account/me/session/search None Pagination Defaults to scope: "user" and status: "active". The caller cannot change the user or scope.
/account/me/session/view id None id is the 64-character session identifier. Returns lifecycle fields and decoded public_data.
/account/me/auth/request_log/search None Pagination, client_id, tenant_id, request_kind, outcome, error_code, remote_ip Searches the caller's authentication-request history.
/account/me/auth/request_log/view id None Returns one owned authentication-request record.

Use the shared pagination contract for searches.