Skip to content

Maturity

Mereon scores how complete and trustworthy an organization’s knowledge base is, and what to do next about it. The same figures drive the maturity panel in the app.

GET /v1/maturity

The organization’s level, the signals behind it, and ranked recommendations. Pass category to scope the whole answer to one category.

Parameter Type Notes
category string A category slug from /v1/categories. Omit for the whole organization.
Terminal window
curl "https://api.mereon.ai/v1/maturity" \
-H "Authorization: Bearer $MEREON_TOKEN"
{
"scope": "ORG",
"level": "STRUCTURED",
"ceilingLevel": "VERIFIED",
"coldStart": false,
"signals": {
"topicCount": 214,
"ownershipPct": 0.78,
"structuredContentPct": 0.62,
"verificationConfiguredPct": 0.41,
"verificationCurrentPct": 0.33,
"categoryCoveragePct": 0.64,
"populatedCategoryCount": 9
},
"recommendations": [
{
"kind": "ASSIGN_OWNERS",
"count": 47,
"total": 214,
"copy": "47 of 214 topics have nobody accountable.",
"href": "https://mereon.ai/ontology"
}
],
"compositeScore": 0.58,
"computedAt": "2026-08-18T04:00:00.000Z"
}
Field Type Notes
scope string ORG, or CATEGORY when category was passed. A category response also carries categorySlug.
level string | null UNDOCUMENTED, EMERGING, STRUCTURED, VERIFIED, or OPTIMIZED. null before anything has been measured.
ceilingLevel string | null The highest level currently reachable. A gap between this and level is what the recommendations are for.
coldStart boolean True when there is too little content to score meaningfully. coldStartReason says why.
signals object The inputs behind the level. Percentages are fractions in [0, 1], and any of them can be null when not measurable.
compositeScore number | null Weighted composite in [0, 1] at organization scope. Always null at category scope.
recommendations[] object[] Ranked, each with a count, human-readable copy, and an href into the app.

GET /v1/maturity/categories

One entry per predefined category — always fourteen, including the ones with no content yet, so a grid can render every cell without inferring the gaps.

{
"data": [
{ "categorySlug": "finance", "level": "VERIFIED", "coldStart": false },
{ "categorySlug": "facilities", "level": null, "coldStart": true }
]
}

level is null where a category has nothing to score yet, which is the same thing coldStart: true reports from the other direction.