Demystdata API

Demystdata API as documented publicly: 24 operations. Contract generated from the documentation by API Evangelist (2026-10-23); not the provider's own document.

Operations 24

POST /aegean_batch_inputs POST /aegean_batch_inputs #
POST /aegean_batch_runs POST /aegean_batch_runs #
GET /aegean_batch_runs/{aegeanbatchrunid} GET /aegean_batch_runs/{aegeanBatchRunId} #
GET /catalog/data_sources GET /catalog/data_sources #
GET /catalog/providers GET /catalog/providers #
GET /catalog/providers/{providerid} GET /catalog/providers/{providerId} #
GET /categories GET /categories #
GET /download/get_file_list GET /download/get_file_list #
POST /jwt/create POST /jwt/create #
GET /list_regions GET /list_regions #
POST /oauth/token POST /oauth/token #
GET /presigned_batch_upload_url GET /presigned_batch_upload_url #
GET /regions GET /regions #
GET /table_providers/{tableProviderId}/download_sample_data Example request for sample data of provider 1490. #
GET /table_providers/[ID]/download_sample_data Get URL for sample CSV data of a connector. #
POST /table_providers/{tableproviderid}/download_sample_data POST /table_providers/{tableProviderId}/download_sample_data #
GET /table_providers/{tableproviderid}/provider_versions GET /table_providers/{tableProviderId}/provider_versions #
GET /tags GET /tags #
GET /upload/get_url GET /upload/get_url #
GET /upload/new_file_uploaded GET /upload/new_file_uploaded #
GET /v2/channel GET /v2/channel #
POST /v2/channel POST /v2/channel #
PUT /v2/channel PUT /v2/channel #

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/demystdata:demystdata-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

demystdata-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Demystdata API
  version: '2026-10-23'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-23: 24 operation(s) read from 2 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; Demystdata has published no machine-readable contract that the
    pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 24
    documentation: 0
    pages-with-code: 2
    pages-read: 2
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-23'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://demyst.com/console/documentation/integration
  - https://demyst.com/console/documentation/knowledge_base/demyst_file_transfer
