Members

Update a member's details

Updates one or more fields on a member. At least one field must be provided in the request body.

You can change a member's email, displayName, paid status, or status. Setting status to 'blocked' prevents the member from accessing the site. Setting it back to 'active' restores access.

The accessGroups field in the response is read-only — to manage group membership, use the Group Members endpoints (addGroupMember, removeGroupMember).

Returns 409 Conflict if the new email conflicts with an existing member on this site.

PATCH /members/{memberId}

Update a member's details

curl --request PATCH \
  --url 'https://api.sotion.so/api/v1/members/{MEMBERID}' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "key": "value"
}'
{
  "data": {
    "id": "<uuid>",
    "email": "<email>",
    "displayName": "<string>",
    "status": "active",
    "verified": true,
    "paid": true,
    "registeredAt": "<date-time>",
    "lastLoginAt": "<date-time>",
    "createdAt": "<date-time>",
    "updatedAt": "<date-time>",
    "accessGroups": [
      {}
    ]
  }
}

Member updated.

Authorizations

  • Authorization string required header

    Per-site API key (prefix: so_...). Each key is scoped to exactly one Sotion site — the site context is determined entirely by the key. No site ID is needed in any URL. Pass as: Authorization: Bearer so_...

Path Parameters

  • memberId string (uuid) required

    UUID of the member. Get member IDs from listMembers or createMember responses.

Request Body

application/json
  • email string (email)

    New email address. Will be normalized to lowercase. Returns 409 if it conflicts with another member.

  • displayName string nullable

    New display name, or null to clear.

  • paid boolean

    Update the paid status.

  • status string enum enum

    Set to 'active' to allow access or 'blocked' to deny access. Allowed values: active, blocked.

Response

application/json
  • X-RateLimit-Limit integer response header

    Maximum requests allowed in the current window.

  • X-RateLimit-Remaining integer response header

    Requests remaining in the current window.

  • X-RateLimit-Reset integer response header

    Unix timestamp (seconds) when the rate limit window resets.

  • X-Request-Id string (uuid) response header

    Unique request identifier for support and debugging.

  • data allOf
    + Show Child Attributes
    • id string (uuid) allOf

      Unique identifier (UUID) for the member.

    • email string (email) allOf

      Member's email address (normalized to lowercase).

    • displayName string allOfnullable

      Display name shown to the member, null if not set.

    • status string enum allOfenum

      'active' means the member can access the site. 'blocked' means the member is denied access. Allowed values: active, blocked.

    • verified boolean allOfnullable

      Whether the member has verified their email by clicking a login link. Null if unknown.

    • paid boolean allOfnullable

      Whether this member is marked as a paying customer. Set manually or via the API.

    • registeredAt string (date-time) allOfnullable

      When the member first registered (clicked a login link or was added).

    • lastLoginAt string (date-time) allOfnullable

      When the member last logged in via a login link.

    • createdAt string (date-time) allOfnullable

      When the member record was created.

    • updatedAt string (date-time) allOfnullable

      When the member record was last modified.

    • accessGroups[] object allOfarray

      List of access groups this member belongs to. Only included in getMember and createMember responses, NOT in listMembers.

      + Show Child Attributes
      • id string (uuid)

        UUID of the access group.

      • name string

        Name of the access group.