BulkUpsert-Async

BulkUpsert-Async

This is the asynchronous version of the BulkUpsert API that allows inserting and updating contacts in the master_contact table. The operation is processed asynchronously and returns a job ID that can be used to track the status of the operation.

Key Features:

  • Supports up to 1000 records per request
  • Processes both new contact insertions and existing contact updates
  • Asynchronous processing with job tracking
  • Supports custom columns in addition to predefined ones
  • Validates data against table structure

Important Notes:

  • The contact_key column is mandatory and must be included in the columns array
  • Each record in the request must include a valid contact_key
  • Only columns that are marked as 'ImportEnabled' can be updated
  • For multiple records with the same contact_key, only the last one in the list will be processed
  • The operation returns a job ID (transactionId) that can be used to check the status via: GET https://api.dengage.com/rest/bulk/async/contacts/{jobId}
  • The endpoint requires the DataSpace.Manage permission to upload contacts
  • The job details endpoint requires the DataSpace.Read permission to view results

Response Codes:

  • 202: Request accepted and processing started
  • 400: Invalid request format or data validation failed (ResponseCodes: FieldError [1], ValidationFails [11])
  • 401: Authentication required
  • 403: Insufficient permissions (ResponseCodes: Forbidden [10])
  • 429: Rate limit exceeded - too many concurrent requests
  • 500: Unexpected server error (ResponseCodes: UnexpectedError [999])

Rate Limiting:

The endpoint implements concurrent request limiting to prevent system overload.

Body Params
columns
array of strings
length ≥ 1

List of columns to be updated in this operation. Must include 'contact_key'.

columns
contactDatas
array of objects
length between 1 and 1000

Array of contact records to be processed

contactDatas
string

Unique identifier for the contact. This field is mandatory.

string
length ≤ 10

Contact's birth date in yyyy-MM-dd format

enum
Defaults to A

Contact status: 'A' for active, 'P' for passive (passive contacts don't receive messages)

Allowed:
string
length ≤ 255

Contact's email address

boolean

Email opt-in status

enum

Email status: 'A' for active, 'P' for passive (passive emails are excluded from targeting)

Allowed:
string
length ≤ 100

Contact's gender

string
length ≤ 20

Contact's mobile phone number

boolean

SMS opt-in status

enum

Mobile status: 'A' for active, 'P' for passive (passive numbers are excluded from targeting)

Allowed:
string
length ≤ 100

Contact's first name

date
length ≤ 10

Contact's subscription start date in yyyy-MM-dd format

string
length ≤ 100

Contact's last name

string

Custom field from master_contact table

string

Custom field from master_contact table

boolean
Defaults to true

If true, the entire operation will fail if any record fails validation. If false, valid records will be processed and invalid ones will be skipped.

boolean

If true, new contacts will be created if they don't exist.

Headers
string
Defaults to {$$.env.access_token}
Responses

401

Authentication required - please provide valid credentials

Language
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json