openapi: 3.2.0 info: title: Morning Consult AI API version: 1.0.0 description: The Morning Consult API provides access to various forms of survey data collected by Morning Consult contact: email: api-support@morningconsult.com termsOfService: https://morningconsult.com/mci-terms-and-conditions servers: - url: https://api.morningconsult.com/v1 description: Version 1 API security: - JWT: [] tags: - name: AI description: Morning Consult's AI backed by survey data responses. paths: /ai/resolve: post: summary: Resolve a user query description: 'Given a query about Morning Consult''s syndicated public opinion data sets, pull data from respondent interviews and produce a summary of the data. The query should be a standalone question, as conversation history is not preserved between calls to the endpoint. Responses will typically take around 10 seconds, with more complex queries taking upwards of 20 seconds.' tags: - AI operationId: postAIResolve x-dd-p50-warning-threshold: 12 x-dd-p50-critical-threshold: 20 x-dd-p90-warning-threshold: 25 x-dd-p90-critical-threshold: 40 x-dd-average-warning-threshold: 18 x-dd-average-critical-threshold: 30 x-dd-notification-channel: '@diamond-dogs@morningconsult.com' responses: '200': $ref: '#/components/responses/PostAIResolveOutput' '400': $ref: '#/components/responses/BadRequestError' '500': $ref: '#/components/responses/InternalServerError' requestBody: description: AI resolve input parameters. content: application/json: schema: $ref: '#/components/schemas/PostAIResolveInput' examples: Example: $ref: '#/components/examples/PostAIResolveInput' components: headers: X-Rate-Limit-Reset: description: The time at which the rate limit resets, specified in UTC epoch time (in milliseconds). schema: type: integer example: 1633538752414 X-Rate-Limit-Remaining: description: The number of remaining requests in the current rate limit period. schema: type: integer example: 179 X-Rate-Limit-Limit: description: The rate limit ceiling that is applicable for the current request. schema: type: integer example: 200 schemas: Error: type: object description: Error message. additionalProperties: false example: code: 500 status: Internal Server Error errors: - Oops, something went wrong properties: code: type: integer description: Numeric HTTP status code. example: 500 format: int32 minimum: 100 maximum: 599 status: type: string description: Text description of HTTP status code. example: Internal Server Error errors: type: array description: Messages describing errors. items: title: error type: string description: A specific error message. example: - Oops, something went wrong PostAIResolveInput: type: object additionalProperties: false properties: text: title: Text type: string description: Query text. minLength: 1 maxLength: 1000 pattern: ^[^\0]+$ example: What do women think of Cheerios? required: - text responses: BadRequestError: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' examples: BadRequest: description: Multiple Errors value: code: 400 status: Bad Request errors: - 'invalid value "uuu" for field "country_code": must be 2 characters' - 'invalid value "not base64" for field "pagination_token": must be valid base64' PageSize: description: Invalid Page Size value: code: 400 status: Bad Request errors: - 'invalid value "1000" for field "page_size": must be maximum 100' InternalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' examples: InternalServerError: description: Internal Server Error value: code: 500 status: Internal Server Error errors: - a server error occurred PostAIResolveOutput: description: The response for resolving a query to a summary. content: application/json: schema: type: object properties: summary: description: A summary of the data used to answer a query. type: string required: - summary examples: Response: description: Response to a query value: summary: Here’s a summary of how women in the United States feel about Cheerios... headers: X-Rate-Limit-Limit: $ref: '#/components/headers/X-Rate-Limit-Limit' X-Rate-Limit-Remaining: $ref: '#/components/headers/X-Rate-Limit-Remaining' X-Rate-Limit-Reset: $ref: '#/components/headers/X-Rate-Limit-Reset' examples: PostAIResolveInput: value: text: What do women think of Cheerios? securitySchemes: Basic: type: http scheme: basic description: Username and password credentials for initial authentication. JWT: type: http scheme: bearer bearerFormat: JWT description: JWT Bearer header authentication for performing regular requests. RefreshToken: type: http scheme: bearer description: Refresh Token bearer header authentication for renewing tokens. x-dd-extra-monitors: - "{\n \"name\": \"Henosis: MCP internal service errors on env:{{environment}}\",\n \"type\": \"trace-analytics alert\",\n \"query\": \"trace-analytics(\\\"service:henosis env:{{environment}} operation_name:http.request @span.kind:server @mcp.internal_error:true\\\").index(\\\"trace-search\\\", \\\"djm-search\\\").rollup(\\\"count\\\").last(\\\"5m\\\") > 0\",\n \"message\": \"Henosis MCP returned internal service errors in the last 5 minutes.\\n@pagerduty-henosis-mcp\",\n \"tags\": [\n \"henosis\",\n \"mcp\"\n ],\n \"options\": {\n \"thresholds\": {\n \"critical\": 0\n },\n \"notify_no_data\": false,\n \"include_tags\": true\n },\n \"priority\": 3\n}\n"