paths:
  /aegean_batch_inputs:
    post:
      operationId: post_aegean_batch_inputs
      tags:
      - Aegean Batch Inputs
      summary: POST /aegean_batch_inputs
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://console.demystdata.com/aegean_batch_inputs  -H 'content-type: application/json'  -H \"authorization: Bearer\
          \ xxxx\"  -H 'accept: application/json'  -d '\n {\n \"aegean_batch_input\": {\n \"headers\": [\"email_address\"],\n \"name\": \"batches/2ec89768-7183-1234-92a8-486961cb4716/input_file.csv\"\
          ,\n \"num_rows\": 2,\n \"region_id\": 1,\n \"s3_object_key\": \"batches/2ec89768-7183-1234-92a8-486961cb4716\"\n"
  /aegean_batch_runs:
    post:
      operationId: post_aegean_batch_runs
      tags:
      - Aegean Batch Runs
      summary: POST /aegean_batch_runs
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://console.demystdata.com/aegean_batch_runs  -H 'content-type: application/json'  -H \"authorization: Bearer\
          \ xxx\" -H 'accept: application/json'  -d '\n {\n \"aegean_batch_run\": {\n \"aegean_batch_input_id\": 45991,\n \"name\": \"email-validation-hsingh@demystdata.com-2022-10-19\"\
          ,\n \"channel_id\": 6292,\n \"region_id\": 1\n }\n }'\n After starting a batch, you will get the Batch Enrichment ID that c"
  /aegean_batch_runs/{aegeanbatchrunid}:
    get:
      operationId: get_aegean_batch_runs_aegeanbatchrunid
      tags:
      - Aegean Batch Runs
      summary: GET /aegean_batch_runs/{aegeanBatchRunId}
      x-source: https://demyst.com/console/documentation/integration
      parameters:
      - name: aegeanbatchrunid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET 'https://console.demystdata.com/aegean_batch_runs/45259'  --header 'Authorization: Bearer xxxx'  --header 'Content-Type:\
          \ application/json'  --header 'Accept: application/json'\n The state in the response could be one of the following and it usually progresses\
          \ in the following order \n draft - If you set the batch to draft, it will stay in draft unless draft is set to False. This can be u"
  /catalog/data_sources:
    get:
      operationId: get_catalog_data_sources
      tags:
      - Catalog
      summary: GET /catalog/data_sources
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/catalog/data_sources'  --header 'Content-Type: application/json'\
          \  --header 'Authorization: Bearer [BEARER]'\n To view the regions[] we have available so far:"
  /catalog/providers:
    get:
      operationId: get_catalog_providers
      tags:
      - Catalog
      summary: GET /catalog/providers
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/catalog/providers'  --header 'Authorization: Bearer [BEARER]'\
          \  --header 'Accept: application/json'  --header 'Content-Type: application/json'\n The total number of accessible providers is the\
          \ value total_entries in the \"pagination\" dictionary at the top of the response. Use this value to replace the variable [TOTAL_ENTRIES]\
          \ in Part 2.\n P"
  /catalog/providers/{providerid}:
    get:
      operationId: get_catalog_providers_providerid
      tags:
      - Catalog
      summary: GET /catalog/providers/{providerId}
      x-source: https://demyst.com/console/documentation/integration
      parameters:
      - name: providerid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/catalog/providers/1490'  --header 'Authorization: Bearer [BEARER]'\
          \  --header 'Accept: application/json'  --header 'Content-Type: application/json'\n The entire sample output will be like below. The\
          \ schema can be found at the following locations:\n Input Schema Location → .latest_version.schema[0].input \n Output Schema Location\
          \ → .latest_v"
  /catalog/providers/{providerid}/related:
    get:
      operationId: get_catalog_providers_providerid_related
      tags:
      - Catalog
      summary: GET /catalog/providers/{providerId}/related
      x-source: https://demyst.com/console/documentation/integration
      parameters:
      - name: providerid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCatalogProvidersProvideridRelatedResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/catalog/providers/61/related'  --header 'Accept: application/json'\
          \  --header 'Content-Type: application/json'  --header 'Authorization: Bearer [BEARER]'\n The output of this call has the following\
          \ format:\n [\n {\n \"alias\": \"\",\n \"description\": \"Nomino Negative Media enables you to search the latest negative media, for\
          \ screening and research"
  /categories:
    get:
      operationId: get_categories
      tags:
      - Categories
      summary: GET /categories
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/categories'  --header 'Content-Type: application/json'  --header\
          \ 'Authorization: Bearer [BEARER]'\n Search functionality works best using Demyst Filters. There is some leniency with tags[] but for\
          \ accuracy and easy troubleshooting, it is recommended to use the full tag and not keywords. Further, if a value in regions[] is either\
          \ unrecogn"
  /download/get_file_list:
    get:
      operationId: get_download_get_file_list
      tags:
      - Download
      summary: GET /download/get_file_list
      x-source: https://demyst.com/console/documentation/knowledge_base/demyst_file_transfer
      parameters:
      - name: direction
        in: query
        required: false
        schema:
          type: string
      - name: region_code
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET  'https://console.demystdata.com/download/get_file_list?direction=download&region_code=us'  -H 'Accept: application/json'\
          \  -H 'Authorization: REPLACE_WITH_TOKEN'  -H 'Content-Type: application/json'  To upload the file using HTTPS Request, you will have\
          \ to follow all the\n steps from below\n - Request to generate the token for the Get Signed URL and Notify Demyst\n of upload steps\
          \ below\n "
  /jwt/create:
    post:
      operationId: post_jwt_create
      tags:
      - Jwt
      summary: POST /jwt/create
      x-source: https://demyst.com/console/documentation/integration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostJwtCreateRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostJwtCreateResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST  https://console.demystdata.com/jwt/create  -H 'Content-Type: application/json'  -d '{\n \"email_address\": \"\
          EMAIL\",\n \"password\": \"PASS\"\n }'"
  /list_regions:
    get:
      operationId: get_list_regions
      tags:
      - List Regions
      summary: GET /list_regions
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetListRegionsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/list_regions'  --header 'Accept: application/json'  --header 'Content-Type:\
          \ application/json'  --header 'Authorization: Bearer xxxxx'\n The response will be a list of IDs and Region Names. For this example,\
          \ we will go with the US region \n [\n {\n \"id\":1,\n \"name\":\"United States\",\n \"code\":\"us\"\n }\n ]\n Generate Pre-Signed URL\
          \ for uploading Inp"
  /oauth/token:
    post:
      operationId: post_oauth_token
      tags:
      - Oauth
      summary: POST /oauth/token
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostOauthTokenResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST  https://gw.us.demystdata.com/oauth/token  -d 'grant_type=password&client_id=DEMYST_GENERATED_ID&  client_secret=DEMYST_GENERATED_SECRET&\
          \  username=CLIENT_PROVIDED_USER&  password=CLIENT_PROVIDED_PASS'\n Demyst will issue an Access token (API Key) with a TTL of 10 minutes,\
          \ as well as a Refresh token:"
  /presigned_batch_upload_url:
    get:
      operationId: get_presigned_batch_upload_url
      tags:
      - Presigned Batch Upload Url
      summary: GET /presigned_batch_upload_url
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPresignedBatchUploadUrlResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET 'https://console.demystdata.com/presigned_batch_upload_url'  --header 'content-type: application/json'  --header\
          \ 'Accept: application/json'  --header 'Authorization: Bearer xxxx'  --data-raw '{\n \"region_id\": 1\n }\n The response will be a URL\
          \ and Object Key as below \n {\n \"presigned_url\": \"PRESIGNED_URL_TO_UPLOAD_FILE\",\n \"s3_object_key\": \"batches/2ec89768-7183-1234-92a8-486961cb4716\"\
          \n }\n "
  /regions:
    get:
      operationId: get_regions
      tags:
      - Regions
      summary: GET /regions
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/regions'  --header 'Content-Type: application/json'  --header\
          \ 'Authorization: Bearer [BEARER]'\n To view the primary categories[] / entities:"
  /table_providers/{tableProviderId}/download_sample_data:
    get:
      operationId: get_table_providers_tableProviderId_download_sample_data
      tags:
      - Table Providers
      summary: Example request for sample data of provider 1490.
      description: Sample data download URL for provider 1490.
      x-source: https://demyst.com/console/documentation/integration
      parameters:
      - name: tableProviderId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer token.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTableProvidersTableprovideridDownloadSampleDataResponse'
      x-evidence:
        kind: documentation
  /table_providers/[ID]/download_sample_data:
    get:
      operationId: get_table_providers_ID_download_sample_data
      tags:
      - Table Providers
      summary: Get URL for sample CSV data of a connector.
      description: Returns a presigned URL to download sample data.
      x-source: https://demyst.com/console/documentation/integration
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer token.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTableProvidersIdDownloadSampleDataResponse'
      x-evidence:
        kind: documentation
  /table_providers/{tableproviderid}/download_sample_data:
    post:
      operationId: post_table_providers_tableproviderid_download_sample_data
      tags:
      - Table Providers
      summary: POST /table_providers/{tableProviderId}/download_sample_data
      x-source: https://demyst.com/console/documentation/integration
      parameters:
      - name: tableproviderid
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request POST 'https://console.demystdata.com/table_providers/1490/download_sample_data'  --header 'Authorization:\
          \ Bearer [BEARER]'  --header 'Accept: application/json'  --header 'Content-Type: application/json'\n Within the output of this request\
          \ will be a URL that will look something like \"url\": \"[SAMPLE_DATA_URL]\" . Copy the entirety of the link provided in the response\
          \ and use "
  /table_providers/{tableproviderid}/provider_versions:
    get:
      operationId: get_table_providers_tableproviderid_provider_versions
      tags:
      - Table Providers
      summary: GET /table_providers/{tableProviderId}/provider_versions
      x-source: https://demyst.com/console/documentation/integration
      parameters:
      - name: tableproviderid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET 'https://console.demystdata.com/table_providers/15/provider_versions'  --header 'Accept: application/json'  --header\
          \ 'Content-Type: application/json'  --header 'Authorization: Bearer xxxxxx'\n Tracking Batch Status using Enrich ID \n You can track\
          \ the status using the Batch Enrichment ID which will be 45259 in this example as we created the same from the last call above. "
  /tags:
    get:
      operationId: get_tags
      tags:
      - Tags
      summary: GET /tags
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location --request GET 'https://console.demystdata.com/tags'  --header 'Content-Type: application/json'  --header 'Authorization:\
          \ Bearer [BEARER]'\n To view the data_sources[] in our catalog:"
  /upload/get_url:
    get:
      operationId: get_upload_get_url
      tags:
      - Upload
      summary: GET /upload/get_url
      x-source: https://demyst.com/console/documentation/knowledge_base/demyst_file_transfer
      parameters:
      - name: filename
        in: query
        required: false
        schema:
          type: string
      - name: organization_id
        in: query
        required: false
        schema:
          type: string
      - name: region_code
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X GET  'https://console.demystdata.com/upload/get_url?filename=test.csv&region_code=us&organization_id=3'  -H 'accept:\
          \ application/json'  -H 'authorization: REPLACE_WITH_TOKEN'  -H 'content-type: application/json' \n - Put File. Response will contain\n\
          \ signed_url and\n s3_object_id .\n signed_url will be needed for Put File\n step whereas s3_object_id will be needed\n for Notify Demyst\
          \ of upload s"
  /upload/new_file_uploaded:
    get:
      operationId: get_upload_new_file_uploaded
      tags:
      - Upload
      summary: GET /upload/new_file_uploaded
      x-source: https://demyst.com/console/documentation/knowledge_base/demyst_file_transfer
      parameters:
      - name: filename
        in: query
        required: false
        schema:
          type: string
      - name: organization_id
        in: query
        required: false
        schema:
          type: string
      - name: region_code
        in: query
        required: false
        schema:
          type: string
      - name: s3_object_id
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X GET  ''https://console.demystdata.com/upload/new_file_uploaded?filename=test.csv&region_code=us&organization_id=3&s3_object_id=REPLACE_WITH_S3_OBJECT_ID''  -H
          ''accept: application/json''  -H ''authorization: REPLACE_WITH_TOKEN''  -H ''content-type: application/json'''
  /v2/channel:
    get:
      operationId: get_v2_channel
      tags:
      - Channel
      summary: GET /v2/channel
      x-source: https://demyst.com/console/documentation/integration
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV2ChannelResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl request with token generation:\n POST \n https://gw.us.demystdata.com/v2/channel "
    post:
      operationId: post_v2_channel
      tags:
      - Channel
      summary: POST /v2/channel
      x-source: https://demyst.com/console/documentation/integration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV2ChannelRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV2ChannelResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST  https://gw.us.demystdata.com/v2/channel  -H 'Content-Type: application/json'  -d '{\n \"api_key\": \"xxxxxxxxxxxxxxxxxxxxxx\"\
          ,\n \"id\": 1020,\n \"inputs\": {\n }\n }'\n JWT \n JSON Web Tokens can be used in compliance with the industry-standard\n RFC 7519\
          \ method.\n Tokens can be generated with the email address (username) and\n password of an account that has provisioned access to the\
          \ Demyst\n platfor"
    put:
      operationId: put_v2_channel
      tags:
      - Channel
      summary: PUT /v2/channel
      x-source: https://demyst.com/console/documentation/knowledge_base/demyst_file_transfer
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X PUT  'REPLACE_WITH_SIGNED_URL'  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'\
          \  -F data=@test.csv\n - Notify Demyst of upload (Also enables display on UI) - Important. Same\n as Get Signed URL step you can ignore\
          \ organization_id.\n GET \n https://gw.us.demystdata.com/v2/channel"
components:
  schemas:
    GetCatalogProvidersProvideridRelatedResponse:
      type: object
      properties:
        current_page:
          type: integer
        total_pages:
          type: integer
        total_entries:
          type: integer
    PostJwtCreateRequest:
      type: object
      properties:
        email_address:
          type: string
        password:
          type: string
    PostJwtCreateResponse:
      type: object
      properties:
        token_type:
          type: string
        access_token:
          type: string
        expires_at:
          type: string
          format: date-time
        refresh_token:
          type: string
    GetListRegionsResponse:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        code:
          type: string
    PostOauthTokenResponse:
      type: object
      properties:
        token_type:
          type: string
        access_token:
          type: string
        expires_at:
          type: string
          format: date-time
        refresh_token:
          type: string
    GetPresignedBatchUploadUrlResponse:
      type: object
      properties:
        presigned_url:
          type: string
        s3_object_key:
          type: string
    GetTableProvidersTableprovideridDownloadSampleDataResponse:
      type: object
      properties:
        url:
          type: string
    GetTableProvidersIdDownloadSampleDataResponse:
      type: object
      properties:
        url:
          type: string
    GetV2ChannelResponse:
      type: object
      properties:
        token_type:
          type: string
        access_token:
          type: string
        expires_at:
          type: string
          format: date-time
        refresh_token:
          type: string
    PostV2ChannelRequest:
      type: object
      properties:
        api_key:
          type: string
        id:
          type: integer
        inputs:
          type: object
    PostV2ChannelResponse:
      type: object
      properties:
        token_type:
          type: string
        access_token:
          type: string
        expires_at:
          type: string
          format: date-time
        refresh_token:
          type: string
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Aegean Batch Inputs
- name: Aegean Batch Runs
- name: Catalog
- name: Categories
- name: Channel
- name: Download
- name: Jwt
- name: List Regions
- name: Oauth
- name: Presigned Batch Upload Url
- name: Regions
- name: Table Providers
- name: Tags
- name: Upload