Minds Team

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}, {mindId}, {studyId}, and similar tokens are path parameters, not literal strings.
  • DELETE operations 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 action parameter.

Meta, identity, and credentials

MethodPathPurposeMCP equivalent
GET/api/v1/openapi.jsonReturn the public OpenAPI 3.1 document; authentication is not requiredMCP publishes protocol-native tools/list discovery
GET/api/v1/auth/meRead the authenticated account identity and plan contextIntentionally transport context, not an MCP research tool
GET/api/v1/api-keysList API-key metadata; secret values are never returned againIntentionally excluded from MCP
POST/api/v1/api-keysMint an API key and return its secret onceIntentionally excluded from MCP
DELETE/api/v1/api-keys/{keyId}Revoke an API keyIntentionally 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.

MethodPathPurposeMCP equivalent
GET/api/v1/mindsList owned Minds with pagination and filterslist_minds
POST/api/v1/mindsCreate and queue training for a Mindcreate_mind
DELETE/api/v1/mindsBatch-delete confirmed Minds through canonical cleanupmanage_mind with action: "delete_many" (1–100 IDs per tool call)
GET/api/v1/minds/libraryRead the first-party owned/shared library projectionlist_minds
GET/api/v1/minds/{mindId}Read one visible Mindmanage_mind with action: "get"
PUT/api/v1/minds/{mindId}Update editable Mind fields and sharing configurationmanage_mind with action: "update"
DELETE/api/v1/minds/{mindId}Delete one confirmed Mind and associated resourcesmanage_mind with action: "delete"
GET/api/v1/minds/{mindId}/trainingRead training status and progressget_mind_status or manage_mind with action: "get_training"
POST/api/v1/minds/{mindId}/retrainQueue retraining and rebuild the complete stored knowledge index before readymanage_mind with action: "retrain"
POST/api/v1/minds/{mindId}/regenerate-imageRegenerate the Mind profile imagemanage_mind with action: "regenerate_image"
POST/api/v1/minds/{mindId}/regenerate-promptRegenerate the system prompt from current knowledgemanage_mind with action: "regenerate_prompt"
POST/api/v1/minds/{mindId}/regenerate-embeddingsQueue a fresh vector rebuild for every stored knowledge itemmanage_mind with action: "regenerate_embeddings"
GET/api/v1/minds/{mindId}/patternsRead raw Mind patterns when access permitsmanage_mind with action: "get_patterns"
POST/api/v1/minds/{mindId}/completionRun a stateless completion with one Mindchat_with_mind
POST/api/v1/minds/{mindId}/exportStart or return a Mind profile exportexport_mind
GET/api/v1/minds/{mindId}/export-statusPoll an asynchronous Mind exportexport_mind returns status information
GET/api/v1/minds/{mindId}/export-downloadDownload a completed Mind exportexport_mind returns the artifact or link
GET/api/v1/user/shareable-sparksList Minds eligible for a sharing pickerlist_minds

Batch deletion accepts:

