Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Minds Public Study Runs API
version: v1
description: 'OpenAPI 3.1.0 spec for the Minds public API (https://getminds.ai/api/v1 / https://api.getminds.ai/v1). Generate a typed TypeScript client by running an OpenAPI generator (e.g. `openapi-typescript`) against `/_openapi.json`. Auth: send `Authorization: Bearer minds_…_key`; create keys in Settings → API Keys.'
servers:
- url: https://api.getminds.ai
description: Production (api subdomain)
- url: https://getminds.ai
description: Production (apex)
security:
- ApiKeyAuth: []
tags:
- name: Study Runs
paths:
/api/v1/studies/{studyId}/runs:
get:
parameters:
- in: path
name: studyId
required: true
schema:
type: string
format: uuid
- in: query
name: limit
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
'200':
description: Most recent durable study runs.
operationId: listStudyRuns
summary: List durable study runs
tags:
- Study Runs
security:
- ApiKeyAuth: []
post:
parameters:
- in: path
name: studyId
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Research planning is required; no run was accepted.
'202':
description: Run accepted durably.
'400':
description: Invalid study, question, or idempotency key.
'401':
description: Missing or invalid API key.
'403':
description: Caller cannot use the study or has reached a plan limit.
'404':
description: Study not found.
'409':
description: Idempotency key reused with different input, or a Mind in an attached Audience has not finished training (code `PANEL_MINDS_NOT_READY`, with `data.notReady` naming them). Retry once training completes.
operationId: createStudyRun
summary: Create a durable study run
description: Atomically accepts a study question and returns a durable run that can be polled, replayed, or cancelled independently of the request connection.
tags:
- Study Runs
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- question
properties:
question:
type: string
minLength: 1
clientRequestId:
type: string
format: uuid
description: Stable idempotency key for safe retries.
audienceIds:
type: array
items:
type: string
format: uuid
description: Optional subset of attached Audiences. Defaults to all Audiences in the Study.
attachments:
type: array
items:
type: object
links:
type: array
items:
type: object
keywords:
type: array
items:
type: object
sourcePolicy:
type: string
enum:
- auto
- knowledge_only
default: auto
modelConnection:
type: object
additionalProperties: false
required:
- id
- revision
properties:
id:
type: string
format: uuid
revision:
type: integer
minimum: 1
description: Verified connection belonging to the caller team, pinned to its current revision. Mutually exclusive with model/provider. Requires the model-connections feature and team entitlement. Applies to Mind responses and verbatim rendering; supporting research analysis retains platform models.
model:
type: string
description: Optional per-request model override. Must be sent together with `provider`.
provider:
type: string
enum:
- openai
- anthropic
- google
description: Provider for the model override. Must be sent together with `model`.
historyMode:
type: string
enum:
- last5
- followup_only
- none
default: none
description: How much of each Mind's own prior answers this run carries. none (default) treats every question as an independent measurement and lets the run process questions in parallel. last5 gives each Mind its own five most recent answers, which costs roughly 2.4x wall-clock and buys ~0.6pp of accuracy. followup_only carries history for conversational turns but not questionnaire items.
responseForm:
type: string
enum:
- concise
- standard
- expanded
description: 'How long and how shaped each answer should be, for qualitative questions: `concise` one short message (5-20 words), `standard` 1-3 sentences (25-90 words), `expanded` 2-5 sentences (70-180 words). Omit to let the question decide, which is the existing behaviour. An authored form outranks the phrasing of the question, so a fixed instrument keeps its exact wording. Ignored for scale, categorical and multiselect questions.'
routeResearchBrief:
type: boolean
default: false
description: When true, a broad or generated research objective returns a reviewable planning_required response instead of being submitted verbatim to every respondent.
components:
securitySchemes:
ApiKeyAuth:
type: http
scheme: bearer
bearerFormat: API Key
description: 'Personal API key. Format: `Bearer minds_…_key`. Create one at https://getminds.ai/settings/api-keys.'