Morning Consult · Arazzo Workflow

Morning Consult — bulk Data Bridge load

Version 1.0.0

Authenticate, resolve the data source and questions, submit an asynchronous bulk responses request, then poll it to completion for the Parquet result.

1 workflow 1 source API 1 provider
View Spec View on GitHub CompanyMarket ResearchSurvey DataConsumer IntelligenceBrand TrackingDecision IntelligencePublic OpinionAnalyticsDataArtificial IntelligenceArazzoWorkflows

Provider

morning-consult

Workflows

bulk-responses-load
Queue and poll a Data Bridge bulk responses job.
The Data Bridge bucket allows only 100 submissions per day, so batch every question you need into one request. There is no webhook — polling is the only completion signal.
5 steps inputs: aggregation, country_code, max_date, min_date, password, question_query, username outputs: request_id, result
1
authenticate
postAuthToken
2
list-data-sources
getDataSources
3
find-questions
getDataSourceQuestions
Resolve the question IDs to include in the bulk request.
4
submit-bulk
postResponsesBulk
Submit the asynchronous bulk responses request.
5
poll-bulk
getResponsesBulkStatus
Poll until the job completes and the Parquet download is available.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Morning Consult — bulk Data Bridge load
  version: 1.0.0
  description: >-
    Authenticate, resolve the data source and questions, submit an asynchronous bulk
    responses request, then poll it to completion for the Parquet result.
sourceDescriptions:
- name: morningConsult
  url: ../openapi/morning-consult-openapi-original.yml
  type: openapi
workflows:
- workflowId: bulk-responses-load
  summary: Queue and poll a Data Bridge bulk responses job.
  description: >-
    The Data Bridge bucket allows only 100 submissions per day, so batch every question
    you need into one request. There is no webhook — polling is the only completion
    signal.
  inputs:
    type: object
    required: [username, password, country_code]
    properties:
      username:
        type: string
      password:
        type: string
      country_code:
        type: string
        example: US
      question_query:
        type: string
        description: Search term used to select the questions to include.
      min_date:
        type: string
        example: '2025-01-01'
      max_date:
        type: string
        example: '2025-03-31'
      aggregation:
        type: string
        description: 'BulkAggregation: day | week | month | quarter | year (not "all").'
        example: month
  steps:
  - stepId: authenticate
    operationId: postAuthToken
    outputs:
      id_token: $response.body#/id_token
  - stepId: list-data-sources
    operationId: getDataSources
    outputs:
      data_source_id: $response.body#/data_sources/0/id
  - stepId: find-questions
    description: Resolve the question IDs to include in the bulk request.
    operationId: getDataSourceQuestions
    parameters:
    - name: data_source_id
      in: path
      value: $steps.list-data-sources.outputs.data_source_id
    - name: country_code
      in: path
      value: $inputs.country_code
    - name: query
      in: query
      value: $inputs.question_query
    - name: page_size
      in: query
      value: 100
    outputs:
      question_id: $response.body#/questions/0/id
  - stepId: submit-bulk
    description: Submit the asynchronous bulk responses request.
    operationId: postResponsesBulk
    requestBody:
      contentType: application/json
      payload:
        data_source_id: $steps.list-data-sources.outputs.data_source_id
        country: $inputs.country_code
        question_ids:
        - $steps.find-questions.outputs.question_id
        aggregation: $inputs.aggregation
        min_date: $inputs.min_date
        max_date: $inputs.max_date
    outputs:
      request_id: $response.body#/request_id
  - stepId: poll-bulk
    description: Poll until the job completes and the Parquet download is available.
    operationId: getResponsesBulkStatus
    parameters:
    - name: request_id
      in: path
      value: $steps.submit-bulk.outputs.request_id
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body
  outputs:
    request_id: $steps.submit-bulk.outputs.request_id
    result: $steps.poll-bulk.outputs.status

Work with this as data

Every workflow 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 arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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 workflow
curl "https://apis.io/api/v1/arazzo/morning-consult-bulk-data-bridge"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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