Morning Consult AI API

Morning Consult's AI backed by survey data responses.

Operations 1

POST /ai/resolve Resolve a user query #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/morning-consult-ai-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

morning-consult-ai-api-openapi.yml Raw ↑
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"