Topics
A topic is a subject your organization knows about. See How Mereon is organized for the model.
Reading topics and the items under them needs the topic.read permission, which
every role has except external. An external account gets 403, as it does in the
app.
List topics
Section titled “List topics”GET /v1/topics
Cursor-paginated, optionally filtered by category. Returns the latest state by default.
Query parameters
Section titled “Query parameters”| Parameter | Type | Notes |
|---|---|---|
categorySlug |
string | Restrict to one category. |
cursor |
string | Pagination cursor from a previous response. |
limit |
number | 1–100. Default 50. |
includeHistory |
boolean | Include archived and superseded topics. See Lifecycle. |
filter |
string | A stewardship worklist: no-owner, no-verification-interval, or verification-overdue. See below. Cannot be combined with includeHistory. |
Request
Section titled “Request”curl "https://api.mereon.ai/v1/topics?limit=50" \ -H "Authorization: Bearer $MEREON_TOKEN"Response
Section titled “Response”{ "data": [ { "id": "top_9f2a...", "name": "Expense approval", "slug": "expense-approval", "description": "How expenses are reviewed and approved.", "categorySlug": "finance", "status": "ACTIVE", "supersededById": null, "verification": { "intervalDays": 90, "lastVerifiedAt": "2026-07-01T00:00:00.000Z", "nextVerificationAt": "2026-09-29T00:00:00.000Z" }, "url": "https://mereon.ai/topics/expense-approval", "createdAt": "2026-01-12T09:00:00.000Z", "updatedAt": "2026-05-30T16:20:00.000Z" } ], "nextCursor": "eyJpZCI6Im..."}verification says how fresh the organization has said a topic is: the interval
it is verified on, when it was last confirmed, and when it is next due. Each field
is null until it has been set, so a topic nobody has put on a schedule carries
null in all three. It does not say who confirmed it.
Worklists
Section titled “Worklists”filter returns the topics that need a steward’s attention, using the same
definitions as the topic list in the app.
| Value | Returns |
|---|---|
no-owner |
Topics that no one is Responsible for. Only an assignment on the topic itself counts. An owner inherited from its space or category does not, and neither does a topic whose only owner is Accountable. |
no-verification-interval |
Topics with no review cadence set. |
verification-overdue |
Topics with a cadence whose next review date has passed. |
Because no-owner looks only at Responsible owners, it can list more topics than
the “no owner” count in maturity, which also accepts an
Accountable owner. A worklist covers the latest state only, so filter with
includeHistory=true answers 400.
Get a topic
Section titled “Get a topic”GET /v1/topics/{id}
Topic detail: description, category, item summaries, and related topics.
Query parameters
Section titled “Query parameters”| Parameter | Type | Notes |
|---|---|---|
includeHistory |
boolean | Include archived and superseded records. |
Response
Section titled “Response”{ "id": "top_9f2a...", "name": "Expense approval", "slug": "expense-approval", "description": "How expenses are reviewed and approved.", "categorySlug": "finance", "status": "ACTIVE", "supersededById": null, "verification": { "intervalDays": 90, "lastVerifiedAt": "2026-07-01T00:00:00.000Z", "nextVerificationAt": "2026-09-29T00:00:00.000Z" }, "url": "https://mereon.ai/topics/expense-approval", "createdAt": "2026-01-12T09:00:00.000Z", "updatedAt": "2026-05-30T16:20:00.000Z", "category": { "slug": "finance", "title": "Finance" }, "items": [ { "id": "itm_2c8b...", "topicId": "top_9f2a...", "type": "process", "title": "Approve an expense over $500", "status": "ACTIVE", "supersededById": null, "url": "https://mereon.ai/items/itm_2c8b" } ], "relatedTopics": [ { "id": "top_5d1e...", "name": "Corporate cards", "slug": "corporate-cards", "relationship": "related", "direction": "outgoing", "url": "https://mereon.ai/topics/corporate-cards" } ]}List items under a topic
Section titled “List items under a topic”GET /v1/topics/{id}/items
The processes, policies, and facts under a topic, returned as a nested tree (an
item’s sub-steps appear in its children). See Items for the
full item shape and evidence.
Query parameters
Section titled “Query parameters”| Parameter | Type | Notes |
|---|---|---|
includeHistory |
boolean | Include archived and superseded items. |
curl "https://api.mereon.ai/v1/topics/top_9f2a/items" \ -H "Authorization: Bearer $MEREON_TOKEN"Retiring a topic
Section titled “Retiring a topic”Retiring a topic withdraws a subject the organization no longer follows. The videos and documents stay in the library. Lessons that were only about that topic close. Lessons that still teach something else stay open and cover one subject less. Required training aimed at the topic is cancelled.
These routes need topic:retire and permission to retire topics, which owners
and admins have. Reading a topic stays on read. Retiring one item, while the
topic continues, is item:retire. A topic you cannot read is 404.
Preview retiring a topic
Section titled “Preview retiring a topic”GET /v1/topics/{id}/retirement/preview
What retiring this topic would withdraw. Writes nothing. learnersInProgressCount
is how many people are part-way through a lesson this would close. Ask them
whether they finish or stop before you retire it.
curl "https://api.mereon.ai/v1/topics/top_9f2a/retirement/preview" \ -H "Authorization: Bearer $MEREON_TOKEN"Read a topic’s retirement history
Section titled “Read a topic’s retirement history”GET /v1/topics/{id}/retirement
Retirements of this topic, newest first. A restored row has restoredAt set.
cancelledObligationCount is required training the retirement cancelled and
did not put back.
curl "https://api.mereon.ai/v1/topics/top_9f2a/retirement" \ -H "Authorization: Bearer $MEREON_TOKEN"Retire a topic
Section titled “Retire a topic”POST /v1/topics/{id}/retirement
Withdraws the topic. Leave inFlightAccess out and people part-way through a
lesson this closes finish it. revoke stops those enrollments. Completed
enrollments stay either way. reason is optional, up to 2,000 characters.
Returns the retirement, 201.
curl -X POST "https://api.mereon.ai/v1/topics/top_9f2a/retirement" \ -H "Authorization: Bearer $MEREON_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "reason": "We no longer do this", "inFlightAccess": "keep" }'Restore a retired topic
Section titled “Restore a retired topic”DELETE /v1/topics/{id}/retirement
Brings a retired topic back, and the items that retirement archived, each to
the status it held. Required training the retirement cancelled is not brought
back. Returns the retirement that was restored, 200.
curl -X DELETE "https://api.mereon.ai/v1/topics/top_9f2a/retirement" \ -H "Authorization: Bearer $MEREON_TOKEN"| Status | When |
|---|---|
403 |
The token lacks topic:retire, or the caller may not retire topics. |
404 |
The topic is missing, in another organization, unreadable, or not currently retired on a restore. |
409 |
The topic is already retired, is not active, or cannot be restored because the resources that evidenced it have been deleted. |
429 |
More than 10 calls a minute or 60 an hour on that route. |