openapi: 3.2.0 info: title: Minds Public Study Templates 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 Templates paths: /api/v1/study-templates/{id}: delete: parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: Success. content: application/json: schema: type: object properties: success: type: boolean '400': description: Invalid template configuration or request. '401': description: Unauthorized. '404': description: Template not found or not owned by the caller. '409': description: Revision changed or a saved Audience/file is unavailable. operationId: deleteStudyTemplate summary: Delete a personal Study template description: 'Templates are private by default. Owners may enable team sharing; current teammates can read and use shared templates. Only owners may update, delete or change sharing. Saved questions are copied into a new editable draft on use; using a template never starts research. Uploaded assets are copied on save and use. A template also carries the research method it was built with: a calculator-backed method that designs its own tasks at execution (Van Westendorp, Gabor-Granger, MaxDiff, conjoint, Kano, NPS, top-box, key drivers, TURF) writes those questions when the Study runs, and the saved questions are asked alongside them.' tags: - Study Templates security: - ApiKeyAuth: [] get: parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: Success. content: application/json: schema: type: object required: - data properties: data: $ref: '#/components/schemas/StudyTemplate' '400': description: Invalid template configuration or request. '401': description: Unauthorized. '404': description: Template not found or not owned by the caller. '409': description: Revision changed or a saved Audience/file is unavailable. operationId: getStudyTemplate summary: Get a personal Study template description: 'Templates are private by default. Owners may enable team sharing; current teammates can read and use shared templates. Only owners may update, delete or change sharing. Saved questions are copied into a new editable draft on use; using a template never starts research. Uploaded assets are copied on save and use. A template also carries the research method it was built with: a calculator-backed method that designs its own tasks at execution (Van Westendorp, Gabor-Granger, MaxDiff, conjoint, Kano, NPS, top-box, key drivers, TURF) writes those questions when the Study runs, and the saved questions are asked alongside them.' tags: - Study Templates security: - ApiKeyAuth: [] patch: parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: Success. content: application/json: schema: type: object required: - data properties: data: $ref: '#/components/schemas/StudyTemplate' '400': description: Invalid template configuration or request. '401': description: Unauthorized. '404': description: Template not found or not owned by the caller. '409': description: Revision changed or a saved Audience/file is unavailable. operationId: updateStudyTemplate summary: Rename or replace a Study template description: 'Templates are private by default. Owners may enable team sharing; current teammates can read and use shared templates. Only owners may update, delete or change sharing. Saved questions are copied into a new editable draft on use; using a template never starts research. Uploaded assets are copied on save and use. A template also carries the research method it was built with: a calculator-backed method that designs its own tasks at execution (Van Westendorp, Gabor-Granger, MaxDiff, conjoint, Kano, NPS, top-box, key drivers, TURF) writes those questions when the Study runs, and the saved questions are asked alongside them.' tags: - Study Templates security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StudyTemplateUpdateInput' /api/v1/study-templates/{id}/use: post: parameters: - name: id in: path required: true schema: type: string format: uuid responses: '201': description: Created. content: application/json: schema: type: object required: - data properties: data: $ref: '#/components/schemas/StudyDraft' '400': description: Invalid template configuration or request. '401': description: Unauthorized. '404': description: Template not found or not owned by the caller. '409': description: Revision changed or a saved Audience/file is unavailable. operationId: instantiateStudyTemplate summary: Create an independent draft from a Study template description: 'Templates are private by default. Owners may enable team sharing; current teammates can read and use shared templates. Only owners may update, delete or change sharing. Saved questions are copied into a new editable draft on use; using a template never starts research. Uploaded assets are copied on save and use. A template also carries the research method it was built with: a calculator-backed method that designs its own tasks at execution (Van Westendorp, Gabor-Granger, MaxDiff, conjoint, Kano, NPS, top-box, key drivers, TURF) writes those questions when the Study runs, and the saved questions are asked alongside them.' tags: - Study Templates security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StudyTemplateUseInput' /api/v1/study-templates: get: parameters: [] responses: '200': description: Success. content: application/json: schema: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/StudyTemplate' '400': description: Invalid template configuration or request. '401': description: Unauthorized. '404': description: Template not found or not owned by the caller. '409': description: Revision changed or a saved Audience/file is unavailable. operationId: listStudyTemplates summary: List your personal Study templates description: 'Templates are private by default. Owners may enable team sharing; current teammates can read and use shared templates. Only owners may update, delete or change sharing. Saved questions are copied into a new editable draft on use; using a template never starts research. Uploaded assets are copied on save and use. A template also carries the research method it was built with: a calculator-backed method that designs its own tasks at execution (Van Westendorp, Gabor-Granger, MaxDiff, conjoint, Kano, NPS, top-box, key drivers, TURF) writes those questions when the Study runs, and the saved questions are asked alongside them.' tags: - Study Templates security: - ApiKeyAuth: [] post: parameters: [] responses: '201': description: Created. content: application/json: schema: type: object required: - data properties: data: $ref: '#/components/schemas/StudyTemplate' '400': description: Invalid template configuration or request. '401': description: Unauthorized. '404': description: Template not found or not owned by the caller. '409': description: Revision changed or a saved file is unavailable. operationId: saveStudyTemplate summary: Save a personal Custom Study template description: 'Templates are private by default. Owners may enable team sharing; current teammates can read and use shared templates. Only owners may update, delete or change sharing. Saved questions are copied into a new editable draft on use; using a template never starts research. Uploaded assets are copied on save and use. A template also carries the research method it was built with: a calculator-backed method that designs its own tasks at execution (Van Westendorp, Gabor-Granger, MaxDiff, conjoint, Kano, NPS, top-box, key drivers, TURF) writes those questions when the Study runs, and the saved questions are asked alongside them.' tags: - Study Templates security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StudyTemplateCreateInput' components: schemas: StudyTemplateUseInput: type: object additionalProperties: false required: - expectedRevision - requestId properties: expectedRevision: type: integer minimum: 1 requestId: type: string format: uuid description: Unique per intended draft; reuse only for retries. StudyDraftPayload: type: object required: - version - state additionalProperties: true properties: version: type: integer enum: - 1 state: type: object additionalProperties: true StudyTemplateCreateInput: type: object additionalProperties: false required: - name - configuration properties: requestId: type: string format: uuid description: Reuse only for retries of the same save. name: type: string minLength: 1 maxLength: 200 configuration: $ref: '#/components/schemas/StudyTemplateConfiguration' StudyTemplate: type: object required: - id - name - revision - configuration - createdAt - updatedAt - isSharedWithTeam - canManage - canShareWithTeam properties: id: type: string format: uuid name: type: string revision: type: integer minimum: 1 isSharedWithTeam: type: boolean canManage: type: boolean description: Only the owner may update, delete or share this template. canShareWithTeam: type: boolean description: The owner has a team, or can turn off existing sharing. configuration: $ref: '#/components/schemas/StudyTemplateConfiguration' createdAt: type: string format: date-time updatedAt: type: string format: date-time StudyTemplateConfiguration: type: object additionalProperties: false required: - version - goal - studyLocale - questions - methodId properties: version: type: integer enum: - 1 goal: type: string enum: - concept - comparison - website - pricing - market - explore studyLocale: type: string enum: - ar - de - en - es - fr - ja - ko - tr - zh methodId: type: string description: A registered research method that is currently available. Methods that design their own tasks at execution (Van Westendorp, MaxDiff, Kano, NPS, …) keep only the qualitative questions in `questions`. questions: type: array minItems: 1 items: type: object additionalProperties: false required: - text - response properties: text: type: string response: $ref: '#/components/schemas/StudyTemplateQuestionResponse' attachments: type: array items: $ref: '#/components/schemas/StudyTemplateAsset' default: [] StudyDraft: type: object required: - id - userId - name - mode - currentStep - revision - status - payload - studyId - startRequestId - startLeaseExpiresAt - createdAt - updatedAt properties: id: type: string format: uuid userId: type: string format: uuid name: type: string mode: type: string enum: - quick - custom currentStep: type: string revision: type: integer minimum: 1 status: type: string enum: - draft - starting - consumed payload: $ref: '#/components/schemas/StudyDraftPayload' studyId: type: - string - 'null' format: uuid startRequestId: type: - string - 'null' format: uuid startLeaseExpiresAt: type: - string - 'null' format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time StudyTemplateUpdateInput: type: object additionalProperties: false required: - expectedRevision anyOf: - required: - name - required: - configuration - required: - isSharedWithTeam properties: name: type: string minLength: 1 maxLength: 200 configuration: $ref: '#/components/schemas/StudyTemplateConfiguration' expectedRevision: type: integer minimum: 1 isSharedWithTeam: type: boolean description: Owner only. Share with the authenticated owner’s current team, or turn sharing off. StudyTemplateQuestionResponse: type: object additionalProperties: false required: - type properties: type: type: string enum: - qualitative - categorical - multiselect - scale scaleRange: type: array items: type: number minItems: 2 maxItems: 2 categoricalOptions: type: array items: type: string maxSelections: type: integer minimum: 1 StudyTemplateAsset: type: object additionalProperties: false required: - id - name - url properties: id: type: string name: type: string url: type: string path: type: string mimeType: type: string kind: type: string enum: - link sizeBytes: type: number minimum: 0 mediaType: type: string enum: - video 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.'