Get history
Get change history for a topic. Returns audit trail of modifications with user attribution, and the topics merged into it or that it was merged into. actions is always empty. A topic archived in the v1 to v2 migration returns 404 with data.reason archived_in_v1_to_v2_migration.
/topics/{topicId}/historyAuthorizationBearer token · headerrequiredOrganization API key (modem_…).
topicIdstring<uuid>requiredchangedByFilterstring[]Filter by actor type. Defaults to user and agent changes (excludes system).
limitintegerMaximum number of history records to return (default 20, max 50).
OK
actionsobject[]requiredShow propertiesHide properties
objectactionAtstring<date-time>actionTypestringrequiredSemantic category of the action taken: started (a discrete unit of work was initiated, e.g. a PR was opened — per-artifact, not a topic-level state), merged (a code change was integrated into a canonical branch — NOT the same as deployed/shipped/released), resolved (a tracked task was completed positively, e.g. issue closed as completed), dismissed (a task was closed as wontfix / not pursued). User-initiated rows (created via dashboard, agent MCP tool, or direct API call) use the same enum values as auto rows — origin is encoded in metadata.source.
dismissedmergedresolvedstartedcreatedByUserobject | nullrequiredShow propertiesHide properties
idstringrequiredShow propertiesHide properties
stringstringimagestring | nullrequiredOptional URL to the user avatar image.
Show propertiesHide properties
stringnullnamestringrequiredHuman-readable name of the user.
nullexternalLinkobjectrequiredShow propertiesHide properties
authorLoginstringrequiredcreatedAtstring<date-time>draftbooleanrequiredlinkTypeanyrequiredmergedbooleanrequirednumberintegerrequiredstatestringrequiredclosedopentitlestringrequiredurlstring<uri>requiredlinkTypeanyrequirednumberintegerrequiredtitlestringrequiredurlstring<uri>requiredlinkTypeanyrequiredidstring<uuid>requiredUnique identifier for the action record.
metadataanynotestring | nullrequiredShow propertiesHide properties
stringnullhistoryobject[]requiredShow propertiesHide properties
objectchangedAtstring<date-time>changedBystringrequiredActor type that initiated the change: system (internal/cascading), agent (AI), or user (manual).
agentsystemuserchangesobjectrequiredidstring<uuid>requiredShow propertiesHide properties
string<uuid>string<uuid>operationstringrequiredType of database operation that triggered the history record.
DELETEINSERTUPDATEpreviousValuesobject | nullrequiredShow propertiesHide properties
objectnulluserobject | nullrequiredShow propertiesHide properties
idstringrequiredShow propertiesHide properties
stringstringimagestring | nullrequiredOptional URL to the user avatar image.
Show propertiesHide properties
stringnullnamestringrequiredHuman-readable name of the user.
nullmergedIntoobject | nullrequiredShow propertiesHide properties
idstringrequiredmergedAtstring<date-time>targetTopicobject | nullrequiredShow propertiesHide properties
idstringrequiredtitlestringrequirednulluserobject | nullrequiredShow propertiesHide properties
idstringrequiredShow propertiesHide properties
stringstringimagestring | nullrequiredOptional URL to the user avatar image.
Show propertiesHide properties
stringnullnamestringrequiredHuman-readable name of the user.
nullnullmergesobject[]requiredShow propertiesHide properties
objectidstringrequiredmergedAtstring<date-time>sourceTopicsobject[]requiredShow propertiesHide properties
objectidstringrequiredtitlestringrequireduserobject | nullrequiredShow propertiesHide properties
idstringrequiredShow propertiesHide properties
stringstringimagestring | nullrequiredOptional URL to the user avatar image.
Show propertiesHide properties
stringnullnamestringrequiredHuman-readable name of the user.
nulltotalCountnumberrequiredInvalid request (validation failed).
codestringrequiredMachine-readable error code, e.g. NOT_FOUND.
dataanyOptional structured error details.
definedbooleanrequiredTrue if the error was declared in the procedure contract.
messagestringrequiredHuman-readable error message.
statusintegerrequiredHTTP status code.
Missing or invalid API key.
codestringrequiredMachine-readable error code, e.g. NOT_FOUND.
dataanyOptional structured error details.
definedbooleanrequiredTrue if the error was declared in the procedure contract.
messagestringrequiredHuman-readable error message.
statusintegerrequiredHTTP status code.
The API key does not have access to this resource.
codestringrequiredMachine-readable error code, e.g. NOT_FOUND.
dataanyOptional structured error details.
definedbooleanrequiredTrue if the error was declared in the procedure contract.
messagestringrequiredHuman-readable error message.
statusintegerrequiredHTTP status code.
The requested resource was not found.
codestringrequiredMachine-readable error code, e.g. NOT_FOUND.
dataanyOptional structured error details.
definedbooleanrequiredTrue if the error was declared in the procedure contract.
messagestringrequiredHuman-readable error message.
statusintegerrequiredHTTP status code.
Rate limit exceeded.
codestringrequiredMachine-readable error code, e.g. NOT_FOUND.
dataanyOptional structured error details.
definedbooleanrequiredTrue if the error was declared in the procedure contract.
messagestringrequiredHuman-readable error message.
statusintegerrequiredHTTP status code.
Internal server error.
codestringrequiredMachine-readable error code, e.g. NOT_FOUND.
dataanyOptional structured error details.
definedbooleanrequiredTrue if the error was declared in the procedure contract.
messagestringrequiredHuman-readable error message.
statusintegerrequiredHTTP status code.