Minds v1 API Endpoint Catalog
Complete customer-facing catalog of Minds v1 REST endpoints, response modes, and corresponding MCP capabilities.
This catalog lists the complete customer-facing v1 route surface. Use it with the live OpenAPI 3.1 document for schemas and the agent integration guide for safe orchestration patterns.
Conventions
- Apex base URL:
https://getminds.ai/api/v1 - API-subdomain base URL:
https://api.getminds.ai/v1 - Authentication:
Authorization: Bearer minds_… - JSON requests:
Content-Type: application/json - Most JSON responses use
{ "data": ... }; validation and access failures use the shared error envelope documented under Errors & Limits. {id},{sparkId},{panelId}, and similar tokens are path parameters, not literal strings.DELETEoperations are destructive. Confirm the exact resource identifiers before calling them.- MCP mappings identify the equivalent capability. An MCP tool may compose more than one v1 request or expose several routes through an
actionparameter.
Meta, identity, and credentials
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
GET | /api/v1/openapi.json | Return the public OpenAPI 3.1 document; authentication is not required | MCP publishes protocol-native tools/list discovery |
GET | /api/v1/auth/me | Read the authenticated account identity and plan context | Intentionally transport context, not an MCP research tool |
GET | /api/v1/api-keys | List API-key metadata; secret values are never returned again | Intentionally excluded from MCP |
POST | /api/v1/api-keys | Mint an API key and return its secret once | Intentionally excluded from MCP |
DELETE | /api/v1/api-keys/{keyId} | Revoke an API key | Intentionally excluded from MCP |
MCP sessions cannot mint, rotate, or revoke their own bearer credentials. Manage credentials only through authenticated account settings or the REST endpoints above.
Minds
The historical API resource name for a Mind is spark.
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
GET | /api/v1/sparks | List owned Minds with pagination and filters | list_minds |
POST | /api/v1/sparks | Create and queue training for a Mind | create_mind |
DELETE | /api/v1/sparks | Batch-delete confirmed Minds through canonical cleanup | manage_mind with action: "delete_many" (1–100 IDs per tool call) |
GET | /api/v1/sparks/library | Read the first-party owned/shared library projection | list_minds |
GET | /api/v1/sparks/{sparkId} | Read one visible Mind | manage_mind with action: "get" |
PUT | /api/v1/sparks/{sparkId} | Update editable Mind fields and sharing configuration | manage_mind with action: "update" |
DELETE | /api/v1/sparks/{sparkId} | Delete one confirmed Mind and associated resources | manage_mind with action: "delete" |
GET | /api/v1/sparks/{sparkId}/training | Read training status and progress | get_mind_status or manage_mind with action: "get_training" |
POST | /api/v1/sparks/{sparkId}/retrain | Queue retraining and rebuild the complete stored knowledge index before ready | manage_mind with action: "retrain" |
POST | /api/v1/sparks/{sparkId}/regenerate-image | Regenerate the Mind profile image | manage_mind with action: "regenerate_image" |
POST | /api/v1/sparks/{sparkId}/regenerate-prompt | Regenerate the system prompt from current knowledge | manage_mind with action: "regenerate_prompt" |
POST | /api/v1/sparks/{sparkId}/regenerate-embeddings | Queue a fresh vector rebuild for every stored knowledge item | manage_mind with action: "regenerate_embeddings" |
GET | /api/v1/sparks/{sparkId}/patterns | Read raw Mind patterns when access permits | manage_mind with action: "get_patterns" |
POST | /api/v1/sparks/{sparkId}/completion | Run a stateless completion with one Mind | chat_with_mind |
POST | /api/v1/sparks/{sparkId}/export | Start or return a Mind profile export | export_mind |
GET | /api/v1/sparks/{sparkId}/export-status | Poll an asynchronous Mind export | export_mind returns status information |
GET | /api/v1/sparks/{sparkId}/export-download | Download a completed Mind export | export_mind returns the artifact or link |
GET | /api/v1/user/shareable-sparks | List Minds eligible for a sharing picker | list_minds |
Batch deletion accepts:
{
"sparkIds": [
"550e8400-e29b-41d4-a716-446655440000",
"550e8400-e29b-41d4-a716-446655440001"
]
}
The response reports deleted, notFound, and failed IDs independently so one cleanup failure does not conceal the rest of the batch.
Mind knowledge
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
GET | /api/v1/sparks/{sparkId}/knowledge | List knowledge items | manage_mind_knowledge with action: "list" |
POST | /api/v1/sparks/{sparkId}/knowledge | Add a link, keyword search, multipart file, or URL-referenced file | manage_mind_knowledge with action: "add" |
PUT | /api/v1/sparks/{sparkId}/knowledge/{itemId} | Update description, watch state, or supported metadata | manage_mind_knowledge with action: "update" |
DELETE | /api/v1/sparks/{sparkId}/knowledge/{itemId} | Delete a knowledge item and associated stored artifact | manage_mind_knowledge with action: "delete" |
GET | /api/v1/sparks/{sparkId}/knowledge/{itemId}/status | Poll knowledge processing | manage_mind_knowledge with action: "status" |
POST | /api/v1/sparks/{sparkId}/knowledge/enrich | Convenience keyword-enrichment operation | manage_mind_knowledge with action: "enrich" |
GET | /api/v1/sparks/{sparkId}/knowledge/patterns | Read knowledge patterns by framework | manage_mind_knowledge with action: "patterns" |
For agent-originated files, pass a public, short-lived signed, or Minds workspace-upload URL rather than base64 content:
{
"file": {
"name": "research-brief.pdf",
"url": "https://signed.example/research-brief.pdf",
"type": "application/pdf"
},
"description": "Primary customer research brief",
"regeneratePrompt": true
}
Remote retrieval is SSRF-guarded, limited to 50 MB, and time-bounded. Multipart and URL-referenced files enter the same storage and processing queue.
Groups and grounding
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
GET | /api/v1/groups | List visible Groups | list_groups |
POST | /api/v1/groups | Create a Group from explicit Mind IDs | create_group |
GET | /api/v1/groups/library | Read the first-party owned/followed/shared library projection | list_groups |
GET | /api/v1/groups/{id} | Read members, access, grounding, and Formations | get_group or manage_group with action: "get" |
PUT | /api/v1/groups/{id} | Update supported Group fields and sharing configuration | manage_group with action: "update" |
DELETE | /api/v1/groups/{id} | Delete a confirmed Group | manage_group with action: "delete" |
POST | /api/v1/groups/{id}/members | Add one Mind to a Group | manage_group with action: "add_member" |
DELETE | /api/v1/groups/{id}/members/{sparkId} | Remove one Mind from a Group | manage_group with action: "remove_member" |
POST | /api/v1/groups/{id}/follow | Follow/save a visible public Group | manage_group with action: "follow" |
DELETE | /api/v1/groups/{id}/follow | Unfollow a saved Group | manage_group with action: "unfollow" |
GET | /api/v1/groups/{id}/progress | Read settled creation progress | manage_group with action: "get_progress" |
GET | /api/v1/groups/active-progress | Read active Group/Mind build progress for the UI | Use per-Group or per-Mind MCP status tools |
GET | /api/v1/groups/lifecycle/stream | Stream user-scoped invalidation hints; clients re-read durable state after each event | MCP uses durable status reads instead of a browser SSE subscription |
POST | /api/v1/groups/{id}/recalibrate | Replace stored grounding with refreshed authoritative research | recalibrate_group |
POST | /api/v1/groups/{id}/regenerate-images | Regenerate Group member images with optional limits/dry run | manage_group with action: "regenerate_images" |
POST | /api/v1/groups/from-brief | Create a grounded synthetic audience from a brief and sources | create_group_from_brief |
POST | /api/v1/groups/from-brief/segmentation-preview | Inspect respondent-data variables before representative cohort creation | preview_group_dataset_segmentation |
POST | /api/v1/groups/allocation-preview | Non-mutating deterministic cohort-allocation preview | create_group_from_brief cohort-allocation workflow |
POST | /api/v1/groups/{id}/export | Start or return a branded Group brief export | export_group |
GET | /api/v1/groups/{id}/export-status | Poll an asynchronous Group export | export_group |
GET | /api/v1/groups/{id}/export-download | Download a completed Group export | export_group returns the artifact |
Groups and Panels are private by default. Set isLinkSharingEnabled: true only when the user explicitly requests a public link; doing so can make persisted grounding and attached research context readable through the shared surface.
Group Formations
A Formation is a persisted segmentation of one Group into defined subgroups.
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
GET | /api/v1/groups/{id}/formations | List Formations | list_formations or manage_formation with action: "list" |
POST | /api/v1/groups/{id}/formations | Create and compute a Formation | manage_formation with action: "create" |
POST | /api/v1/groups/{id}/formations/preview | Generate a non-persisted segmentation hypothesis | manage_formation with action: "preview" |
GET | /api/v1/groups/{id}/formations/{formationId} | Read one Formation | manage_formation with action: "get" |
DELETE | /api/v1/groups/{id}/formations/{formationId} | Delete a confirmed Formation | manage_formation with action: "delete" |
POST | /api/v1/groups/{id}/formations/{formationId}/recompute | Recompute member assignments | manage_formation with action: "recompute" |
The preview endpoint content-negotiates. Use Accept: application/x-ndjson for incremental browser progress or Accept: application/json for a single agent-friendly hypothesis. Both representations use the same generator.
Panels, analytics, and exports
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
GET | /api/v1/panels | List Panels | list_panels |
POST | /api/v1/panels | Create a Panel from existing Groups or inline groupConfigs | create_panel |
GET | /api/v1/panels/{panelId} | Read Panel composition and history | get_panel_status or manage_panel with action: "get" |
DELETE | /api/v1/panels/{panelId} | Delete a confirmed Panel | manage_panel with action: "delete" |
POST | /api/v1/panels/{panelId}/ask | Submit one direct question; supports SSE and queued modes | ask_panel |
GET | /api/v1/panels/{panelId}/analytics | Compute scale, categorical, and qualitative analytics | get_panel_analytics |
POST | /api/v1/panels/{panelId}/export | Start an export in a supported format | export_panel |
GET | /api/v1/panels/{panelId}/export-status | Poll export status | export_panel / get_panel_status |
GET | /api/v1/panels/{panelId}/export-download | Download a completed export | export_panel returns an artifact or link |
POST | /api/v1/panels/{panelId}/heatmaps/{messageId}/export | Start or return a website-heatmap ZIP export | export_heatmap |
GET | /api/v1/panels/{panelId}/heatmaps/{messageId}/export-status | Poll a website-heatmap ZIP export | export_heatmap |
GET | /api/v1/panels/{panelId}/heatmaps/{messageId}/export-download | Download a completed website-heatmap ZIP | export_heatmap returns a signed URL |
GET | /api/v1/panels/{panelId}/summary | Read the persisted flexible semantic summary | get_panel_summary |
POST | /api/v1/panels/{panelId}/summary | Generate or refresh the semantic summary | get_panel_summary with refresh: true |
Composite creation through groupConfigs is atomic: if any inline Group fails, the operation rolls back the Panel and Groups created by that request.
Guided Studies and durable runs
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
POST | /api/v1/panels/{panelId}/research-plans/preview | Create or revise a versioned research-plan draft | plan_panel_study |
POST | /api/v1/panels/{panelId}/studies | Confirm and run the exact reviewed plan revision | run_panel_study |
GET | /api/v1/panels/{panelId}/studies/{studyId} | Poll Study progress, methods, artifacts, and calculations | get_panel_study |
POST | /api/v1/panels/{panelId}/runs | Start a durable direct Panel run | ask_panel for direct questions or run_panel_study for planned research |
GET | /api/v1/panels/{panelId}/runs | List durable runs for a Panel | get_panel_status / get_panel_study |
GET | /api/v1/runs/{runId} | Read durable run status | get_panel_status / get_panel_study |
GET | /api/v1/runs/{runId}/events | Read ordered run events using after and limit cursors | MCP status tools return durable progress |
POST | /api/v1/runs/{runId}/cancel | Cancel a running durable job | No dedicated curated MCP tool |
GET | /api/v1/research-methods | List versioned methods, execution support, requirements, and fallbacks | list_research_methods |
Creating a plan does not start research. Start only after the user explicitly confirms the exact returned revision. executable: false means a represented method is informational or planned, not runnable.
Durable Study drafts
These endpoints persist the same resumable planner state used by the first-party Study sidebar.
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
GET | /api/v1/study-drafts | List owned resumable drafts | list_study_drafts |
POST | /api/v1/study-drafts | Create a durable draft | save_study_draft |
GET | /api/v1/study-drafts/{id} | Read one complete draft | list_study_drafts with draftId |
PATCH | /api/v1/study-drafts/{id} | Revise a draft using optimistic concurrency | save_study_draft with draftId and expectedRevision |
DELETE | /api/v1/study-drafts/{id} | Delete a confirmed draft | manage_study_draft with action: "delete" |
POST | /api/v1/study-drafts/{id}/consume | Mark a precise revision consumed and optionally attach it to a Panel | manage_study_draft with action: "consume" |
Always send the exact expectedRevision returned by the last read. A stale revision is rejected rather than overwriting newer planning state.
Stateful chats
| Method | Path | Purpose | MCP equivalent |
|---|---|---|---|
POST | /api/v1/chats | Create a stateful single-Mind, multi-Mind, or Group-backed chat | manage_chat with action: "create" |
POST | /api/v1/chats/{chatId}/messages | Append a user/system message and receive the next response | manage_chat with action: "send_message" |
DELETE | /api/v1/chats/{chatId} | Delete a confirmed chat and its persisted history | manage_chat with action: "delete" |
For a one-off Mind request without server-managed history, use the stateless completion endpoint instead.
Choosing the next reference
- Request and response examples: Minds, Groups, Panels, Knowledge, and Chat
- Authentication and key rotation: Authentication
- Errors, plan limits, and retry policy: Errors & Limits
- Autonomous integrations: API guide for agents
- Tool-native integrations: MCP tools reference