Skip to content

Documentation

Change a role

PATCH/v1/members/{member}Team

Changes a member's role, or an open invite's. It applies from their next request.

Parameters

ParameterTypeRequiredDescription
memberstring, in the pathrequiredThe member's or invite's id.

Request body

JSON, sent with Content-Type: application/json.

FieldTypeRequiredDescription
roleadmin | editor | viewerrequiredviewer looks around, editor changes links and files, admin also manages the account: domains, people, keys, webhooks and defaults.

Example request

Terminal
curl "https://snip.link/v1/members/2b7e9c41-5d3a-4f8e-a1c6-7e0d9b2f4a18" \
  -X PATCH \
  -H "Authorization: Bearer $SNIP_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Example response

Response
{
  "member": {
    "id": "2b7e9c41-5d3a-4f8e-a1c6-7e0d9b2f4a18",
    "email": "sam@example.com",
    "role": "editor",
    "status": "joined",
    "invited_at": "2026-10-20T12:00:00.000Z",
    "joined_at": "2026-10-20T12:14:09.000Z",
    "expires_at": null
  }
}

Response fields

FieldTypeDescription
memberMember
member.idstring
member.emailstring
member.roleadmin | editor | viewerviewer looks around, editor changes links and files, admin also manages the account: domains, people, keys, webhooks and defaults.
member.statusjoined | invited | expiredjoined: works in the account. invited: the invite is open. expired: nobody accepted it in time; invite again to renew it.
member.invited_atstring
member.joined_atstring, null
member.expires_atstring, nullWhen an open invite lapses. Null once joined.

Errors

StatusMeaning
400The body or query is invalid. details names each field.
401The API key is missing, malformed or revoked.
403The plan does not include this. details.upgrade names the plan that does.
404No one by that id in this account.
429Either the key exceeded its requests-per-second limit (honor Retry-After), or a daily or plan quota is used up (details.reason).

Back to getting started