Topics

Update topic

Update a single topic. Supports changing priority, lifecycle state, archiving (archived=true), and unarchiving (archived=false). At least one field must be provided. issueType and keywords are derived by the topic pipeline and cannot be set; sending either returns 400. A topic archived in the v1 to v2 migration returns 404 with data.reason archived_in_v1_to_v2_migration.

patch/topics/{topicId}

Request

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

Path parameters

string uuid required
OR
string uuid required

Headers

Idempotency-Keystring

Replays a successful mutating request for 24 hours. Reuse with a different payload returns 409.

Request body

archivedboolean

Set to true to archive the topic, false to unarchive it.

archivedReasonstring

Optional reason for archiving. Only used when archived=true.

issueType'bug_report' | 'complaint' | 'discussion' | 'feature_request' | 'praise' nullable

Classification for the topic as a type of issue.

keywordsstring[]

Not supported: the topic pipeline derives the keywords. Sending this field returns 400.

lifecycleState'completed' | 'dismissed' | 'in_progress' | 'open'

Update the topic lifecycle state. Valid values: open, in_progress, completed, dismissed. The unknown state is AI-assessed and cannot be set directly.

priority'default' | 'high' | 'low' | 'very_high' | 'very_low'

Update the topic priority. Valid values: very_low, low, default, high, very_high.

Response

OK

archivedAtstring date-time nullable

Timestamp when the topic was archived.

archivedReasonstring nullable required

Optional reason for archiving.

createdAtstring date-time
eventCountinteger required

Number of events grouped under this topic.

issueType'bug_report' | 'complaint' | 'discussion' | 'feature_request' | 'praise' nullable required

Classification for the topic as a type of issue.

keywordsstring[] required

Keywords associated with the topic.

lifecycleState'completed' | 'dismissed' | 'in_progress' | 'open' | 'unknown' nullable required

LLM-assessed lifecycle state for a topic.

lifecycleStateConfidencenumber nullable required

Confidence for the most recent lifecycle assessment.

priority'default' | 'high' | 'low' | 'very_high' | 'very_low' required

Priority level: very_low, low, default, high, or very_high

priorityReasoningstring nullable required

Reasoning from the most recent automatic topic-priority scoring decision. Null when priority was manually overridden or never auto-scored.

summarystring required

Descriptive summary of the topic.

timeRangeEndunknown
timeRangeStartunknown
titlestring required

Short human-readable title of the topic.

updatedAtstring date-time

Timestamp when the topic was last updated.

Changes

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