Teams in HOT Tasking Manager are named groups of contributors that belong to a single organisation. They can be assigned to mapping projects with a specific role (Mapper, Validator, or Project Manager), and their membership can be open, by-request, or invite-only. The endpoints below cover the full lifecycle of a team: creation, retrieval, updates, deletion, membership management, and project assignments.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hotosm/tasking-manager/llms.txt
Use this file to discover all available pages before exploring further.
Team CRUD
List Teams
GET /api/v2/teams/
Returns all teams visible to the authenticated user. Results can be filtered by team name, organisation, or by a user’s relationship to the team (member, manager, or pending request). Supports optional pagination.
Authentication: Required
Query Parameters
Filter teams by name (partial match).
User ID — returns only teams where this user is an active member.
User ID — returns only teams where this user holds the MANAGER role.
User ID — returns teams to which this user has submitted a pending join request.
Filter by team role on a project (e.g.
MAPPER, VALIDATOR, PROJECT_MANAGER).Filter by organisation ID.
When
true, the response omits the full members array.When
false, members are limited to 10 per role.Enable paginated results.
Page number when pagination is enabled.
Number of results per page when pagination is enabled.
200 OK
Create a Team
POST /api/v2/teams/
Creates a new team under an organisation. The authenticated user must be an admin or an organisation manager to create a team.
Authentication: Required (admin or org manager)
Request Body
Display name for the team.
ID of the organisation this team belongs to.
A short description of the team’s purpose.
Team visibility. One of
PUBLIC or PRIVATE.How users can join the team. One of
ANY, BY_REQUEST, or BY_INVITE.201 Created
Get Team by ID
GET /api/v2/teams/{team_id}/
Retrieves full details for a single team, including its members list unless omitMemberList=true is passed.
Authentication: Required
Path Parameters
The unique numeric team ID.
Set to
true to exclude member details from the response.200 OK
Update a Team
PATCH /api/v2/teams/{team_id}/
Updates one or more fields of an existing team. The requesting user must be a team manager or an organisation admin.
Authentication: Required (team manager or org admin)
Path Parameters
The unique numeric team ID.
New name for the team.
URL of a logo image.
Updated description.
One of
ANY, BY_REQUEST, or BY_INVITE.One of
PUBLIC or PRIVATE.Full replacement list of team members. Each item must include
username and function (MANAGER or MEMBER).200 OK
Delete a Team
DELETE /api/v2/teams/{team_id}/
Permanently deletes a team. The team must not have any associated projects.
Authentication: Required (team manager)
Path Parameters
The unique numeric team ID.
200 OK — team deleted successfully.
Error Responses
| Status | Meaning |
|---|---|
401 | Missing or invalid authentication token |
403 | User is not a team manager |
404 | Team not found |
Team Actions
Request to Join a Team
POST /api/v2/teams/{team_id}/actions/join/
Submits a join request for the authenticated user. Behaviour depends on the team’s joinMethod: immediate membership for ANY, or a pending request for BY_REQUEST.
Authentication: Required
Path Parameters
ID of the team to join.
200 OK
Accept or Reject a Join Request
PATCH /api/v2/teams/{team_id}/actions/join/
Allows a team manager to accept or reject a pending join request, or allows a user to respond to an invitation.
Authentication: Required
Path Parameters
ID of the team.
Username of the user whose request is being acted upon.
The action type. Use
join-response when a manager is acting on a join request, or invite-response when a user is responding to an invitation.Either
accept or reject.The role to assign if accepting. One of
MANAGER or MEMBER.200 OK
Only team managers can respond to
join-response requests. Any authenticated user can respond to invite-response requests directed at them.Leave a Team
POST /api/v2/teams/{team_id}/actions/leave/
Removes a user from the team. A team manager can remove any member; a regular member can only remove themselves.
Authentication: Required
Path Parameters
ID of the team.
Username of the member to remove.
200 OK
Add a Member Directly
POST /api/v2/teams/{team_id}/actions/add/
Allows a team manager to add a user directly without requiring a join request.
Authentication: Required (team manager)
Path Parameters
ID of the team.
Username of the user to add.
Role to assign:
MANAGER or MEMBER. Defaults to MEMBER if omitted.200 OK
Message All Team Members
POST /api/v2/teams/{team_id}/actions/message-members/
Sends an in-app message to every active member of the team. The operation is dispatched as a background task.
Authentication: Required (team manager)
Path Parameters
ID of the team.
Subject line of the message.
Body of the message. Must not be empty.
200 OK
Download Join Requests (CSV)
GET /api/v2/teams/join_requests/
Downloads a CSV file of users who have submitted join requests (inactive members) for a given team.
Authentication: Required
Query Parameters
ID of the team to query.
text/csv file with columns: Username, Date Joined (UTC), Team Name.
Project–Team Associations
List Teams for a Project
GET /api/v2/projects/{project_id}/teams/
Returns all teams currently assigned to a project, including each team’s role.
Authentication: Required
Path Parameters
ID of the project.
200 OK
Assign a Team to a Project
POST /api/v2/projects/{project_id}/teams/{team_id}/
Assigns a team to a project with a specified role. The requesting user must be both a team manager and a project manager.
Authentication: Required (team manager + project manager)
Path Parameters
ID of the project.
ID of the team to assign.
The role for the team on this project. One of
MAPPER, VALIDATOR, or PROJECT_MANAGER.201 Created
Update a Team’s Role on a Project
PATCH /api/v2/projects/{team_id}/projects/{project_id}/
Changes the role of an already-assigned team on a project. The requesting user must be a project manager.
Authentication: Required (project manager)
Path Parameters
ID of the team.
ID of the project.
New role for the team. One of
MAPPER, VALIDATOR, or PROJECT_MANAGER.201
Remove a Team from a Project (via project manager)
DELETE /api/v2/projects/{team_id}/projects/{project_id}/
Removes a team from a specific project. The caller must be a project manager.
Authentication: Required (project manager)
Path Parameters
ID of the team to remove.
ID of the project.
200 OK
Remove a Team from a Project (via team manager)
DELETE /api/v2/teams/projects/{project_id}/teams/{team_id}/
Unlinks a team from a specific project. The caller must be a team manager.
Authentication: Required (team manager)
Path Parameters
ID of the project.
ID of the team to remove.
200 OK
Unlink a Team from All Projects
DELETE /api/v2/teams/projects/teams/{team_id}/unlink
Removes the specified team from every project it is currently assigned to. All unlinking operations are executed inside a single database transaction — if any check fails, no changes are committed.
Authentication: Required (team manager)
Path Parameters
ID of the team to unlink everywhere.
200 OK
Bulk Unlink Teams from Projects
DELETE /api/v2/teams/projects/unlink
Accepts a list of project/team pairs and removes each assignment in a single atomic transaction. All permission checks run before any database write.
Authentication: Required (team manager for every team in the list)
Request Body
Array of objects, each containing
project_id (integer) and team_id (integer).200 OK
Data Models
TeamVisibility — PUBLIC | PRIVATE
TeamJoinMethod — ANY | BY_REQUEST | BY_INVITE
TeamMemberFunctions — MANAGER | MEMBER
TeamRoles (project assignments) — READ_ONLY | MAPPER | VALIDATOR | PROJECT_MANAGER