Skip to content

Teams & Collaboration

Base URL: https://api.inboxical.com/v1


POST /teams

Request body

FieldTypeRequiredDescription
namestringYesTeam name

Example

Terminal window
curl -X POST https://api.inboxical.com/v1/teams \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Backend QA" }'

Response 201

{
"id": "team_abc123",
"name": "Backend QA",
"owner_id": "user_xyz",
"members": [
{
"user_id": "user_xyz",
"user_name": "Jane Doe",
"user_email": "[email protected]",
"role": "owner",
"joined_at": "2026-03-21T12:00:00Z"
}
],
"created_at": "2026-03-21T12:00:00Z"
}

The creating user is automatically added as the team owner.

Errors

StatusReason
400Team name is required
403Plan does not support teams, or team limit reached

GET /teams

Returns all teams where the authenticated user is an owner or member.

Terminal window
curl https://api.inboxical.com/v1/teams \
-H "Authorization: Bearer $JWT_TOKEN"

Response 200 — an array of team objects (same shape as the create response).


GET /teams/:id

Returns a single team with its members. You must be a member of the team to access it.

Terminal window
curl https://api.inboxical.com/v1/teams/team_abc123 \
-H "Authorization: Bearer $JWT_TOKEN"

PUT /teams/:id

Renames a team. Owner only.

Request body

FieldTypeRequiredDescription
namestringYesNew team name
Terminal window
curl -X PUT https://api.inboxical.com/v1/teams/team_abc123 \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Frontend QA" }'

Errors

StatusReason
403Only the team owner can update the team

DELETE /teams/:id

Permanently deletes the team and removes all member associations. Inboxes previously assigned to the team are unlinked but not deleted. Owner only.

Terminal window
curl -X DELETE https://api.inboxical.com/v1/teams/team_abc123 \
-H "Authorization: Bearer $JWT_TOKEN"

Response 200

{
"message": "Team deleted"
}

POST /teams/:id/invite

Sends an invite to a user by email. Owner or admin only.

Request body

FieldTypeRequiredDescription
emailstringYesEmail address to invite
rolestringNo"member" (default) or "admin"

Example

Terminal window
curl -X POST https://api.inboxical.com/v1/teams/team_abc123/invite \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "email": "[email protected]", "role": "admin" }'

Response 201

{
"id": "invite_abc123",
"token": "raw-invite-token...",
"email": "[email protected]",
"role": "admin",
"expiresAt": "2026-03-28T12:00:00Z"
}

Invite tokens expire after 7 days.

Errors

StatusReason
403Caller is not an owner/admin, or member limit reached
409User is already a member, or an active invite already exists

POST /teams/invites/accept

Accepts a team invite using the token from the invite response. The authenticated user’s email must match the invite email.

Request body

FieldTypeRequiredDescription
tokenstringYesInvite token
Terminal window
curl -X POST https://api.inboxical.com/v1/teams/invites/accept \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "token": "raw-invite-token..." }'

Response 200 — returns the full team object with members.

Errors

StatusReason
400Invalid or expired invite token
403Invite was sent to a different email
409Already a member of this team

DELETE /teams/:id/members/:userId

Removes a member from the team. Owner or admin only. The team owner cannot be removed.

Terminal window
curl -X DELETE https://api.inboxical.com/v1/teams/team_abc123/members/user_bob \
-H "Authorization: Bearer $JWT_TOKEN"

Response 200

{
"message": "Member removed"
}

Errors

StatusReason
400Cannot remove the team owner
403Caller is not an owner or admin
404Team or member not found

RolePermissions
ownerFull control — update team, invite, remove members, delete team
adminInvite and remove members
memberAccess shared team resources

PlanMax teamsMax members per team
Free00
Starter13
Pro510
BusinessUnlimitedUnlimited