Morning Consult Data API

Syndicated tracking survey data data responses.

Operations 7

POST /surveys/syndicated/scores Get Scores for Syndicated Timeseries Data #
POST /surveys/syndicated/timeseries Get Syndicated Survey Timeseries Data #
POST /surveys/syndicated/timeseries/batch Submit a Batch Timeseries Request #
POST /scores Get Scores for Timeseries Data #
POST /responses Get Aggregated Question Responses Data #
POST /responses/bulk Submit a Bulk Responses Request #
POST /scores/bulk Submit a Bulk Scores Request #

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-data-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-data-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Morning Consult Data 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: Data
  description: Syndicated tracking survey data data responses.
paths:
  /surveys/syndicated/scores:
    post:
      summary: Get Scores for Syndicated Timeseries Data
      description: 'Deprecated. This endpoint will be sunset on October 1, 2026. Use the [/scores](#POST-postScores) resource API for updated score retrieval.

        Get score data for a particular score. The `score_id` must be valid in the specified `country_code`. Every `question_id` included in the `audience` body must also be from the same `country_code`.'
      tags:
      - Data
      deprecated: true
      operationId: postSurveysSyndicatedScores
      responses:
        '200':
          $ref: '#/components/responses/PostSurveysSyndicatedScoresOutput'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        description: Request body for syndicated tracking score data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostSurveysSyndicatedScoresInput'
            examples:
              Example:
                $ref: '#/components/examples/PostSyndicatedScoresInput'
              ExampleWithEntity:
                $ref: '#/components/examples/PostSyndicatedScoresInputWithEntity'
  /surveys/syndicated/timeseries:
    post:
      summary: Get Syndicated Survey Timeseries Data
      description: 'Deprecated. This endpoint will be sunset on October 1, 2026. Use the [/responses](#POST-postResponses) resource API for updated question response retrieval.

        Get respondents data for a particular question. Every `question_id` included in the request body --- whether as the question of interest or within the `audience` parameter --- must be from the same country.'
      tags:
      - Data
      deprecated: true
      operationId: postSurveysSyndicatedTimeseries
      responses:
        '200':
          $ref: '#/components/responses/PostSurveysSyndicatedTimeseriesOutput'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        description: Request body for syndicated tracking survey data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostSurveysSyndicatedTimeseriesInput'
            examples:
              Example:
                $ref: '#/components/examples/PostSyndicatedTimeseriesInput'
  /surveys/syndicated/timeseries/batch:
    post:
      summary: Submit a Batch Timeseries Request
      description: 'Deprecated. This endpoint will be sunset on October 1, 2026. Use the [/responses](#POST-postResponses) resource API for updated response retrieval.

        Submit a request to asynchronously generate timeseries data for one or more questions and audiences. The max date range for a single request is 10 years. Returns a `request_id` that can be used to poll the status of the report via the [/surveys/syndicated/timeseries/batch/{request_id}](#GET-getSurveysSyndicatedTimeseriesBatchStatus) endpoint. When the report is complete, a download URL will be provided to retrieve the data.'
      tags:
      - Data
      deprecated: true
      operationId: postSurveysSyndicatedTimeseriesBatch
      responses:
        '200':
          $ref: '#/components/responses/PostResponsesBulkOutput'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        description: Request body for submitting a batch timeseries report
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostSurveysSyndicatedTimeseriesBatchInput'
            examples:
              Example:
                $ref: '#/components/examples/PostSurveysSyndicatedTimeseriesBatchInput'
  /scores:
    post:
      summary: Get Scores for Timeseries Data
      description: 'Get score data for a particular score against any data source you have access to. The `score_id` must be valid in the specified `data_source_id` and `country_code`. Every `question_id` included in the `audience` body must also be from the same `country_code`.


        The `min_date` and `max_date` range is bounded to 10 years. When both are omitted, the range defaults to the last 10 years. If only one is provided, the request is rejected.'
      tags:
      - Data
      operationId: postScores
      responses:
        '200':
          $ref: '#/components/responses/PostScoresOutput'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        description: Request body for score data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostScoresInput'
            examples:
              Example:
                $ref: '#/components/examples/PostScoresInput'
              ExampleWithEntity:
                $ref: '#/components/examples/PostScoresInputWithEntity'
  /responses:
    post:
      summary: Get Aggregated Question Responses Data
      description: Get aggregated data for a requested question. The range between `min_date` and `max_date` must not exceed 10 years.
      tags:
      - Data
      operationId: postResponses
      responses:
        '200':
          $ref: '#/components/responses/PostResponsesOutput'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        description: Request body for responses data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostResponsesInput'
            examples:
              Example:
                $ref: '#/components/examples/PostResponsesInput'
  /responses/bulk:
    post:
      summary: Submit a Bulk Responses Request
      description: Submit a request to asynchronously generate timeseries data for one or more questions and audiences from the specified data source. The max date range for a single request is 10 years. Returns a `request_id` that can be used to poll the status of the report via the [/responses/bulk/{request_id}](#GET-getResponsesBulkStatus) endpoint. When the report is complete, a download URL will be provided to retrieve the data.
      tags:
      - Data
      operationId: postResponsesBulk
      responses:
        '200':
          $ref: '#/components/responses/PostResponsesBulkOutput'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        description: Request body for submitting a bulk responses report
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostResponsesBulkInput'
            examples:
              Example:
                $ref: '#/components/examples/PostResponsesBulkInput'
  /scores/bulk:
    post:
      summary: Submit a Bulk Scores Request
      description: Submit a request to asynchronously generate timeseries score data for one or more named scores and audiences from the specified data source. The max date range for a single request is 10 years. Returns a `request_id` that can be used to poll the status of the report via the [/scores/bulk/{request_id}](#GET-getScoresBulkStatus) endpoint. When the report is complete, a download URL will be provided to retrieve the data.
      tags:
      - Data
      operationId: postScoresBulk
      responses:
        '200':
          $ref: '#/components/responses/PostScoresBulkOutput'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        description: Request body for submitting a bulk scores report
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostScoresBulkInput'
            examples:
              Example:
                $ref: '#/components/examples/PostScoresBulkInput'
components:
  schemas:
    PostSurveysSyndicatedTimeseriesInput:
      type: object
      additionalProperties: false
      properties:
        min_date:
          $ref: '#/components/schemas/MinDate'
        max_date:
          $ref: '#/components/schemas/MaxDate'
        audience:
          $ref: '#/components/schemas/Audience'
        aggregation:
          $ref: '#/components/schemas/Aggregation'
        question_id:
          title: Question ID
          type: string
          format: uuid
          description: 'The unique identifier for a question.

            The question itself must have <em>fewer than 100 predefined responses.</em> You can get the number of responses for a question from the <a class="text-break" href="#GET-getSurveysSyndicatedQuestionsByID">/surveys/syndicated/questions/{question_id}</a> endpoint.'
          example: a7ee637c-e5d1-4cf8-b484-8eb372f22941
      required:
      - question_id
    MaxDate:
      type: string
      format: date
      description: Maximum date of data returned in YYYY-MM-DD format. The date provided is inclusive. Omitting this field will return the most recent available trend data.
      example: '2018-01-31'
      pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
      minLength: 10
      maxLength: 10
    PostResponsesBulkInput:
      type: object
      additionalProperties: false
      properties:
        data_source_id:
          $ref: '#/components/schemas/DataSourceID'
        country:
          $ref: '#/components/schemas/CountryCode'
        question_ids:
          type: array
          description: The unique identifiers for the questions to include in the report.
          minItems: 1
          items:
            $ref: '#/components/schemas/QuestionID'
        audiences:
          type: object
          description: A map of audience names to audience definitions. Each named audience will produce a separate trend in the report output. An empty audience object `{}` represents all respondents. If omitted, the report defaults to a single all-respondents trend.
          additionalProperties:
            $ref: '#/components/schemas/Audience'
        min_date:
          $ref: '#/components/schemas/MinDate'
        max_date:
          $ref: '#/components/schemas/MaxDate'
        aggregation:
          $ref: '#/components/schemas/BulkAggregation'
      required:
      - data_source_id
      - country
      - question_ids
      - aggregation
    ResponseID:
      title: ResponseID
      type: string
      pattern: ^[0-9]+$
      minLength: 0
      maxLength: 100
      description: Unique identifier for a question response. Response IDs are only unique within a question, and not across them.
      example: '1'
    PostScoresInput:
      type: object
      additionalProperties: false
      properties:
        data_source_id:
          $ref: '#/components/schemas/DataSourceID'
        min_date:
          $ref: '#/components/schemas/MinDate'
        max_date:
          $ref: '#/components/schemas/MaxDate'
        audience:
          $ref: '#/components/schemas/Audience'
        aggregation:
          $ref: '#/components/schemas/Aggregation'
        score_id:
          $ref: '#/components/schemas/ScoreID'
        country_code:
          $ref: '#/components/schemas/CountryCode'
        entity_id:
          title: Entity ID
          type: string
          description: Entity ID to run the score against if an Entity ID is required.
          example: avon
        component_ids:
          type: array
          description: The component IDs to use when computing the score. Required for scores whose metadata lists `components` (for example "Price Surprise" and "Unavailability"). See [/scores](#GET-getScores) to discover the components available for a score.
          items:
            type: string
          example:
          - home_appliances
      required:
      - data_source_id
      - score_id
      - country_code
    Audience:
      title: Audience
      type: object
      description: 'The description of respondents considered in a request. Data in the response will be filtered to only include respondents who match the audience described in this parameter.

        The `match` field specifies respondents that selected one or more particular response options for a question. The `and`, `or`, and `not` fields allow Boolean logic to be applied to matches. These logic fields can be nested as necessary to create audiences. See <a class="text-break" href="#sample-workflow-building-a-custom-audience">Workflow: Building a Custom Audience</a> for an example.

        The maximum number of conditions that can be used to build an audience in a single request is 20. This includes all nested conditions within `and`, `or`, and `not` fields.'
      oneOf:
      - $ref: '#/components/schemas/AudienceMatch'
      - type: array
        title: and
        description: A list of audience definitions of which all must match.
        items:
          $ref: '#/components/schemas/Audience'
      - type: array
        title: or
        description: A list of audience definitions of which at least one must match.
        items:
          $ref: '#/components/schemas/Audience'
      - type: object
        title: not
        description: A list of audience definitions of which none must match.
        allOf:
        - $ref: '#/components/schemas/Audience'
    DataPoint:
      title: DataPoint
      type: object
      description: An individual data point representing a particular response.
      example:
        percent: 42.953760405946554
        id: '2'
        label: Somewhat Favorable
      properties:
        id:
          $ref: '#/components/schemas/ResponseID'
        label:
          $ref: '#/components/schemas/ResponseLabel'
        percent:
          type: number
          format: double
          description: Numeric representation of the value associated with a response. This is the weighted percentage of respondents who chose the corresponding response to the requested question on the given date, or the date range if aggregated over an interval.
          minimum: 0
          maximum: 100
    Aggregation:
      title: Aggregation
      type: object
      description: 'Options for aggregating data. For calendar durations, sample for that duration will be aggregated into a single data point. For example, requesting data between "2018-01-01" and "2018-12-31" with the month interval will return a data point for each month.

        Each data point representing an interval will be timestamped with the start date of that interval. The "week" interval starts on Monday, and the "all" option will return a single data point aggregating all trend data.'
      example:
        interval: month
      properties:
        interval:
          type: string
          description: Interval to aggregate the data.
          enum:
          - day
          - week
          - month
          - quarter
          - year
          - all
          example: month
      required:
      - interval
    PostSurveysSyndicatedScoresInput:
      type: object
      additionalProperties: false
      properties:
        min_date:
          $ref: '#/components/schemas/MinDate'
        max_date:
          $ref: '#/components/schemas/MaxDate'
        audience:
          $ref: '#/components/schemas/Audience'
        aggregation:
          $ref: '#/components/schemas/Aggregation'
        score_id:
          $ref: '#/components/schemas/ScoreID'
        country_code:
          $ref: '#/components/schemas/CountryCode'
        entity_id:
          title: Entity ID
          type: string
          description: Entity ID to run the score against if an Entity ID is required.
          example: avon
      required:
      - score_id
      - country_code
    PostSurveysSyndicatedTimeseriesBatchInput:
      type: object
      additionalProperties: false
      properties:
        country:
          $ref: '#/components/schemas/CountryCode'
        question_ids:
          type: array
          description: The unique identifiers for the questions to include in the report.
          minItems: 1
          items:
            $ref: '#/components/schemas/QuestionID'
        audiences:
          type: object
          description: A map of audience names to audience definitions. Each named audience will produce a separate trend in the report output. An empty audience object `{}` represents all respondents. If omitted, the report defaults to a single all-respondents trend.
          additionalProperties:
            $ref: '#/components/schemas/Audience'
        min_date:
          $ref: '#/components/schemas/MinDate'
        max_date:
          $ref: '#/components/schemas/MaxDate'
        aggregation:
          $ref: '#/components/schemas/BulkAggregation'
      required:
      - country
      - question_ids
      - aggregation
    BulkAggregation:
      title: BulkAggregation
      type: string
      description: 'Options for aggregating data. For calendar durations, sample for that duration will be aggregated into a single data point. For example, requesting data between "2018-01-01" and "2018-12-31" with the month interval will return a data point for each month.

        Each data point representing an interval will be timestamped with the start date of that interval. The "week" interval starts on Monday, and the "all" option will return a single data point aggregating all trend data.'
      enum:
      - day
      - week
      - month
      - quarter
      - year
      example: month
    AudienceMatch:
      type: object
      title: match
      description: A question ID and the valid responses for that question. The `response_ids` are a list of IDs which the question must match one of in order for the response to be included in the final aggregation.
      example:
        question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
        response_ids:
        - '1'
        - '2'
      properties:
        question_id:
          $ref: '#/components/schemas/QuestionID'
        response_ids:
          type: array
          description: 'The list of IDs which the question must match one of.

            Response IDs can be found from the [/surveys/syndicated/questions](#GET-getSurveysSyndicatedQuestions) and [/surveys/syndicated/questions/{question_id}](#GET-getSurveysSyndicatedQuestionsByID) endpoints under the `responses[]` array.'
          minItems: 1
          maxItems: 100
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ResponseID'
      required:
      - question_id
      - response_ids
    ScoreDataPoint:
      title: Score Data Point
      type: object
      description: Data point associated with a score.
      example:
        date: '2025-11-14'
        score:
          value: 43
        total_n: 1550
      properties:
        date:
          type: string
          format: date
          description: Date of the sample in YYYY-MM-DD format. For interval aggregations, this date represents the start date of that interval.
          example: '2019-08-13'
          pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
          minLength: 10
          maxLength: 10
        score:
          $ref: '#/components/schemas/ScoreDataPointValue'
        total_n:
          type: number
          format: double
          description: Weighted number of respondents for this data point.
          minimum: 0
    ScoreID:
      title: Score ID
      description: The unique identifier for a score.
      type: string
      format: uuid
      example: 7fa7d4a5-8b79-462c-b9ae-03a0431cb5e5
    ResponseLabel:
      title: ResponseLabel
      type: string
      description: The full textual label for the response, as selected by a respondent.
      example: Very Favorable
    CountryCode:
      title: CountryCode
      description: Two letter [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. This can be used in the `country_code` query parameter of multiple endpoints to limit results to the specific country.
      type: string
      example: us
      pattern: ^[a-z]+
      minLength: 2
      maxLength: 2
    PostScoresBulkOutput:
      type: object
      properties:
        request_id:
          type: string
          format: uuid
          description: The unique identifier for the bulk scores request. Use this ID to poll the status of the report via the [/scores/bulk/{request_id}](#GET-getScoresBulkStatus) endpoint.
          example: b1a2c3d4-e5f6-7890-abcd-ef1234567890
    PostScoresBulkInput:
      type: object
      additionalProperties: false
      properties:
        data_source_id:
          $ref: '#/components/schemas/DataSourceID'
        country:
          $ref: '#/components/schemas/CountryCode'
        scores:
          type: object
          description: A map of caller-defined score names to score selections. Each named score will appear as a separate series in the report output. Score names must be unique within a request.
          minProperties: 1
          additionalProperties:
            $ref: '#/components/schemas/NamedScore'
        audiences:
          type: object
          description: A map of audience names to audience definitions. Each named audience will produce a separate series in the report output. An empty audience object `{}` represents all respondents. If omitted, the report defaults to a single all-respondents series.
          additionalProperties:
            $ref: '#/components/schemas/Audience'
        min_date:
          $ref: '#/components/schemas/MinDate'
        max_date:
          $ref: '#/components/schemas/MaxDate'
        aggregation:
          $ref: '#/components/schemas/BulkAggregation'
      required:
      - data_source_id
      - country
      - scores
      - aggregation
    PostResponsesInput:
      type: object
      additionalProperties: false
      properties:
        data_source_id:
          $ref: '#/components/schemas/DataSourceID'
        question_id:
          $ref: '#/components/schemas/QuestionID'
        min_date:
          $ref: '#/components/schemas/MinDate'
        max_date:
          $ref: '#/components/schemas/MaxDate'
        audience:
          $ref: '#/components/schemas/Audience'
        aggregation:
          $ref: '#/components/schemas/Aggregation'
      required:
      - data_source_id
      - question_id
    PostResponsesBulkOutput:
      type: object
      properties:
        request_id:
          type: string
          format: uuid
          description: The unique identifier for the bulk responses request. Use this ID to poll the status of the report via the [/responses/bulk/{request_id}](#GET-getResponsesBulkStatus) endpoint.
          example: b1a2c3d4-e5f6-7890-abcd-ef1234567890
    DataSourceID:
      title: Data Source ID
      description: The unique identifier for a data source.
      type: string
      format: uuid
      example: 00de2081-e013-411d-823c-cd483283e38d
    NamedScore:
      title: NamedScore
      type: object
      description: Selection of a single score, optionally bound to a specific entity and subset of components, to include in a bulk scores report.
      additionalProperties: false
      properties:
        score_id:
          $ref: '#/components/schemas/ScoreID'
        entity_id:
          type: string
          description: Entity ID to run the score against if the score's entity type is set. See [/entities](#GET-getEntities) to discover the entities available for a country and data source.
          example: nike
        component_ids:
          type: array
          description: The component IDs to use when computing the score. Required for scores whose metadata lists `components` (for example "Price Surprise" and "Unavailability"). See [/scores](#GET-getScores) to discover the components available for a score.
          items:
            type: string
          example:
          - home_appliances
      required:
      - score_id
    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
    QuestionID:
      title: Question ID
      description: The unique identifier for a question.
      type: string
      format: uuid
      example: a7ee637c-e5d1-4cf8-b484-8eb372f22941
    MinDate:
      type: string
      format: date
      description: Minimum date of data returned in YYYY-MM-DD format. The date provided is inclusive. Omitting this field will return the earliest available trend data.
      example: '2018-01-31'
      pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
      minLength: 10
      maxLength: 10
    TimeseriesDataPoint:
      title: TimeseriesDataPoint
      type: object
      description: Data point associated with a single survey data trend.
      example:
        date: '2017-11-23'
        responses:
        - percent: 42.953760405946554
          id: '1'
          label: Very Favorable
        - percent: 57.046239594053446
          id: '2'
          label: Somewhat Favorable
        total_n: 1570
      properties:
        date:
          type: string
          format: date
          description: Date of the sample in YYYY-MM-DD format. For interval aggregations, this date represents the start date of that interval.
          example: '2019-08-13'
          pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
          minLength: 10
          maxLength: 10
        total_n:
          type: number
          format: double
          description: Weighted number of respondents for this data point.
          minimum: 0
        responses:
          type: array
          description: Individual data points associated with a specific response.
          items:
            $ref: '#/components/schemas/DataPoint'
    ScoreDataPointValue:
      title: Score Data Point Value
      type: object
      description: Data point value associated with a score.
      example:
        value: 43
      properties:
        value:
          type: number
          format: double
          description: Calculated score.
  examples:
    PostSyndicatedTimeseriesInput:
      value:
        min_date: '2018-01-01'
        max_date: '2018-01-31'
        audience:
          and:
          - match:
              question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
              response_ids:
              - '1'
              - '2'
          - or:
            - match:
                question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
                response_ids:
                - '1'
                - '2'
            - match:
                question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
                response_ids:
                - '1'
                - '2'
          - not:
              match:
                question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
                response_ids:
                - '1'
                - '2'
        question_id: a7ee637c-e5d1-4cf8-b484-8eb372f22941
        aggregation:
          interval: month
    PostSyndicatedScoresInput:
      value:
        min_date: '2025-01-01'
        max_date: '2025-01-31'
        audience:
          and:
          - match:
              question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
              response_ids:
              - '1'
              - '2'
          - or:
            - match:
                question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
                response_ids:
                - '1'
                - '2'
            - match:
                question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
                response_ids:
                - '1'
                - '2'
          - not:
              match:
                question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
                response_ids:
                - '1'
                - '2'
        score_id: 48ef9961-1dc8-42d1-b03c-c480681bc732
        aggregation:
          interval: month
    PostResponsesBulkOutput:
      value:
        request_id: b1a2c3d4-e5f6-7890-abcd-ef1234567890
    PostScoresInputWithEntity:
      value:
        data_source_id: 00de2081-e013-411d-823c-cd483283e38d
        min_date: '2025-01-01'
        max_date: '2025-01-31'
        score_id: 7fa7d4a5-8b79-462c-b9ae-03a0431cb5e5
        country_code: us
        entity_id: avon
    PostResponsesBulkInput:
      value:
        data_source_id: 00de2081-e013-411d-823c-cd483283e38d
        country: us
        question_ids:
        - a7ee637c-e5d1-4cf8-b484-8eb372f22941
        - 29433f2b-3ea0-4214-ae8f-9ad09549c082
        audiences:
          women:
            match:
              question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
              response_ids:
              - '2'
        min_date: '2024-01-01'
        max_date: '2024-12-31'
        aggregation: month
    PostResponsesInput:
      value:
        data_source_id: 00de2081-e013-411d-823c-cd483283e38d
        question_id: a7ee637c-e5d1-4cf8-b484-8eb372f22941
        min_date: '2018-01-01'
        max_date: '2018-01-31'
        audience:
          and:
          - match:
              question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
              response_ids:
              - '1'
              - '2'
        aggregation:
          interval: month
    PostScoresInput:
      value:
        data_source_id: 00de2081-e013-411d-823c-cd483283e38d
        min_date: '2025-01-01'
        max_date: '2025-01-31'
        audience:
          and:
          - match:
              question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
              response_ids:
              - '1'
              - '2'
        score_id: 48ef9961-1dc8-42d1-b03c-c480681bc732
        country_code: us
        aggregation:
          interval: month
    PostSurveysSyndicatedTimeseriesBatchInput:
      value:
        country: us
        question_ids:
        - a7ee637c-e5d1-4cf8-b484-8eb372f22941
        - 29433f2b-3ea0-4214-ae8f-9ad09549c082
        audiences:
          women:
            match:
              question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
              response_ids:
              - '2'
        min_date: '2024-01-01'
        max_date: '2024-12-31'
        aggregation: month
    PostScoresBulkInput:
      value:
        data_source_id: 00de2081-e013-411d-823c-cd483283e38d
        country: us
        scores:
          nike_net_favorability:
            score_id: 6558ddce-af98-4867-bb84-3bf99342968c
            entity_id: nike
        audiences:
          women:
            match:
              question_id: 29433f2b-3ea0-4214-ae8f-9ad09549c082
              response_ids:
              - '2'
        min_date: '2024-01-01'
        max_date: '2024-12-31'
        aggregation: month
    PostScoresBulkOutput:
      value:
        request_id: b1a2c3d4-e5f6-7890-abcd-ef1234567890
    PostSyndicatedScoresInputWithEntity:
      value:
        min_date: '2025-01-01'
        max_date: '2025-01-31'
        score_i

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/morning-consult/refs/heads/main/openapi/morning-consult-data-api-openapi.yml