#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
| Role | Description |
|---|
owner | Full access. Can manage billing, delete the organization, and perform all admin actions. |
admin | Can manage members and resources. Cannot delete the organization or manage billing. |
member | Can manage resources (jobs, presets, origins). Cannot manage members. |
viewer | Read-only access to all resources. |
#List Memberships
List members of an organization with their user details. Requires viewer permission or higher.
POST /transcodely.v1.MembershipService/List
#Request
| Field | Type | Required | Description |
|---|
status | string | No | Filter by membership status: "active", "invited", or "suspended". |
pagination | object | No | Pagination parameters. See Pagination. |
#Response
| Field | Type | Description |
|---|
memberships | MembershipWithUser[] | List of memberships with user details. |
pagination | object | Pagination metadata. |
#MembershipWithUser object
| Field | Type | Description |
|---|
membership | Membership | The membership record. |
user_email | string | User’s email address. |
user_name | string | User’s display name. |
user_is_active | boolean | Whether the user account is active. |
#Membership object
| Field | Type | Description |
|---|
id | string | Unique identifier (e.g., "mem_a1b2c3d4e5"). |
user_id | string | User ID. |
org_id | string | Organization ID. |
role | string | One of: "owner", "admin", "member", "viewer". |
status | string | One of: "active", "invited", "suspended". |
invited_by | string | ID of the user who sent the invitation. Omitted if not applicable. |
invited_at | string | ISO 8601 timestamp of invitation. Omitted if not applicable. |
accepted_at | string | ISO 8601 timestamp of acceptance. Omitted if not applicable. |
created_at | string | ISO 8601 timestamp. |
updated_at | string | ISO 8601 timestamp. |
#Example
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
}
}
#Get Membership
Retrieve a specific membership by its ID. Requires viewer permission or higher.
POST /transcodely.v1.MembershipService/Get
#Request
| Field | Type | Required | Description |
|---|
id | string | Yes | Membership ID (e.g., "mem_a1b2c3d4e5"). |
#Response
| Field | Type | Description |
|---|
membership | MembershipWithUser | The requested membership with user details. |
#Example
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")
#Update Role
Change a member’s role within the organization. Requires admin permission. Cannot demote the last owner.
POST /transcodely.v1.MembershipService/UpdateRole
#Request
| Field | Type | Required | Description |
|---|
id | string | Yes | Membership ID. |
role | string | Yes | New role: "owner", "admin", "member", or "viewer". |
#Response
| Field | Type | Description |
|---|
membership | Membership | The updated membership. |
#Example
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": {
"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"
}
}
#Remove Member
Remove a member from the organization. Requires admin permission. Cannot remove the last owner.
POST /transcodely.v1.MembershipService/Remove
#Request
| Field | Type | Required | Description |
|---|
id | string | Yes | Membership ID. |
#Response
Empty response on success.
#Example
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")