Skip to main content
Use the Cal ID API to manage who belongs to a team and what they can do. Every request is authenticated with a Bearer token, and you must use a team owner or admin API key to manage that team’s memberships. All requests go to the base URL https://api.cal.id and include an Authorization: Bearer calid_xxxxx header. Requests with a JSON body must also send Content-Type: application/json, or they are rejected with 415 Unsupported Media Type. Successful responses wrap the result in a JSON envelope. The /teams/* endpoints return success, data, message, and — on list endpoints — a top-level meta.pagination. Read the result out of data; never off the top level.
The envelope is not identical across the whole API — some endpoints omit meta, some omit message, and unknown routes do not use the envelope at all. See Response format.
A team is identified by a teamId, and each membership within it is identified by a membershipId.
Team members can hold one of three roles:
  • MEMBER — the default role for a newly added member.
  • ADMIN — can manage the team and its members.
  • OWNER — full control over the team.
1

Add a member

Add a user to the team by their userId. The role field is optional and defaults to MEMBER.
A successful create returns 201 and the new membership inside data, including the membershipId you need for the next two steps.
Response
The exact fields inside data are listed on Add a team member. Read the identifier out of data, not out of the request body you sent.
2

List members

Retrieve the team’s memberships. This endpoint pages with page and limit and returns a top-level meta.pagination.
Response
/teams/* list endpoints default to limit=10. A team with 25 members returns 10 unless you pass limit explicitly. The maximum is 100?limit=1000 is rejected with 400 — querystring/limit must be <= 100.
3

Change a role

Update a member’s role by their membershipId. For example, promote a member to ADMIN.
The updated membership comes back inside data.
Response
4

Remove a member

Remove a member from the team by their membershipId.