Make Your First Request

Learn how to create an import job, submit data to it, and check the job status in the Demandbase Import API.

Importing Data

To import your data into Demandbase, there are two required API calls you must make.

Create Import Job

Details (Click to expand)
  1. Create an import job (This example is for Activity)

    1. Set URL

      1. POST HTTPS://UAPI.demandbase.com/import/v1/job
    2. Set Headers

      1. Accept: application/json
        Content-Type: application/json
        Authorization: Bearer <YOUR_JWT_TOKEN>
    3. Set Body Parameters

      1. {
          "source": "CSV",
          "dataImportName": "DataImportTest",
          "entityType": "Activity",
          "activityTypeId": 1110
        }

        1. Schema
      Field NameData TypeRequiredNotes
      sourcestringNoDefaults to csv. You can use the Source Lookup endpoint to retrieve available sources
      dataImportNamestringYes
      entityTypestringYesThe type of entities to be imported, one of 'Account', 'Opportunity', 'Person' or 'Activity'
      activityTypeIdintConditionalRequired only when entityType = Activity. You can use the Activity Type Lookup endpoint to retrieve available activity types
  2. Resulting cURL request

    1. curl --request POST \
           --url https://uapi.demandbase.com/import/v1/job \
           --header 'accept: application/json' \
           --header 'authorization: Bearer <YOUR_JWT_TOKEN>' \
           --header 'content-type: application/json' \
           --data '
      {
        "source": "CSV",
        "dataImportName": "DataImportTest",
        "entityType": "Activity"
        "activityTypeId": 1110,
      }
      '
  3. Example Response

    {
      "id": 11416,
      "dataImportName": "DataImportTest",
      "entityType": "Activity",
      "state": "new",
      "updatedAt": "2026-02-03T14:55:13.526Z",
      "createdAt": "2026-02-03T14:55:13.526Z",
      "source": "CSV",
      "activityTypeId": 1110
    }

    Field NameData TypeNotes
    idintJob Id - used to submit data and check job status
    dataImportNamestringSupplied name
    entityTypestringSupplied entityType
    statestringOne of: new, processing, completed, failed
    updatedAtstring<dateTime>ISO-formatted UTC datetime
    createdAtstring<dateTime>ISO-formatted UTC datetime
    sourcestringSupplied source
    activityTypeIdintSupplied activityTypeId Only returned if entityType = Activity

Submit Data To The Import Job

Details (Click to expand)

* Set the request URL

📘

NOTE: The jobId in the URL path is obtained from the Create Import Job response

* ```Text URL
PUT https://uapi.demandbase.com/import/v1/job/{jobId}/data?listAction=<DESIRED_ACTION>

* Set ListAction Query Parameter

| Allowed Value         | Description                                                                                                                                       |
| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |
| replace **(default)** | Removes all existing members from the associated account list and adds the members from the current import file.                                  |
| insert                | Adds new members from the current import file to the existing account list. If no account list is associated with this job, one will be created.. |
| delete                | Removes members from the existing account list if they are matched in the import data.                                                            |
| noop                  | Processes and imports the data but does not make any changes to the associated account list membership.                                           |

<br />

* Set Headers
```Text Headers
Accept: application/json
Content-Type: applicaiton/octet_stream
Authorization: Bearer <YOUR_JWT_TOKEN>

* Set Body

TypeMedia TypeDescription
string<binary>application/octet-streamThe binary content of the data file to be imported (e.g. a CSV file)
* Resulting cURL request
curl --request PUT \
     --url 'https://uapi.demandbase.com/import/v1/job/{jobId}/data?listAction=replace' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer <YOUR_JWT_TOKEN>' \
     --header 'content-type: application/octet-stream' \
     --data-binary '@dataImportTEST.csv'

* Example 200 Response

{
  "id": 11416,
  "dataImportName": "DataImportTest",
  "entityType": "Activity",
  "state": "processing",
  "createdAt": "2026-02-03T14:55:13.526Z",
  "updatedAt": "2026-02-03T14:56:29.123Z",
  "source": "CSV",
  "activityTypeId": 1110
}

Schema

📘

NOTE: The response schema is the same as the create job endpoint


Field NameData TypeNotes
idintJob Id - used to submit data and check job status
dataImportNamestringSupplied name
entityTypestringSupplied entityType
statestringOne of: new, processing, completed, failed
updatedAtstring<dateTime>ISO-formatted UTC datetime
createdAtstring<dateTime>ISO-formatted UTC datetime
sourcestringSupplied source
activityTypeIdintSupplied activityTypeId Only returned if entityType = Activity

Check Import Job Status

Details (Click to expand)

1. Set the URL
1. ```Text URL
GET https://uapi.demandbase.com/import/data/job/{jobId}

<Callout icon="📘" theme="info">
  Note the jobId is obtained from the create job endpoint response
</Callout>
2. Resulting cURL request

curl --request GET
--url https://uapi.demandbase.com/import/v1/job/{jobId}
--header 'Accept: application/json'
--header 'Authorization: Bearer <YOUR_JWT_TOKEN>'

3. Example 200 Response
**Schema**
<Callout icon="📘" theme="info">
  NOTE: The status response is the same as the create job response
</Callout>
<DataImportJobResponse />
</Accordion>

Did this page help you?