Topics

List topics

List topics (issues) with filters, message counts, and authors. When embeddingSearch is provided, performs semantic search using vector similarity instead of keyword search. Semantic search finds topics by meaning, useful for queries like "users having trouble with authentication".

get/topics

Request

  • Base URL: https://api.modem.dev/v1
  • URL: https://api.modem.dev/v1/topics
  • Auth: HTTP bearer

Query parameters

view'v1' | 'v2'

Deprecated and ignored. Topics are always served from the current pipeline, whichever value is sent. Accepted so existing requests keep working; omit it in new integrations.

searchstring

Keyword search on title (max 100 chars). Wrap in double-quotes for exact token matching (e.g. "persona" matches the whole word and excludes "personal"). Ignored if embeddingSearch is provided.

embeddingSearchstring

Semantic search query using vector similarity. When provided, finds topics by meaning instead of keywords. Overrides the search parameter.

minSimilaritynumber

Minimum cosine similarity threshold for embeddingSearch (0-1, higher = more similar). Default 0.7.

categoriesstring[]

Filter topics by keywords/categories (OR logic: topic must have ANY of the listed categories). Case-insensitive. For v2 topics a category is a catalog keyword slug (see topics.filterOptions), matched through the topic's open keyword attribution.

excludeCategoriesstring[]

Exclude topics by keywords/categories (OR logic: topic must have NONE of the listed categories). Case-insensitive. For v2 topics a category is a catalog keyword slug.

issueTypesstring[]
excludeIssueTypesstring[]
sourcesstring[]

Filter topics by message sources (OR logic: topic must have messages from ANY listed source). Case-insensitive; duplicates are ignored.

excludeSourcesstring[]

Exclude topics by message sources (OR logic: topic must have NO messages from ANY listed source). Case-insensitive; duplicates are ignored.

endstring date-time required
startstring date-time required
sortBy'date' | 'groups' | 'lifecycle' | 'priority' | 'similarity'

Sort order. 'groups' sorts by the number of groups. Use 'similarity' with embeddingSearch for best results.

sortOrder'asc' | 'desc'
prioritiesstring[]
excludePrioritiesstring[]
lifecycleStatesstring[]

Filter topics by lifecycle state. "unknown" also matches topics with no lifecycle assessment.

companiesstring[]

Filter topics by company IDs (OR logic: topic must have messages from people associated with ANY listed company).

excludeCompaniesstring[]

Exclude topics by company IDs (OR logic: topic must have NO messages from people associated with ANY listed company).

sourceContainersstring[]

Filter topics by source container IDs (OR logic: topic must draw evidence from ANY listed container). v2 only.

excludeSourceContainersstring[]

Exclude topics by source container IDs (OR logic: topic must draw evidence from NONE of the listed containers). v2 only.

personsstring[]

Filter topics by person IDs (OR logic: topic must have messages from ANY listed person).

excludePersonsstring[]

Exclude topics by person IDs (OR logic: topic must have messages from NONE of the listed people).

ticketStatusesstring[]

Filter by linked ticket presence. "has_ticket" = has any linked ticket, "none" = no linked ticket.

excludeTicketStatusesstring[]

Exclude by linked ticket presence. "has_ticket" excludes topics with tickets, "none" excludes topics without tickets.

teamResponsestring[]

Filter by team response status. "not_responded" = no team member replied, "fully_responded" = team replied in all groups, "partially_responded" = team replied in some groups.

pageinteger
limitinteger

Response

OK

limitinteger required

The page size used for this response.

pageinteger required

The 1-based page number returned.

totalCountinteger required

Total number of items matching the query, across all pages.

Changes

No recorded changes to this operation across all 1 revision of this API.