Demandbase Asynchronous (Batch) API

Asynchronous bulk jobs for high-volume data retrieval and matching.

Operations 3

GET /job/{jobId} Get Bulk Job Status #
POST /match/job Match Companies and Contacts in Bulk #
POST /job Create a Bulk Data Retrieval Job #

Documentation

📖
Documentation
https://developer.demandbase.com/docs/b2b-overview
📖
APIReference
https://developer.demandbase.com/reference/companysearch_1
📖
GettingStarted
https://developer.demandbase.com/docs/b2b-make-your-first-request
📖
Authentication
https://developer.demandbase.com/docs/b2b-authentication
📖
RateLimits
https://developer.demandbase.com/docs/b2b-rate-limits
📖
BestPractices
https://developer.demandbase.com/docs/b2b-best-practices
📖
Documentation
https://developer.demandbase.com/docs/export-overview
📖
APIReference
https://developer.demandbase.com/reference/createexportjob
📖
GettingStarted
https://developer.demandbase.com/docs/make-your-first-request
📖
Authentication
https://developer.demandbase.com/docs/authentication
📖
RateLimits
https://developer.demandbase.com/docs/rate-limits
📖
Documentation
https://developer.demandbase.com/docs/import-overview
📖
APIReference
https://developer.demandbase.com/reference/post_job
📖
GettingStarted
https://developer.demandbase.com/docs/make-your-first-request-1
📖
Authentication
https://developer.demandbase.com/docs/authentication-1
📖
RateLimits
https://developer.demandbase.com/docs/rate-limits-1
📖
Documentation
https://developer.demandbase.com/reference/company-intent
📖
APIReference
https://developer.demandbase.com/reference/companyintent-1
📖
Documentation
https://developer.demandbase.com/docs/user-admin-overview
📖
APIReference
https://developer.demandbase.com/reference/post_admin-v1-user
📖
Authentication
https://developer.demandbase.com/docs/authentication-3
📖
Documentation
https://developer.demandbase.com/docs/credit-usage-overview
📖
APIReference
https://developer.demandbase.com/reference/getcreditusagedetails
📖
Authentication
https://developer.demandbase.com/docs/authentication-2
📖
Documentation
https://developer.demandbase.com/docs/custom-sources-overview
📖
APIReference
https://developer.demandbase.com/reference/get_integration-v1-custom-sources
📖
Documentation
https://developer.demandbase.com/docs/authenticating-with-the-apis
📖
APIReference
https://developer.demandbase.com/reference/generate_access_token
📖
Authentication
https://raw.githubusercontent.com/api-evangelist/demandbase/refs/heads/main/authentication/demandbase-authentication.yml

Specifications

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/demandbase-asynchronous-batch-api-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