{
  "mindIds": [
    "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

MethodPathPurposeMCP equivalent
GET/api/v1/minds/{mindId}/knowledgeList knowledge itemsmanage_mind_knowledge with action: "list"
POST/api/v1/minds/{mindId}/knowledgeAdd a link, keyword search, multipart file, or URL-referenced filemanage_mind_knowledge with action: "add"
PUT/api/v1/minds/{mindId}/knowledge/{itemId}Update description, watch state, or supported metadatamanage_mind_knowledge with action: "update"
DELETE/api/v1/minds/{mindId}/knowledge/{itemId}Delete a knowledge item and associated stored artifactmanage_mind_knowledge with action: "delete"
GET/api/v1/minds/{mindId}/knowledge/{itemId}/statusPoll knowledge processingmanage_mind_knowledge with action: "status"
POST/api/v1/minds/{mindId}/knowledge/enrichConvenience keyword-enrichment operationmanage_mind_knowledge with action: "enrich"
GET/api/v1/minds/{mindId}/knowledge/patternsRead knowledge patterns by frameworkmanage_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.

Canonical product resources are Audiences and Studies. The former /api/v1/groups and /api/v1/panels paths remain callable during the compatibility window, but return Deprecation: true and a Link header pointing to the canonical successor. New integrations should not use the legacy paths or names.

Audiences and grounding

MethodPathPurposeMCP equivalent
GET/api/v1/audiencesList visible Audienceslist_audiences
POST/api/v1/audiencesCreate an Audience from explicit Mind IDscreate_audience
GET/api/v1/audiences/libraryRead the first-party owned/followed/shared library projectionlist_audiences
GET/api/v1/audiences/{id}Read members, access, grounding, and Formationsget_audience or manage_audience with action: "get"
PUT/api/v1/audiences/{id}Update supported Audience fields and sharing configurationmanage_audience with action: "update"
DELETE/api/v1/audiences/{id}Delete a confirmed Audiencemanage_audience with action: "delete"
POST/api/v1/audiences/{id}/membersAdd one Mind to an Audiencemanage_audience with action: "add_member"
DELETE/api/v1/audiences/{id}/members/{mindId}Remove one Mind from an Audiencemanage_audience with action: "remove_member"
POST/api/v1/audiences/{id}/followFollow/save a visible public Audiencemanage_audience with action: "follow"
DELETE/api/v1/audiences/{id}/followUnfollow a saved Audiencemanage_audience with action: "unfollow"
GET/api/v1/audiences/{id}/progressRead settled creation progressmanage_audience with action: "get_progress"
GET/api/v1/audiences/active-progressRead active Audience/Mind build progress for the UIUse per-Audience or per-Mind MCP status tools
GET/api/v1/audiences/lifecycle/streamStream user-scoped invalidation hints; clients re-read durable state after each eventMCP uses durable status reads instead of a browser SSE subscription
POST/api/v1/audiences/{id}/recalibrateReplace stored grounding with refreshed authoritative researchrecalibrate_audience
POST/api/v1/audiences/{id}/regenerate-imagesRegenerate Audience member images with optional limits/dry runmanage_audience with action: "regenerate_images"
POST/api/v1/audiences/from-briefCreate a grounded synthetic audience from a brief and sourcescreate_audience_from_brief
GET/api/v1/audiences/from-brief/jobs/{jobId}Poll an asynchronous from-brief Audience creation operationPolled automatically by create_audience_from_brief
POST/api/v1/audiences/from-brief/segmentation-previewInspect respondent-data variables before representative cohort creationpreview_audience_dataset_segmentation
POST/api/v1/audiences/allocation-previewNon-mutating deterministic cohort-allocation previewcreate_audience_from_brief cohort-allocation workflow
POST/api/v1/audiences/{id}/exportStart or return a branded Audience brief exportexport_audience
GET/api/v1/audiences/{id}/export-statusPoll an asynchronous Audience exportexport_audience
GET/api/v1/audiences/{id}/export-downloadDownload a completed Audience exportexport_audience returns the artifact

Audiences and Studies 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.

Audience Formations

A Formation is a persisted segmentation of one Audience into defined subgroups.

MethodPathPurposeMCP equivalent
GET/api/v1/audiences/{id}/formationsList Formationslist_formations or manage_formation with action: "list"
POST/api/v1/audiences/{id}/formationsCreate and compute a Formationmanage_formation with action: "create"
POST/api/v1/audiences/{id}/formations/previewGenerate a non-persisted segmentation hypothesismanage_formation with action: "preview"
GET/api/v1/audiences/{id}/formations/{formationId}Read one Formationmanage_formation with action: "get"
DELETE/api/v1/audiences/{id}/formations/{formationId}Delete a confirmed Formationmanage_formation with action: "delete"
POST/api/v1/audiences/{id}/formations/{formationId}/recomputeRecompute member assignmentsmanage_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.

Studies, analytics, and exports

MethodPathPurposeMCP equivalent
GET/api/v1/studiesList Studieslist_studies
POST/api/v1/studiesCreate a Study from existing Audiences or inline audienceConfigscreate_study
GET/api/v1/studies/{studyId}Read Study composition and historyget_study_status or manage_study with action: "get"
DELETE/api/v1/studies/{studyId}Delete a confirmed Studymanage_study with action: "delete"
POST/api/v1/studies/{studyId}/askSubmit one direct question; supports SSE and queued modesask_study
GET/api/v1/studies/{studyId}/analyticsCompute scale, categorical, and qualitative analyticsget_study_analytics
POST/api/v1/studies/{studyId}/invitationsInvite Study collaborators without exposing invitation tokensmanage_study with action: "invite"
POST/api/v1/studies/{studyId}/exportStart an export in a supported formatexport_study
GET/api/v1/studies/{studyId}/export-statusPoll export statusexport_study / get_study_status
GET/api/v1/studies/{studyId}/export-downloadDownload a completed exportexport_study returns an artifact or link
POST/api/v1/studies/{studyId}/heatmaps/{messageId}/exportStart or return a website-heatmap ZIP exportexport_heatmap
GET/api/v1/studies/{studyId}/heatmaps/{messageId}/export-statusPoll a website-heatmap ZIP exportexport_heatmap
GET/api/v1/studies/{studyId}/heatmaps/{messageId}/export-downloadDownload a completed website-heatmap ZIPexport_heatmap returns a signed URL
GET/api/v1/studies/{studyId}/summaryRead the persisted flexible semantic summaryget_study_summary
POST/api/v1/studies/{studyId}/summaryGenerate or refresh the semantic summaryget_study_summary with refresh: true
PUT/api/v1/studies/{studyId}/sharingEnable or disable the public Study linkmanage_study with action: "set_link_sharing"

Composite creation through audienceConfigs is atomic: if any inline Audience fails, the operation rolls back the Study and Audiences created by that request. The legacy groupIds and groupConfigs request fields remain accepted on deprecated routes; canonical Study routes use audienceIds and audienceConfigs and return studyMode: "study" with an audiences collection.

Guided Studies and durable runs

For any broader objective or more than one question, plan and execute one cohesive multi-question block. Related questions should be organized into named modules or sections and run together; reserve the direct ask endpoint for a genuinely standalone question.

MethodPathPurposeMCP equivalent
POST/api/v1/studies/{studyId}/research-plans/previewCreate or revise a versioned research-plan draftplan_study_questions
POST/api/v1/studies/{studyId}/research-runsConfirm and run the exact reviewed plan revisionrun_study_questions
GET/api/v1/studies/{studyId}/research-runs/{runId}Poll Study progress, methods, artifacts, and calculationsget_study_run
POST/api/v1/studies/{studyId}/runsStart a durable direct Study runask_study for direct questions or run_study_questions for planned research
GET/api/v1/studies/{studyId}/runsList durable runs for a Studyget_study_status / get_study_run
GET/api/v1/runs/{runId}Read durable run statusget_study_status / get_study_run
GET/api/v1/runs/{runId}/eventsRead ordered run events using after and limit cursorsMCP status tools return durable progress
POST/api/v1/runs/{runId}/cancelCancel a running durable jobNo dedicated curated MCP tool
GET/api/v1/research-methodsList versioned methods, execution support, requirements, and fallbackslist_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.

MethodPathPurposeMCP equivalent
GET/api/v1/study-draftsList owned resumable draftslist_study_drafts
POST/api/v1/study-draftsCreate a durable draftsave_study_draft
GET/api/v1/study-drafts/{id}Read one complete draftlist_study_drafts with draftId
PATCH/api/v1/study-drafts/{id}Revise a draft using optimistic concurrencysave_study_draft with draftId and expectedRevision
DELETE/api/v1/study-drafts/{id}Delete a confirmed draftmanage_study_draft with action: "delete"
POST/api/v1/study-drafts/{id}/consumeMark a precise revision consumed and optionally attach it to a Studymanage_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

MethodPathPurposeMCP equivalent
POST/api/v1/chatsCreate a stateful single-Mind, multi-Mind, or Audience-backed chatmanage_chat with action: "create"
POST/api/v1/chats/{chatId}/messagesAppend a user/system message and receive the next responsemanage_chat with action: "send_message"
DELETE/api/v1/chats/{chatId}Delete a confirmed chat and its persisted historymanage_chat with action: "delete"

For a one-off Mind request without server-managed history, use the stateless completion endpoint instead.

Choosing the next reference