Search Documentation
Search across all documentation pages
Memberships

Memberships

Memberships represent a user’s role and access within an organization. Each membership defines what a user can do — from read-only viewing to full owner access.

Base path: transcodely.v1.MembershipService Requires: X-Organization-ID header on all endpoints.


Roles

RoleDescription
ownerFull access. Can manage billing, delete the organization, and perform all admin actions.
adminCan manage members and resources. Cannot delete the organization or manage billing.
memberCan manage resources (jobs, presets, origins). Cannot manage members.
viewerRead-only access to all resources.

The Membership object

A membership links a user to an organization with a role and a status. Every field below describes the membership record itself.

AttributeTypeDescription
idstringUnique identifier (e.g., "mem_a1b2c3d4e5").
user_idstringUser ID.
org_idstringOrganization ID.
rolestringOne of: "owner", "admin", "member", "viewer".
statusstringOne of: "active", "invited", "suspended".
invited_bystringID of the user who sent the invitation. Omitted if not applicable.
invited_atstringISO 8601 timestamp of invitation. Omitted if not applicable.
accepted_atstringISO 8601 timestamp of acceptance. Omitted if not applicable.
created_atstringISO 8601 timestamp.
updated_atstringISO 8601 timestamp.

The List and Retrieve endpoints return each record wrapped in a MembershipWithUser object, which adds user_email, user_name, and user_is_active alongside the nested membership — so responses carry the member’s identity without a second lookup.

{
  "membership": {
    "id": "mem_f6g7h8i9j0",
    "user_id": "usr_q2w3e4r5t6",
    "org_id": "org_f6g7h8i9j0",
    "role": "member",
    "status": "active",
    "invited_by": "usr_a1b2c3d4e5",
    "invited_at": "2025-01-20T14:00:00Z",
    "accepted_at": "2025-01-20T15:30:00Z",
    "created_at": "2025-01-20T14:00:00Z",
    "updated_at": "2025-01-20T15:30:00Z"
  },
  "user_email": "bob@acme.com",
  "user_name": "Bob Johnson",
  "user_is_active": true
}

List memberships

List members of an organization with their user details. Requires viewer permission or higher.

POST /transcodely.v1.MembershipService/List

Parameters

ParameterTypeRequiredDescription
statusstringNoFilter by membership status: "active", "invited", or "suspended".
paginationobjectNoPagination parameters. See Pagination.

Returns

Returns a list of Membership objects with user details and pagination metadata.

curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/List 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: {{ORG_ID}}" 
  -H "Content-Type: application/json" 
  -d '{
    "status": "active",
    "pagination": {"limit": 20}
  }'
for await (const m of client.memberships.list({
  status: MembershipStatus.ACTIVE,
  pagination: { limit: 20 },
}).autoPage()) {
  console.log(m.membership?.id, m.userEmail);
}
for m in client.memberships.list(limit=20).auto_paging_iter():
    print(m.membership.id, m.user_email)
iter := client.Memberships.List(ctx, &transcodely.MembershipListParams{
	Status:     transcodely.MembershipStatusActive.Enum(),
	Pagination: &transcodely.PaginationRequest{Limit: 20},
})
for iter.Next() {
	m := iter.Current()
	fmt.Println(m.GetMembership().GetId(), m.GetUserEmail())
}
if err := iter.Err(); err != nil {
	log.Fatal(err)
}
{
  "memberships": [
    {
      "membership": {
        "id": "mem_a1b2c3d4e5",
        "user_id": "usr_a1b2c3d4e5",
        "org_id": "org_f6g7h8i9j0",
        "role": "owner",
        "status": "active",
        "created_at": "2025-01-10T08:00:00Z",
        "updated_at": "2025-01-10T08:00:00Z"
      },
      "user_email": "jane@acme.com",
      "user_name": "Jane Doe",
      "user_is_active": true
    },
    {
      "membership": {
        "id": "mem_f6g7h8i9j0",
        "user_id": "usr_q2w3e4r5t6",
        "org_id": "org_f6g7h8i9j0",
        "role": "member",
        "status": "active",
        "invited_by": "usr_a1b2c3d4e5",
        "invited_at": "2025-01-20T14:00:00Z",
        "accepted_at": "2025-01-20T15:30:00Z",
        "created_at": "2025-01-20T14:00:00Z",
        "updated_at": "2025-01-20T15:30:00Z"
      },
      "user_email": "bob@acme.com",
      "user_name": "Bob Johnson",
      "user_is_active": true
    }
  ],
  "pagination": {
    "next_cursor": "",
    "total_count": 2
  }
}