demandbase-asynchronous-batch-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '1.0'
  title: B2B Asynchronous (Batch) API
  description: 'The B2B API provides access to endpoints for searching, retrieving, and matching company and contact data.


    It includes support for:

    - **Company records:** Firmographic details, news, technologies, and more.

    - **Contact records:** Current role, employment history, and professional details.

    - **Demandbase Person profiles:** Persistent identities tied to individuals across multiple roles or companies.

    - **Subscriptions:** Monitoring updates to companies and DB Person records.

    ## Authentication

    All requests to the B2B API must be authenticated using a valid API token. If authentication fails, the API will respond with a `401 Unauthorized` status code.

    ### Obtaining an API Token

    For instructions on generating API tokens, see the [Generate and Manage API Key Set](https://support.demandbase.com/hc/en-us/articles/38999526296603-Generate-and-Manage-API-Key-Set) article at the Demandbase Help Center.

    ### Authorization Header

    Include your API token in the `Authorization` header of each request using the Bearer token scheme. Also set the `Content-Type` header to `application/json` when sending JSON payloads.

    #### Example

    ```

    Authorization: Bearer YOUR_API_KEY_HERE

    Content-Type: application/json

    ```


    > **Note:** Tokens should be treated as sensitive credentials. Do not expose them in public code repositories or client-side applications.'
  contact:
    name: Support
    url: https://www.demandbase.com/
    email: support@demandbase.com
servers:
- url: https://uapi.demandbase.com/data/b2b/v1
  description: Server URL in Production environment
security:
- bearerAuth: []
tags:
- name: Asynchronous (Batch) API
  description: Asynchronous bulk jobs for high-volume data retrieval and matching.
paths:
  /job/{jobId}:
    get:
      tags:
      - Asynchronous (Batch) API
      summary: Get Bulk Job Status
      description: 'Check the status of a bulk job using its unique job ID. This endpoint supports all bulk job types, including Company Fetch, Contact Fetch, and Match. Once the job completes successfully, the response will contain a signed `resultsUrl` for downloading the results.


        Important notes:

        - The `resultsUrl` is included **only when the job status is `finished`**

        - The URL remains valid for **24 hours**

        - If the job fails, an `errorMessage` field will be present in the response explaining the reason


        **CSV Results Format:**

        - The `resultsUrl` points to a CSV file containing the requested data

        - CSV column headers correspond exactly to the field names specified in your job request

        - For detailed information about available fields and their descriptions, refer to the field documentation in the <a href="https://demandbase.stoplight.io/docs/3p-api/zsbobfus3ok0w-create-a-bulk-data-retrieval-job" target="_blank">Create a Bulk Data Retrieval Job</a> endpoint

        - Array fields (like `titles`, `jobFunctions`) are represented as pipe-separated values (e.g., "VP|Director|Manager")

        '
      operationId: getBulkJobStatus
      parameters:
      - name: jobId
        in: path
        description: Unique identifier of the bulk job.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Bulk job status fetched successfully. Results URL is present only for finished jobs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkJobStatusDTO'
              examples:
                Finished Bulk Job:
                  summary: A finished bulk job with results URL.
                  description: Finished Bulk Job
                  value:
                    jobName: jobNameTest
                    jobStatus: finished
                    jobType: contactfetch
                    jobId: f546c341-2dc3-4797-b43d-59ac0d334346
                    createdAt: '2024-09-16T04:46:21.684Z'
                    updatedAt: '2024-09-02T06:07:44.550Z'
                    resultsUrl: https://uapi-results.db-data-api-dev.demandbase.com/bulkjobs/companyfetch/0ab5c350-c6d2-4dcc-a9cd-dbba521f468d/response/c1ebe044-0c93-4643-b4bf-9ab1ea9b4ee3.csv?Policy=...
                Processing Bulk Job:
                  summary: A bulk job that is still processing.
                  description: Processing Bulk Job
                  value:
                    jobName: jobNameTest
                    jobStatus: processing
                    jobType: companyfetch
                    jobId: f546c341-2dc3-4797-b43d-59ac0d334346
                    createdAt: '2024-09-16T04:46:21.684Z'
                    updatedAt: '2024-09-02T06:07:44.550Z'
                Failed Bulk Job:
                  summary: A bulk job that failed with an error message.
                  description: Failed Bulk Job
                  value:
                    jobName: jobNameTest
                    jobStatus: failed
                    jobType: match
                    jobId: f546c341-2dc3-4797-b43d-59ac0d334346
                    createdAt: '2024-09-16T04:46:21.684Z'
                    updatedAt: '2024-09-02T06:07:44.550Z'
                    message: Error processing job. Please try again later.
            application/xml:
              schema:
                $ref: '#/components/schemas/BulkJobStatusDTO'
              examples:
                Finished Bulk Job XML:
                  summary: A finished bulk job with results URL (XML).
                  description: Finished Bulk Job XML
                  value:
                    jobName: jobNameTest
                    jobStatus: finished
                    jobType: contactfetch
                    jobId: f546c341-2dc3-4797-b43d-59ac0d334346
                    createdAt: '2024-09-16T04:46:21.684Z'
                    updatedAt: '2024-09-02T06:07:44.550Z'
                    resultsUrl: https://uapi-results.db-data-api-dev.demandbase.com/bulkjobs/companyfetch/0ab5c350-c6d2-4dcc-a9cd-dbba521f468d/response/c1ebe044-0c93-4643-b4bf-9ab1ea9b4ee3.csv?Policy=...
                Processing Bulk Job XML:
                  summary: A bulk job that is still processing (XML).
                  description: Processing Bulk Job XML
                  value:
                    jobName: jobNameTest
                    jobStatus: processing
                    jobType: companyfetch
                    jobId: f546c341-2dc3-4797-b43d-59ac0d334346
                    createdAt: '2024-09-16T04:46:21.684Z'
                    updatedAt: '2024-09-02T06:07:44.550Z'
                Failed Bulk Job XML:
                  summary: A bulk job that failed with an error message (XML).
                  description: Failed Bulk Job XML
                  value:
                    jobName: jobNameTest
                    jobStatus: failed
                    jobType: match
                    jobId: f546c341-2dc3-4797-b43d-59ac0d334346
                    createdAt: '2024-09-16T04:46:21.684Z'
                    updatedAt: '2024-09-02T06:07:44.550Z'
                    message: Error processing job. Please try again later.
        '400':
          description: Bad request. For example, job id is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Bad Request:
                  summary: Job Id should not be empty.
                  description: Bad Request
                  value:
                    errorCode: 400-139
                    errorMessage: Job Id should not be empty.
                    diagnosticCode: 15d8774c-f2a1-4352-ba65-386bf8d04ecf
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Bad Request XML:
                  summary: Job Id should not be empty (XML).
                  description: Bad Request XML
                  value:
                    errorCode: 400-139
                    errorMessage: Job Id should not be empty.
                    diagnosticCode: 15d8774c-f2a1-4352-ba65-386bf8d04ecf
        '401':
          description: Unauthorized - Missing or invalid tenant ID
          content:
            application/json:
              examples:
                Unauthorized Response:
                  summary: Authentication Failed - Unauthorized.
                  description: Unauthorized Response
                  value:
                    status: Authentication Failed - Unauthorized.
        '404':
          description: Job not found. Invalid job id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Not Found:
                  summary: Invalid job ID, job not found.
                  description: Not Found
                  value:
                    errorCode: 404-101
                    errorMessage: Invalid job ID, job not found.
                    diagnosticCode: 92ce43d0-a861-4394-b44d-420d114dcfcb
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Not Found XML:
                  summary: Invalid job ID, job not found (XML).
                  description: Not Found XML
                  value:
                    errorCode: 404-101
                    errorMessage: Invalid job ID, job not found.
                    diagnosticCode: 92ce43d0-a861-4394-b44d-420d114dcfcb
        '500':
          description: Internal server error.
          content:
            application/json:
              examples:
                Internal Server Error:
                  summary: Internal server exception occurred.
                  description: Internal Server Error
                  value:
                    errorCode: '500'
                    errorMessage: Internal server exception occurred.
                    diagnosticCode: 15d8774c-f2a1-4352-ba65-386bf8d04ecf
            application/xml:
              examples:
                Internal Server Error XML:
                  summary: Internal server exception occurred (XML).
                  description: Internal Server Error XML
                  value: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  <error>\n      <errorCode>500</errorCode>\n      <errorMessage>Internal server exception occurred.</errorMessage>\n      <diagnosticCode>15d8774c-f2a1-4352-ba65-386bf8d04ecf</diagnosticCode>\n  </error>\n"
      security:
      - bearerAuth: []
      servers:
      - url: https://uapi.demandbase.com/data/b2b/v1
        description: Server URL in Production environment
  /match/job:
    post:
      tags:
      - Asynchronous (Batch) API
      summary: Match Companies and Contacts in Bulk
      description: 'Use this endpoint to enrich company and contact records in bulk using a CSV file upload. Each row in the file represents one enrichment request and must match the supported field structure. This endpoint supports up to 10,000 records per job.


        **CSV Results Format:**

        The completed job will return a CSV file with the following structure:

        - Input columns from your uploaded CSV are preserved

        - Additional columns are added for matched company data (companyId, name, city, state, country, matchScore, etc.)

        - Additional columns are added for matched contact data (contactId, firstName, lastName, title, email, matchScore, etc.)

        - Multiple matches are returned as separate rows with the same input ID

        - If no matches are found, the row will contain only the input data with empty match columns'
      operationId: match
      parameters:
      - name: jobName
        in: query
        description: Job name for the match job
        required: true
        schema:
          type: string
      requestBody:
        description: ''
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
            examples:
              SampleCSV:
                description: SampleCSV
                value: 'id,city,companyName,country,email,firstName,lastName,state,street,ticker,title,url,zip,minimumMatchScore,isContactRequired,isPhoneRequired,isEmailRequired,fullName,contactMatching,executiveLinkedInHandle,phone

                  row2,MOUNTAIN VIEW,Alphabet Inc,USA,ashishk@google.com,Ashish,Kumar,CA,1600 Amphitheatre Parkway,GOOG,Director,https://abc.xyz/,94301,.50,,True,,,all,https://linkedin.com/in/johndoe,123-456-7890'
          text/plain:
            schema:
              type: string
            examples:
              SampleText:
                description: SampleText
                value: 'id,city,companyName,country,email,firstName,lastName,state,street,ticker,title,url,zip,minimumMatchScore,isContactRequired,isPhoneRequired,isEmailRequired,fullName,contactMatching,executiveLinkedInHandle,phone

                  row2,MOUNTAIN VIEW,Alphabet Inc,USA,ashishk@google.com,Ashish,Kumar,CA,1600 Amphitheatre Parkway,GOOG,Director,https://abc.xyz/,94301,.50,,True,,,all,https://linkedin.com/in/johndoe,123-456-7890'
      responses:
        '202':
          description: 'Successful submission of match job


            Response File (CSV Output)

            Upon job completion, the downloadable results file will include:

            | Field Name              | Description                                                             |

            | ----------------------- | ----------------------------------------------------------------------- |

            | `ID`                    | Row-level identifier submitted in the request CSV                       |

            | `City`                  | Matched company''s city                                                  |

            | `Company ID`            | Unique identifier of the matched company                                |

            | `Country`               | Matched company''s country                                               |

            | `Company Name`          | Name of the matched company                                             |

            | `State`                 | Matched company''s state or region                                       |

            | `Employment ID`         | Matched employment/contact ID                                           |

            | `First Name`            | Matched contact''s first name                                            |

            | `Last Name`             | Matched contact''s last name                                             |

            | `Job Titles`            | List of job titles associated with the contact                          |

            | `Match Score`           | Confidence score for the matched record                                 |

            | `DB Person ID`          | Unique Demandbase person identifier                                     |

            | `Employment Status`     | Indicates if the contact is currently employed (`current` or `past`) |

            | `Job Levels`            | Job level(s) associated with the contact (e.g., `C Level`, `Manager`)   |

            | `Job Functions`         | Job function(s) associated with the contact (e.g., `Marketing`, `IT`)   |

            | `Contact Quality Score` | Contact quality rating (e.g., `A+`, `B`)                                |

            | `DB Person Country`     | Contact''s country based on person-level data                            |

            | `DB Person State`       | Contact''s state based on person-level data                              |

            | `DB Person City`        | Contact''s city based on person-level data                               |

            | `Street`                | Street address for the company                                          |

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkJobStatusDTO'
              examples:
                SuccessResponse:
                  description: SuccessResponse
                  value:
                    jobName: Hello2
                    jobStatus: accepted
                    jobType: match
                    jobId: ac6f75e1-84c3-47f8-a64f-5bf90459da7b
                    createdAt: '2025-06-02T20:31:35.063Z'
            application/xml:
              schema:
                $ref: '#/components/schemas/BulkJobStatusDTO'
              examples:
                SuccessResponseXml:
                  description: SuccessResponseXml
                  value:
                    jobName: Hello2
                    jobStatus: accepted
                    jobType: match
                    jobId: ac6f75e1-84c3-47f8-a64f-5bf90459da7b
                    createdAt: '2025-06-02T20:31:35.063Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InputFileTooManyLinesErrorResponse:
                  description: InputFileTooManyLinesErrorResponse
                  value:
                    errorCode: 400-186
                    errorMessage: Input file exceeds the maximum allowed number of lines (10000).
                    diagnosticCode: 110f32ef-9c50-4564-8533-c9d5f05b5ee8
                JobNameRequiredErrorResponse:
                  description: JobNameRequiredErrorResponse
                  value:
                    errorCode: 400-190
                    errorMessage: jobName is required and cannot be empty.
                    diagnosticCode: 66f362a8-2840-4830-91fa-0e0971c39b08
                IncorrectFieldsInLineErrorResponse:
                  description: IncorrectFieldsInLineErrorResponse
                  value:
                    errorCode: 400-188
                    errorMessage: 'Incorrect number of fields at line number: 2'
                    diagnosticCode: a24ae602-ee56-49b2-a43d-f641096acf5b
                JobLimitExceededErrorResponse:
                  description: JobLimitExceededErrorResponse
                  value:
                    errorCode: 400-184
                    errorMessage: 'Job limit exceeded: A maximum of 2 jobs can run at the same time.'
                    diagnosticCode: b9a2947a-cb5b-41c5-81e4-ea2a3ed15811
                InputFileTooLargeErrorResponse:
                  description: InputFileTooLargeErrorResponse
                  value:
                    errorCode: 400-185
                    errorMessage: Input file size exceeds the maximum allowed limit of 10 MB.
                    diagnosticCode: 6b5d2113-dd57-4f69-b408-4fd2e6750460
                MissingRequiredHeaderIdErrorResponse:
                  description: MissingRequiredHeaderIdErrorResponse
                  value:
                    errorCode: 400-191
                    errorMessage: 'Missing required header: id'
                    diagnosticCode: 99a3097a-b328-4f2b-a6bc-02faf0c7e2ed
                UnknownHeaderErrorResponse:
                  description: UnknownHeaderErrorResponse
                  value:
                    errorCode: 400-192
                    errorMessage: 'Unknown header: header-1'
                    diagnosticCode: 62bdf6db-5607-4506-9395-89bdc00c19b6
                IdCannotBeEmptyErrorResponse:
                  description: IdCannotBeEmptyErrorResponse
                  value:
                    errorCode: 400-187
                    errorMessage: 'ID cannot be empty at line number: 1'
                    diagnosticCode: 71410e6f-bd77-41d4-9d91-a8ff9bf11301
                InvalidContactMatchingErrorResponse:
                  description: InvalidContactMatchingErrorResponse
                  value:
                    errorCode: 400-206
                    errorMessage: 'Invalid value for ''contactMatching'' at line number: 1. Allowed values: active, all, or empty.'
                    diagnosticCode: b7a299b1-6ac5-44b9-89d2-af94c341e5f6
                InvalidBooleanIsEmailRequiredErrorResponse:
                  description: InvalidBooleanIsEmailRequiredErrorResponse
                  value:
                    errorCode: 400-205
                    errorMessage: 'Invalid boolean value for ''isEmailRequired'' at line number: 1. Allowed values: True, False, or empty.'
                    diagnosticCode: f4412b32-5b17-4a90-b7b9-9716580683b2
                InvalidBooleanIsPhoneRequiredErrorResponse:
                  description: InvalidBooleanIsPhoneRequiredErrorResponse
                  value:
                    errorCode: 400-205
                    errorMessage: 'Invalid boolean value for ''isPhoneRequired'' at line number: 1. Allowed values: True, False, or empty.'
                    diagnosticCode: 357b9683-b539-4864-96c9-ab6d4f5b9dec
                InvalidBooleanIsContactRequiredErrorResponse:
                  description: InvalidBooleanIsContactRequiredErrorResponse
                  value:
                    errorCode: 400-205
                    errorMessage: 'Invalid boolean value for ''isContactRequired'' at line number: 1. Allowed values: True, False, or empty.'
                    diagnosticCode: 4650b191-f6ae-400b-895e-68b1749c787e
                InvalidMinimumMatchScoreRangeErrorResponse:
                  description: InvalidMinimumMatchScoreRangeErrorResponse
                  value:
                    errorCode: 400-207
                    errorMessage: 'Invalid value for ''minimumMatchScore'' at line number: 1. Allowed range: 0 to 1 (inclusive), or empty.'
                    diagnosticCode: 6fb2da1b-4ddc-4512-b47e-dd4398e16974
                MissingRequiredAnyHeaderErrorResponse:
                  description: MissingRequiredAnyHeaderErrorResponse
                  value:
                    errorCode: 400-204
                    errorMessage: 'At least one of the following headers must be present: [email, companyName, url, executiveLinkedInHandle]'
                    diagnosticCode: c713a41f-c5c4-45a4-a2aa-bbd99fd58aba
                InvalidMinimumMatchScoreNotNumberErrorResponse:
                  description: InvalidMinimumMatchScoreNotNumberErrorResponse
                  value:
                    errorCode: 400-208
                    errorMessage: 'Invalid value for ''minimumMatchScore'' at line number: 1. Must be a number between 0 and 1, or empty.'
                    diagnosticCode: f5c0b967-3917-4f4c-8382-a950c9d92284
                RowMustHaveAnyHeaderErrorResponse:
                  description: RowMustHaveAnyHeaderErrorResponse
                  value:
                    errorCode: 400-209
                    errorMessage: 'A row must have a non-empty value for one of: [email, companyName, url, executiveLinkedInHandle]'
                    diagnosticCode: 0c857928-ca5d-4820-b90e-8de5ead9c575
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InputFileTooManyLinesErrorResponseXML:
                  description: InputFileTooManyLinesErrorResponseXML
                  value:
                    errorCode: 400-186
                    errorMessage: Input file exceeds the maximum allowed number of lines (10000).
                    diagnosticCode: 110f32ef-9c50-4564-8533-c9d5f05b5ee8
                JobNameRequiredErrorResponseXML:
                  description: JobNameRequiredErrorResponseXML
                  value:
                    errorCode: 400-190
                    errorMessage: jobName is required and cannot be empty.
                    diagnosticCode: 66f362a8-2840-4830-91fa-0e0971c39b08
                IncorrectFieldsInLineErrorResponseXML:
                  description: IncorrectFieldsInLineErrorResponseXML
                  value:
                    errorCode: 400-188
                    errorMessage: 'Incorrect number of fields at line number: 2'
                    diagnosticCode: a24ae602-ee56-49b2-a43d-f641096acf5b
                JobLimitExceededErrorResponseXML:
                  description: JobLimitExceededErrorResponseXML
                  value:
                    errorCode: 400-184
                    errorMessage: 'Job limit exceeded: A maximum of 2 jobs can run at the same time.'
                    diagnosticCode: b9a2947a-cb5b-41c5-81e4-ea2a3ed15811
                InputFileTooLargeErrorResponseXML:
                  description: InputFileTooLargeErrorResponseXML
                  value:
                    errorCode: 400-185
                    errorMessage: Input file size exceeds the maximum allowed limit of 10 MB.
                    diagnosticCode: 6b5d2113-dd57-4f69-b408-4fd2e6750460
                MissingRequiredHeaderIdErrorResponseXML:
                  description: MissingRequiredHeaderIdErrorResponseXML
                  value:
                    errorCode: 400-191
                    errorMessage: 'Missing required header: id'
                    diagnosticCode: 99a3097a-b328-4f2b-a6bc-02faf0c7e2ed
                UnknownHeaderErrorResponseXML:
                  description: UnknownHeaderErrorResponseXML
                  value:
                    errorCode: 400-192
                    errorMessage: 'Unknown header: header-1'
                    diagnosticCode: 62bdf6db-5607-4506-9395-89bdc00c19b6
                IdCannotBeEmptyErrorResponseXML:
                  description: IdCannotBeEmptyErrorResponseXML
                  value:
                    errorCode: 400-187
                    errorMessage: 'ID cannot be empty at line number: 1'
                    diagnosticCode: 71410e6f-bd77-41d4-9d91-a8ff9bf11301
                InvalidContactMatchingErrorResponseXML:
                  description: InvalidContactMatchingErrorResponseXML
                  value:
                    errorCode: 400-206
                    errorMessage: 'Invalid value for ''contactMatching'' at line number: 1. Allowed values: active, all, or empty.'
                    diagnosticCode: b7a299b1-6ac5-44b9-89d2-af94c341e5f6
                InvalidBooleanIsEmailRequiredErrorResponseXML:
                  description: InvalidBooleanIsEmailRequiredErrorResponseXML
                  value:
                    errorCode: 400-205
                    errorMessage: 'Invalid boolean value for ''isEmailRequired'' at line number: 1. Allowed values: True, False, or empty.'
                    diagnosticCode: f4412b32-5b17-4a90-b7b9-9716580683b2
                InvalidBooleanIsPhoneRequiredErrorResponseXML:
                  description: InvalidBooleanIsPhoneRequiredErrorResponseXML
                  value:
                    errorCode: 400-205
                    errorMessage: 'Invalid boolean value for ''isPhoneRequired'' at line number: 1. Allowed values: True, False, or empty.'
                    diagnosticCode: 357b9683-b539-4864-96c9-ab6d4f5b9dec
                InvalidBooleanIsContactRequiredErrorResponseXML:
                  description: InvalidBooleanIsContactRequiredErrorResponseXML
                  value:
                    errorCode: 400-205
                    errorMessage: 'Invalid boolean value for ''isContactRequired'' at line number: 1. Allowed values: True, False, or empty.'
                    diagnosticCode: 4650b191-f6ae-400b-895e-68b1749c787e
                InvalidMinimumMatchScoreRangeErrorResponseXML:
                  description: InvalidMinimumMatchScoreRangeErrorResponseXML
                  value:
                    errorCode: 400-207
                    errorMessage: 'Invalid value for ''minimumMatchScore'' at line number: 1. Allowed range: 0 to 1 (inclusive), or empty.'
                    diagnosticCode: 6fb2da1b-4ddc-4512-b47e-dd4398e16974
                MissingRequiredAnyHeaderErrorResponseXML:
                  description: MissingRequiredAnyHeaderErrorResponseXML
                  value:
                    errorCode: 400-204
                    errorMessage: 'At least one of the following headers must be present: [email, companyName, url, executiveLinkedInHandle]'
                    diagnosticCode: c713a41f-c5c4-45a4-a2aa-bbd99fd58aba
                InvalidMinimumMatchScoreNotNumberErrorResponseXML:
                  description: InvalidMinimumMatchScoreNotNumberErrorResponseXML
                  value:
                    errorCode: 400-208
                    errorMessage: 'Invalid value for ''minimumMatchScore'' at line number: 1. Must be a number between 0 and 1, or empty.'
                    diagnosticCode: f5c0b967-3917-4f4c-8382-a950c9d92284
                RowMustHaveAnyHeaderErrorResponseXML:
                  description: RowMustHaveAnyHeaderErrorResponseXML
                  value:
                    errorCode: 400-209
                    errorMessage: 'A row must have a non-empty value for one of: [email, companyName, url, executiveLinkedInHandle]'
                    diagnosticCode: 0c857928-ca5d-4820-b90e-8de5ead9c575
        '401':
          description: Unauthorized because the user is not authenticated.
          content:
            application/json:
              examples:
                UnauthorizedResponse:
                  description: UnauthorizedResponse
                  value:
                    status: Authentication Failed - Unauthorized.
      security:
      - bearerAuth: []
      servers:
      - url: https://uapi.demandbase.com/data/b2b/v1
        description: Server URL in Production environment
  /job:
    post:
      tags:
      - Asynchronous (Batch) API
      summary: Create a Bulk Data Retrieval Job
      description: '# Overview

        Create and run asynchronous bulk jobs to retrieve company or contact data using entity IDs or search filters. This API is ideal for large data exports with a file-based CSV output.


        You can submit up to **10,000 entity IDs** in a single request. The API initiates an asynchronous job and returns a `jobId` to track its status and retrieve results using the <a href="https://developer.demandbase.com/docs/3p-api/3nstx7v40nc9k-get-bulk-job-status" target="_blank">Job Status</a> API.

        '
      operationId: createBulkJob
      requestBody:
        description: "**NOTE:** You may submit up to 10,000 IDs or filter values per request\n\n### Filter Fields\n<details>\n <summary><strong>Company Search</strong> (click to expand)</summary>\n\n- `areaCodes`\n- `businessStructure`\n- `businessTypes`\n- `categoryIds`\n- `cities`\n- `companyStatus`\n- `companyType`\n- `country`\n- `dbe`\n- `disabled`\n- `ethnicity`\n- `fiscalYearEnd`\n- `fortuneRanking`\n- `gender`\n- `hasPhone`\n- `hasWebsite`\n- `industries`\n- `keywords`\n- `lgbt`\n- `maxEmployees`\n- `maxRevenue`\n- `mbe`\n- `minEmployees`\n- `minRevenue`\n- `naics`\n- `newsCategories`\n- `newsDuration`\n- `primaryIndustryOnly`\n- `primaryNAICSOnly`\n- `primarySICOnly`\n- `productIds`\n- `regions`\n- `sicCodes`\n- `state`\n- `street`\n- `subCategoryIds`\n- `subIndustries`\n- `ticker`\n- `vbe`\n- `website`\n- `wbe`\n- `zipCodes`\n</details>\n\n<details>\n  <summary><strong>Contact Search</strong> (click to expand)</summary>\n\n- `active`\n- `companyCity`\n- `companyCountry`\n- `companyIdsToInclude`\n- `companyName`\n- `companyState`\n- `companyWebsite`\n- `contactCity`\n- `contactCountry`\n- `contactState`\n- `email`\n- `emailRequired`\n- `emailValidationStatus`\n- `firstName`\n- `industries`\n- `jobFunctions`\n- `jobLevels`\n- `lastName`\n- `maxEmployees`\n- `minContactQualityScore`\n- `minEmployees`\n- `phoneRequired`\n- `phoneType`\n- `primaryIndustryOnly`\n- `subIndustries`\n- `titles`\n\n</details>\n\n### Available Output Fields by Job Type\n<details>\n  <summary>Output Fields for <strong>companyFetch</strong> (click to expand)</summary>\n\n- `britishSics`\n- `businessStructure`\n- `city`\n- `companyBlogProfile`\n- `companyId`\n- `companyLinkedInProfile`\n- `companyStatus`\n- `companyTwitterProfile`\n- `companyType`\n- `currentCompanyId`\n- `description`\n- `employees`\n- `fiscalYearEnd`\n- `fortuneRanking`\n- `industry`\n- `industryCode`\n- `latitude`\n- `longitude`\n- `naics`\n- `naicsDescription`\n- `name`\n- `phone`\n- `revenue`\n- `revenueCurrency`\n- `sic`\n- `sicDescription`\n- `siteCount`\n- `siteLocationCount`\n- `siteType`\n- `state`\n- `street`\n- `subIndustry`\n- `subIndustryCode`\n- `subsidiary`\n- `ticker`\n- `website`\n- `ye

# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/demandbase/refs/heads/main/openapi/demandbase-asynchronous-batch-api-api-openapi.yml