Make Your First Request

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
        }

      2. Schema

        Field Name

        Data Type

        Required

        Notes

        source

        string

        No

        Defaults to CSV
        You can use the Source Lookup endpoint to retrieve available sources

        dataImportName

        string

        Yes

        entityType

        string

        Yes

        activityTypeIs

        int

        Conditional

        Required only when entityType = Activity
        You can use the Activity Type Lookup endpoint to retrieve available activityTypes


    4. 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,
        }
        '
    5. 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)

Submit the import data to the import job

  • Set the request URL

    📘

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

    • PUT https://uapi.demandbase.com/import/v1/job/{jobId}/data?listAction=<DESIRED_ACTION>
  • Set ListAction Query Parameter

    Allowed ValueDescription
    replace (default)Removes all existing members from the associated account list and adds the members from the current import file.
    insertAdds 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..
    deleteRemoves members from the existing account list if they are matched in the import data.
    noopProcesses and imports the data but does not make any changes to the associated account list membership.

  • Set 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)

Check the status of an import job.

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

      Note the jobId is obtained from the create job endpoint response

  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
    📘

    NOTE: The status response is the same as the create job response


    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