List Projects associated with a Topic
The authoritative Topic→Project association collection. An association is observational: canonical Project-attributed posts that are members of the Topic at the shared cutoff. It never implies partnership, endorsement, taxonomy, causality, or a primary Project. Coverage is a statement about source completeness, separate from association eligibility.
Path Parameters
^topic_[a-f0-9]{20}$Query Parameters
Opaque cursor from meta.nextCursor.
501 <= value <= 50Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v3/topics/string/projects"{
"data": [
{
"project": {
"id": "665f0a2b1c9d440000a1b2c3",
"slug": "examplechain",
"name": "ExampleChain"
},
"observedPosts": 96,
"distinctAuthors": 44,
"shareOfTopicPosts": 0.23,
"firstObservedAt": "2026-08-04T06:10:00Z",
"lastObservedAt": "2026-08-05T04:41:00Z",
"sentiment": {
"populated": 61,
"coverage": 0.64
}
}
],
"meta": {
"nextCursor": null,
"window": {
"from": "2026-08-04T04:55:00Z",
"to": "2026-08-05T04:55:00Z"
},
"versions": {
"resolver": "project-resolver-v4",
"membership": "topic-membership-v2"
}
}
}{
"code": "invalid_request",
"message": "minTrend must be numeric",
"details": {
"fields": [
"minTrend"
]
}
}{
"code": "credential_required",
"message": "Provide an API key via the x-api-key header."
}{
"code": "entitlement_required",
"message": "This resource requires the topic-reports entitlement.",
"details": {
"entitlement": "topic-reports"
}
}{
"code": "not_found",
"message": "No Project matches that locator.",
"details": {
"subject": {
"type": "project",
"locator": "examplechain"
}
}
}{
"code": "rate_limited",
"message": "Minute limit reached.",
"details": {
"limit": 30,
"window": "minute"
}
}{
"code": "internal_error",
"message": "Unexpected error."
}Get a Topic GET
Topic detail. Carries the versioned `stance` series: bucketed, target-scoped stance of the Topic conversation itself (`supportive`, `skeptical`, `neutral`, `mixed`, `unknown`), independent from Project-targeted sentiment.
Get a Topic measurement series GET
The same measurement-series contract used by Projects, for one known Topic id. `trend` keeps the newest real completed score boundary in each hourly bucket. `rank` is the committed boundary series reduced to change points; `value` is `null` when a complete leaderboard publishes the Topic as unranked. Point timestamps preserve the actual completed measurement boundary. Topic history requires an API key.