API reference/Client logins
Change what a client login may do
Try itReplaces a client login's permissions (at least one). It applies the next time they open the editor.
PATCH
/api/v1/sites/{site_id}/logins/{login_id}Authentication
An API key as Authorization: Bearer or x-api-key. It needs the clients:write scope — add and edit clients; invite and remove client logins.
clients:writeChanges the draft or a recordIdempotency-Key optionalMCP tool: update_client_login
Parameters
Named placeholders go in the path; the rest in a JSON body.
site_idstringPath · required- The site's id.1 to 100 characters
login_idstringPath · required- The login's id.1 to 100 characters
permissionsarray of stringBody · required- What they may do: content.edit (Edit words and pictures), media.upload (Upload pictures), pages.manage (Add and arrange pages), design.edit (Change the design), blog.manage (Write blog posts), events.manage (Keep the events calendar), collections.manage (Keep the site's lists up to date), forms.view (Read form messages), seo.edit (Search settings), site.publish (Publish changes), store.manage (Run the online store), invoices.pay (See and pay invoices), donations.view (See donations), members.manage (Look after site members).
Response
200 with JSON on success (schema on the right). Errors use the standard envelope; a retry with the same Idempotency-Key gets the first answer back (how retries work).
curl -X PATCH 'https://websites.workflowcorp.com/api/v1/sites/SITE_ID/logins/LOGIN_ID' \
-H "Authorization: Bearer $WEBSITEBUDDY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"permissions":["content.edit","blog.manage"]}'{
"site_id": "SITE_ID",
"login_id": "LOGIN_ID",
"permissions": [
"content.edit",
"blog.manage"
]
}{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"client_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string"
}
},
"required": [
"id",
"email",
"name",
"permissions",
"client_id",
"created_at"
],
"additionalProperties": false
}