Batch import and engage profiles in a scenario
Description
The request allows you to import multiple profiles and immediately send them to a scenario. It is a batch version of the request Import and engage profile in scenario.
note
The request body is limited by default to 10MB, exception: files – 100MB
It is not recommended to transfer more than 10,000 profiles in one request.
Data field rules
The rules apply to the data object inside each element of the data array.
- The field value must be valid for the field type: numeric fields accept a number, "list" fields accept a variant name from the list or its ordinal number, etc. If the value does not match the field type (for example, a string that is not in the list of variants is passed to a list field), the request returns an error. Value formats for custom fields are listed in the Custom field value formats section.
- Only the fields explicitly passed in the
dataobject inside each element of thedataarray are updated. If some profile fields should not change, do not pass them in the request. - Each profile in the
dataarray is processed independently: if a field value in one profile fails validation, that profile is not imported and not sent to the scenario, while the remaining profiles are processed. The error for this profile is returned in the request response. - For more flexible field value management, use database fields functional update.
URL
Method: POST
https://example.com/api/v1.1/workflows/import_and_start_batch
Request parameters
| Parameter | Type | Example | Required | Description |
|---|---|---|---|---|
| workflow_id | Int | 1 | Yes | Workflow identifier |
| high_priority | Bool | true | No | Overrides the processing priority of the created task. If not specified, the scenario's priority is used. See High-priority scenarios |
| matching | String | "email" | Yes | Profile matching mode. By default – email. |
| profile_id | String | "5f19953a03e4227216278ba4" | "matching":"profile_id" | Profile identifier |
| String | "importStart9219@example.com" | "matching":"email" - from profile or subscriptions "matching":"email_profile" - only from profile | ||
| phone | String | "+79001234567" | "matching":"phone" | Phone number |
| field_name | String | "CRM_ID" | "matching":"custom" | The name of the custom profile field for search. |
| field_value | Any | "12345" | "matching":"custom" | The value of the custom profile field for search. Search by combination of tags is available. Values are recorded as a string: "tag-1, tag-2". |
| data | Object | { | No | Profile data, including subscriptions |
| skip_triggers | Bool | true | No | Skip triggers and workflows activated by import and update actions By default – false |
| skip_invalid_subscriptions | Bool | true | No | Skip invalid subscriptions By default – false |
| detect_geo | Bool | true | No | Detect geolocation by IP (it is detected by data from the fields _regip or _ip) |
| content | Object | "content":{ | No | Additional data to be used in the message template as {apicontent.fieldname} variable. The variable can be used in the "API call" and "API content filter" nodes |
| attach | array of {name, flie_key, data, mimetype} | No | File to attach to an Email message (only for Email triggers) |
Response parameters
| Parameter | Type | Description |
|---|---|---|
| error_text | string | Error text |
| error | int | Error code |
| task_id | string | Task identifier |
Request example – "matching":"email"
- JSON
- XML
{
"workflow_id": 12,
"matching": "email",
"data": [
{
"data": {
"_fname": "Alisa",
"_lname": "Lambert",
"email": "example@example.com",
"phones": "+79000000000"
}
},
{
"data": {
"_fname": "Alex",
"_lname": "Lambert",
"email": "example@example.com",
"phones": "+79000000000"
}
}
]
}
<xml>
<workflow_id>10</workflow_id>
<matching>email</matching>
<data>
<_fname>John</_fname>
<_lname>Lambert</_lname>
<email>example@example.com</email>
</data>
<data>
<_fname>Bert</_fname>
<_lname>Lambert</_lname>
<email>example@example.com</email>
</data>
</xml>
Request example – "matching":"custom"
- JSON
- XML
{
"workflow_id": 12,
"matching": "custom",
"field_name": "CRM_ID",
"data": [
{
"data": {
"_fname": "Alina",
"_lname": "Lambert",
"email": "example@example.com",
"phones": "+79006574081",
"CRM_ID": "00066"
}
},
{
"data": {
"_fname": "Victor",
"_lname": "Lambert",
"email": "example@example.com",
"phones": "+79000005422",
"CRM_ID": "00076"
}
}
]
}
<xml>
<workflow_id>12</workflow_id>
<matching>custom</matching>
<field_name>New_field_7</field_name>
<data>
<_fname>Polina</_fname>
<_lname>Lambert</_lname>
<email>example@example.com</email>
<phones>+79006574082</phones>
<New_field_7 string = "true" >00067</New_field_7>
</data>
<data>
<_fname>Dariya</_fname>
<_lname>Lambert</_lname>
<email>example@example.com</email>
<phones>+79000005423</phones>
<New_field_7 string = "true">00077</New_field_7>
</data>
</xml>
Response example
- JSON
- XML
{
"error": 0,
"error_text": "Successful operation",
"result": [
{
"profile_id": "6613c4754a5d12bd6cc0915f"
},
{
"profile_id": "6613c4754a5d12bd6cc09163"
}
]
}
<xml>
<error>0</error>
<error_text>Successful operation</error_text>
<result>
<profile_id>6613c4bf4a5d12bd6cc09167</profile_id>
</result>
<result>
<profile_id>6613c4bf4a5d12bd6cc0916b</profile_id>
</result>
</xml>
Response example when a request limitation is triggered
- JSON
- XML
{
"error": 400,
"error_debug": "http: request body too large",
"error_text": "Invalid request"
}
<xml>
<error>400</error>
<error_debug>http: request body too large</error_debug>
<error_text>Invalid request</error_text>
</xml>