Aller au contenu

REST API Reference

Ce contenu n’est pas encore disponible dans votre langue.

Audience: developer integrating with the Cortex REST API.

All routes are mounted under /api (e.g. GET http://localhost:9096/api/atoms). The API uses the envelope format { ok: true, data: ... } for success and { ok: false, error: { message, code } } for errors.

Authentication is via API key passed in the Authorization header as Bearer <key>. Role-based access is enforced per route.


Cortex supports two modes controlled by the CORTEX_MODE environment variable:

  • full (default): all routes are mounted.
  • lib: read-only catalogue routes only (atoms, search, templates, governance, catalogue, library, navigation, documents, account).

Routes marked full below are only available in full mode.


MethodPathRoleModeDescription
GET/atomslibSearch atoms by taxonomy. Query: famille, sousFamille, type (FEUILLE/COMPOSE), occurrence, limit.
GET/atoms/statslibAtom distribution statistics (total, byFamille, bySousFamille, byType).
GET/atoms/governancelibGovernance atoms grouped by sous-famille.
GET/atoms/:idlibAtom detail (all 6 layers). Returns 404 if not found.

MethodPathRoleModeDescription
GET/catalogue/blocsreaderlibList blocs. Query: type (skill/expertise/methode/tool/scope, supports CSV), category, tags (CSV), limit, offset. Response includes usedByCount.
GET/catalogue/blocs/search?q=...readerlibFull-text search blocs. Query: q (required).
GET/catalogue/blocs/:idreaderlibGet a single bloc. Query: version (optional semver for history).
POST/catalogue/blocscontributorlibDeposit a new bloc. Body: DepositBlocBody. Returns 201.
PATCH/catalogue/blocs/:idcontributorlibUpdate an existing bloc. Body: UpdateBlocBody.
DELETE/catalogue/blocs/:idadminlibDelete an orphan bloc.
GET/catalogue/statsreaderlibCatalogue statistics by type/category.

MethodPathRoleModeDescription
GET/catalogue/modelesreaderlibList all modeles.
GET/catalogue/modeles/:idreaderlibGet a single modele. Returns 404 if not found.
POST/catalogue/modelescontributorlibDeposit a new modele. Body: DepositModeleBody. Returns 201.
DELETE/catalogue/modeles/:idadminlibDelete a modele.

MethodPathRoleModeDescription
GET/profilsreaderlibList profils. Query: origin (modele/sur_mesure/variante), owner, limit, summary (boolean, returns minimal fields).
GET/profils/search?q=...readerlibFull-text search profils. Query: q (required).
GET/profils/:idreaderlibGet a single profil with blocs and variantes.
GET/profils/:id/cardreaderlibGet a profil card (summary with bloc counts and variant count).
POST/profilscontributorlibCreate a profil (alias of forger). Body: ForgerProfilBody. Returns 201.
POST/profils/forgercontributorlibForge a new profil from blocs. Body: ForgerProfilBody. Returns 201.
POST/profils/pack-hyoslibPack HYOS for agent onboarding. Body: { id, project_id?, bloc_types? }. Returns profil + blocs + governance.
POST/profils/:id/enrichircontributorlibAdd blocs to a profil. Body: { blocIds: string[] }.
POST/profils/:id/detachercontributorlibDetach blocs from a profil. Body: { blocIds: string[] }.
POST/profils/:id/variantecontributorlibCreate a variante. Body: CreerVarianteBody. Returns 201.
PATCH/profils/:idcontributorlibEdit profil fields (role, mission, mindset, keywords, sectors, scope, responsibilities, metiers). Bumps semver.
PATCH/profils/:id/blocs/:blocIdcontributorlibChange the weight (poids) of an attached bloc. Body: { poids: 'core' | 'support' }.
DELETE/profils/:idadminlibDelete a profil (fails if it has variantes or active instances).

MethodPathRoleModeDescription
POST/blocscontributorfullIngest a single bloc via the ingestion pipeline. Body: arka.hcm.block.v1 JSON. Rate limited (600/min).
POST/blocs/dry-runcontributorfullValidate a bloc without persisting. Same body.
POST/blocs/batchadminfullBatch ingest up to 200 blocs. Body: JSON array.
POST/profils/ingestcontributorfullIngest a single profil via the ingestion pipeline. Body: arka.hcm.profil.v1 JSON. Rate limited (200/min).
POST/profils/ingest/batchadminfullBatch ingest profils. Body: JSON array.

MethodPathRoleModeDescription
POST/depositcontributorfullDeposit a single node + edges. Body: DepositBody. Returns 201.
POST/deposit/batchcontributorfullDeposit up to 100 nodes. Body: { items: DepositBody[] }. Returns 201.
POST/enrichcontributorfullMerge data into an existing node. Body: EnrichBody.
DELETE/nodes/:idcontributorfullRemove a node.

MethodPathRoleModeDescription
POST/searchlibFaceted search (MeiliSearch). Body: { query, filters?, facets?, sort?, limit?, offset? }.
GET/search/atoms?q=...libSearch atoms by occurrence.
GET/search/statsadminlibMeiliSearch index statistics.

MethodPathRoleModeDescription
GET/workspace/overviewfullWorkspace overview (projects, totals).
GET/workspace/scopefullAdaptive scope. Query: project, mission, library (off/consumed/all).
GET/workspace/projectsfullList projects. Query: includeArchived (boolean).
GET/workspace/projects/:idfullProject detail + missions + counts.
GET/workspace/projects/:id/agentsfullProject agents (team).
GET/workspace/projects/:id/mctsfullProject MCT list.
GET/workspace/projects/:id/odmsfullProject ODM list.
GET/workspace/projects/:id/crsfullProject CR list.
POST/workspace/projectsfullCreate a project. Body: CreateProjectBody.
PATCH/workspace/projects/:idfullUpdate a project. Body: UpdateProjectBody.
GET/workspace/missions/:idfullMission detail + ODMs + CRs.
GET/workspace/missions/:id/mctfullMission MCT.
POST/workspace/missionsfullCreate a mission. Body: CreateMissionBody.
PATCH/workspace/missions/:idfullUpdate a mission. Body: UpdateMissionBody.
POST/workspace/missions/:id/linksfullAdd a link to a mission. Body: MissionLinkBody.
DELETE/workspace/missions/:id/links/:targetIdfullRemove a link from a mission.
GET/workspace/missions/:id/linksfullList mission links.
GET/workspace/mcts/:idfullMCT detail.
POST/workspace/odmsfullCreate an ODM. Body: CreateOdmBody.
GET/workspace/odms/:idfullODM detail + tasks + CRs.
PATCH/workspace/odms/:idfullUpdate an ODM. Body: PatchOdmBody.
POST/workspace/crsfullCreate a CR. Body: CreateCrBody.
GET/workspace/crs/:idfullCR detail.
PATCH/workspace/crs/:idfullUpdate a CR. Body: PatchCrBody.

MethodPathRoleModeDescription
GET/memory/agent/:agentId/project/:projectId/resumefullAgent memory resume for a project.
GET/memory/project/:projectId/resumefullProject memory resume.
GET/memory/project/:projectId/decisionsfullProject decisions. Query: status, limit.
GET/memory/agent/:agentId/decisionsfullAgent decisions. Query: status, projectId.
GET/memory/agent/:agentId/erreursfullAgent errors. Query: status, projectId.
GET/memory/agent/:agentId/patternsfullAgent patterns. Query: projectId.
GET/memory/agent/:agentId/feedbacksfullAgent feedbacks. Query: projectId.
PUT/memory/agent/resumefullUpdate agent resume.
PUT/memory/project/resumefullUpdate project resume.
POST/memory/atomsfullDeposit a memory atom (decision, erreur, pattern, feedback).
PATCH/memory/atoms/statusfullUpdate memory atom status.

MethodPathRoleModeDescription
GET/governance/praxislibList Praxis bricks.
GET/governance/praxis/:idlibGet a single Praxis brick. Returns 404 if not found.
GET/governance/atomslibGovernance atoms grouped by sous-famille.

MethodPathRoleModeDescription
GET/context/:idlib360-degree context of an entity (node + edges + neighbors).
GET/impact/:idlibBlast radius analysis. Query: direction (upstream/downstream), maxDepth.
GET/nodes/:idlibGet a single node.
GET/edges/:idlibGet edges for a node.
GET/traverse/:idlibTraverse from a node. Query: direction, edgeType, depth.
GET/nodes/type/:typelibList nodes by type.
GET/subgraph/:idlibAlias for traverse.
POST/queryadminlibRaw SurrealQL query (SELECT only).
GET/difflibGraph diff since timestamp.

MethodPathRoleModeDescription
GET/templateslibList all template types (17 types).
GET/templates/:typelibGet template definition by type.
POST/templates/buildfullBuild an entity from a template + data. Body: TemplateBuildBody.
GET/taskslibList tasks. Query: odm (filter by ODM ID).

MethodPathRoleModeDescription
POST/documentscontributorlibIngest a document. Body: IngestDocumentBody. Returns 201.
GET/documentslibList documents. Query: tags (CSV), since, until, query, limit, offset.
GET/documents/search?q=...libSearch documents.
GET/documents/:idlibGet a document.
GET/documents/ref/:reflibGet a document by ref.
GET/documents/:id/historylibDocument version history.
DELETE/documents/:idcontributorlibDelete a document.

MethodPathRoleModeDescription
GET/library/familieslibList families. Query: limit, offset.
GET/library/families/:id/childrenlibGet sub-families of a family.
GET/library/families/:fid/sub-familieslibAlias for children.
GET/library/sub-families/:sfid/sub-sub-familieslibGet sub-sub-families.
GET/library/sub-sub-families/:id/linkslibGet links of a sub-sub-family.

MethodPathRoleModeDescription
GET/versioning/current/:nodeIdfullCurrent version of a node.
GET/versioning/history/:sourceIdfullVersion history. Query: since.
GET/versioning/instances/:projectIdfullProject instances.
GET/versioning/instances/context/:type/:idfullContext instances.
GET/versioning/diff/:instanceIdfullDiff an instance. Query: includeFieldDiffs.
GET/versioning/drift/:projectIdfullProject drift analysis. Query: includeFieldDiffs. Rate limited (10/min).
GET/versioning/content/:instanceIdfullInstance content.
POST/versioning/instantiatefullInstantiate a node. Body: InstantiateBody.

MethodPathRoleModeDescription
GET/divergence/snapshotadminfullExport instance snapshot. Query: include_content.
GET/divergence/soucheadminfullGet current souche.
GET/divergence/souche/versionreaderfullGet souche version.
POST/divergence/souche/updateadminfullUpdate souche.
POST/divergence/souche/initadminfullInitialize souche.
POST/divergence/compareadminfullCompare two snapshots.
GET/divergence/vs-soucheadminfullCompare instance vs souche.
POST/divergence/detect-cross-pollinationadminfullDetect cross-pollination signals.
GET/divergence/signalsadminfullList cross-pollination signals.
POST/divergence/signals/:id/promoteadminfullPromote a signal.
POST/divergence/signals/:id/ignoreadminfullIgnore a signal.

MethodPathRoleModeDescription
POST/audit/generateadminfullGenerate an audit document.
GET/auditfullList audit documents. Query: type, projectId, limit.
GET/audit/:idfullGet an audit document.
GET/audit/:id/verifyfullVerify an audit document.

MethodPathRoleModeDescription
GET/admin/statusadminfullSystem status (version, node/edge/document counts).
POST/admin/reindexadminfullReindex MeiliSearch.
GET/admin/audit-trailadminfullAudit trail. Query: limit.

MethodPathRoleModeDescription
POST/diff/snapshotcontributorfullCapture a diff snapshot. Body: { scope? }.
GET/diff/snapshotsfullList snapshots. Query: limit, offset.

MethodPathRoleModeDescription
Various/account/*varieslibAPI key management, OAuth client management, provider credentials (admin).

MethodPathRoleModeDescription
Various/events/*fullServer-Sent Events token endpoint.

MethodPathDescription
GET/healthHealth check (mounted outside /api, at server root). Returns { status: 'ok' }.