teams
Search teams
Purpose
Performs a filtered search over teams using a POST request. Use this endpoint for batch lookups by IDs, names, or handles when query string filters are insufficient.
Request Format
Uses structured filter and search objects.
Key Features
- filter.id: Filter by team UUIDs (OR logic, max 100)
- filter.fields.name: Filter by team name, case-insensitive (single string or array, OR logic)
- filter.fields.handle: Filter by team handle, case-insensitive (single string or array, OR logic)
- search.query: Full-text search on team name and handle (case-insensitive partial match)
- Returns the same response format as GET /v2/teams
Filter Logic
- Multiple values within a single filter use OR logic (e.g., filter.fields.name: ["A", "B"] returns teams named A or B)
- Different filter types and search use AND logic (e.g., filter AND search = intersection)
- Empty request returns all teams (same as GET /v2/teams)
Important Notes
- Each filter array accepts at most 100 items; exceeding this returns a 400 error
- Pagination uses cursor-based navigation via pageCursor query parameter
post/teams/search
Query parameters
pageCursorstring
Cursor for pagination.
Request body
Example request
{
"data": {
"filter": {
"id": "123e4567-e89b-12d3-a456-426614174000"
}
}
}Response
A paginated list of teams
Example response
{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"type": "team",
"links": {
"self": "https://api.productboard.com/v2/teams/123e4567-e89b-12d3-a456-426614174000",
"members": "https://api.productboard.com/v2/teams/123e4567-e89b-12d3-a456-426614174000/members",
"html": "https://example.productboard.com/settings/teams/12"
},
"fields": {
"name": "Product Team",
"handle": "productteam",
"description": "Team responsible for product development",
"avatarUrl": "https://cdn.productboard.com/teams/avatars/123/medium.png"
},
"createdAt": "2025-01-01T10:00:00Z",
"updatedAt": "2025-01-15T14:30:00Z"
}
]
}