Skip to main content

Work Members

Work Members lets you invite collaborators to work on a work together. Each member is assigned a role that controls what they can do — from full management down to read-only access.

Roles​

RoleDescriptionAssignable?
OwnerFull access — reserved for the work creatorNo (implicit)
ManagerCan invite/remove members, edit content, trigger generationYes
EditorCan edit content and items, cannot manage membersYes
ViewerRead-only accessYes

The work creator is always the Owner and does not appear in the members list. Ownership cannot be transferred.

Permission Matrix​

ActionOwnerManagerEditorViewer
View work, items, and taxonomyYesYesYesYes
View member listYesYesYesYes
Edit content (items, taxonomy, settings)YesYesYes—
Trigger AI generationYesYesYes—
Manage schedules and advanced promptsYesYesYes—
Invite and remove membersYesYes——
Update member rolesYesYes——
Delete the workYes———
Leave the work—YesYesYes

How Invitation Works​

  1. A Manager or Owner calls the invite endpoint with the collaborator's email and desired role.
  2. The platform looks up the email — the user must already have an Ever Works account.
  3. A membership record is created immediately (no pending/accept flow).
  4. The invitee receives an email notification with the work name, their role, and a link to the work.
info

Invitations are direct — the invited user becomes a member as soon as the API call succeeds. There is no invitation token or acceptance step.

API​

All endpoints require JWT authentication. Base path: /api/works/:workId/members

List Members​

MethodEndpointDescription
GET/api/works/:id/membersList all members and the owner
curl http://localhost:3100/api/works/<work-id>/members \
-H "Authorization: Bearer <token>"

Response:

{
"status": "success",
"members": [
{
"id": "<membership-uuid>",
"userId": "<user-uuid>",
"username": "alice",
"email": "alice@example.com",
"role": "editor",
"invitedBy": { "id": "<user-uuid>", "username": "bob" },
"createdAt": "2026-02-15T10:00:00.000Z"
}
],
"owner": {
"id": "<user-uuid>",
"username": "bob",
"email": "bob@example.com"
}
}

The owner field always shows the work creator. The members array contains only explicit membership records (the owner is not included).

Invite a Member​

MethodEndpointDescription
POST/api/works/:id/membersInvite a user by email

Required role: Manager or Owner

curl -X POST http://localhost:3100/api/works/<work-id>/members \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"role": "editor"
}'

Request body:

FieldTypeRequiredDescription
emailstringYesEmail of the user to invite (must have an existing account)
rolestringYesmanager, editor, or viewer

Errors:

StatusReason
400Role is owner or invalid
400Email belongs to the work creator
400User is already a member
404No registered user found for that email

Get Member​

MethodEndpointDescription
GET/api/works/:id/members/:memberIdGet a single member's details

Update Member Role​

MethodEndpointDescription
PUT/api/works/:id/members/:memberIdChange a member's role

Required role: Manager or Owner

curl -X PUT http://localhost:3100/api/works/<work-id>/members/<member-id> \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "role": "manager" }'

Remove a Member​

MethodEndpointDescription
DELETE/api/works/:id/members/:memberIdRemove a member from the work

Required role: Manager or Owner

curl -X DELETE http://localhost:3100/api/works/<work-id>/members/<member-id> \
-H "Authorization: Bearer <token>"

Leave a Work​

MethodEndpointDescription
POST/api/works/:id/members/leaveLeave a work you are a member of
curl -X POST http://localhost:3100/api/works/<work-id>/members/leave \
-H "Authorization: Bearer <token>"
warning

The work creator (Owner) cannot leave their own work. Only invited members can use this endpoint.

  • Works API — Full endpoint reference including member management
  • Authentication — User accounts and JWT authentication