Retrieve a membership

Retrieve a specific membership by its ID. Requires viewer permission or higher.

POST /transcodely.v1.MembershipService/Get

Parameters

ParameterTypeRequiredDescription
idstringYesMembership ID (e.g., "mem_a1b2c3d4e5").

Returns

Returns a Membership object with user details.

curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/Get 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: {{ORG_ID}}" 
  -H "Content-Type: application/json" 
  -d '{"id": "mem_a1b2c3d4e5"}'
const m = await client.memberships.get("mem_a1b2c3d4e5");
console.log(m.membership?.role, m.userEmail);
m = client.memberships.get("mem_a1b2c3d4e5")
print(m.membership.role, m.user_email)
m, err := client.Memberships.Get(ctx, "mem_a1b2c3d4e5")
{
  "membership": {
    "membership": {
      "id": "mem_a1b2c3d4e5",
      "user_id": "usr_a1b2c3d4e5",
      "org_id": "org_f6g7h8i9j0",
      "role": "owner",
      "status": "active",
      "created_at": "2025-01-10T08:00:00Z",
      "updated_at": "2025-01-10T08:00:00Z"
    },
    "user_email": "jane@acme.com",
    "user_name": "Jane Doe",
    "user_is_active": true
  }
}

Update a membership role

Change a member’s role within the organization. Requires admin permission. Cannot demote the last owner.

POST /transcodely.v1.MembershipService/UpdateRole

Parameters

ParameterTypeRequiredDescription
idstringYesMembership ID.
rolestringYesNew role: "owner", "admin", "member", or "viewer".

Returns

Returns the updated Membership object with user details.

curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/UpdateRole 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: {{ORG_ID}}" 
  -H "Content-Type: application/json" 
  -d '{
    "id": "mem_f6g7h8i9j0",
    "role": "admin"
  }'
const membership = await client.memberships.updateRole({
  id: "mem_f6g7h8i9j0",
  role: MembershipRole.ADMIN,
});
membership = client.memberships.update_role(
    id="mem_f6g7h8i9j0",
    role="admin",
)
membership, err := client.Memberships.UpdateRole(ctx, "mem_f6g7h8i9j0", transcodely.MembershipRoleAdmin)
{
  "membership": {
    "membership": {
      "id": "mem_f6g7h8i9j0",
      "user_id": "usr_q2w3e4r5t6",
      "org_id": "org_f6g7h8i9j0",
      "role": "admin",
      "status": "active",
      "invited_by": "usr_a1b2c3d4e5",
      "invited_at": "2025-01-20T14:00:00Z",
      "accepted_at": "2025-01-20T15:30:00Z",
      "created_at": "2025-01-20T14:00:00Z",
      "updated_at": "2025-02-28T15:00:00Z"
    },
    "user_email": "bob@acme.com",
    "user_name": "Bob Johnson",
    "user_is_active": true
  }
}

Remove a member

Remove a member from the organization. Requires admin permission. Cannot remove the last owner.

POST /transcodely.v1.MembershipService/Remove

Parameters

ParameterTypeRequiredDescription
idstringYesMembership ID.

Returns

Returns an empty response on success.

curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/Remove 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: {{ORG_ID}}" 
  -H "Content-Type: application/json" 
  -d '{"id": "mem_f6g7h8i9j0"}'
await client.memberships.remove("mem_f6g7h8i9j0");
client.memberships.remove("mem_f6g7h8i9j0")
err := client.Memberships.Remove(ctx, "mem_f6g7h8i9j0")
{}