You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Document bulk create and bulk delete contacts (Preview)
Adds POST /contacts/bulk (strict create) and POST /contacts/bulk/delete
(permanent delete), mirroring the existing bulk update endpoint.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: descriptions/0/api.intercom.io.yaml
+291Lines changed: 291 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -9088,6 +9088,107 @@ paths:
9088
9088
schema:
9089
9089
"$ref": "#/components/schemas/error"
9090
9090
"/contacts/bulk":
9091
+
post:
9092
+
summary: Bulk create contacts
9093
+
parameters:
9094
+
- name: Intercom-Version
9095
+
in: header
9096
+
schema:
9097
+
"$ref": "#/components/schemas/intercom_version"
9098
+
tags:
9099
+
- Contacts
9100
+
operationId: BulkCreateContacts
9101
+
description: |
9102
+
You can bulk create contacts by submitting an array of contact objects. This is a **strict create** — it mirrors [Create a contact](/docs/references/preview/rest-api/api.intercom.io/contacts/createcontact) and never updates an existing contact.
9103
+
9104
+
The endpoint creates an async job that processes the items in the background. Use the returned job ID with `GET /contacts/bulk/{id}` to check the job status.
If a contact already exists with the given `external_id` or `email` (including an archived contact), that item is rejected and the job's `state` ends as `completed_with_errors`. Genuinely new contacts in the same request are still created. There's currently no per-item error detail — the job `state` from `GET /contacts/bulk/{id}` is the only signal that one or more items were rejected.
9108
+
9109
+
Created contacts aren't returned with IDs in the response. Look them up afterwards with [Get a contact by External ID](/docs/references/preview/rest-api/api.intercom.io/contacts/getcontactbyexternalid) or [Search contacts](/docs/references/preview/rest-api/api.intercom.io/contacts/searchcontacts).
9110
+
{% /admonition %}
9111
+
9112
+
{% admonition type="info" name="Limits" %}
9113
+
- Maximum of 100 contacts per request.
9114
+
- You can append tasks to an existing job by including `job.id` in the request body.
message: maximum number of contacts per request is 100
9190
+
schema:
9191
+
"$ref": "#/components/schemas/error"
9091
9192
put:
9092
9193
summary: Bulk update contacts
9093
9194
parameters:
@@ -9270,6 +9371,108 @@ paths:
9270
9371
message: Access Token Invalid
9271
9372
schema:
9272
9373
"$ref": "#/components/schemas/error"
9374
+
"/contacts/bulk/delete":
9375
+
post:
9376
+
summary: Bulk delete contacts
9377
+
parameters:
9378
+
- name: Intercom-Version
9379
+
in: header
9380
+
schema:
9381
+
"$ref": "#/components/schemas/intercom_version"
9382
+
tags:
9383
+
- Contacts
9384
+
operationId: BulkDeleteContacts
9385
+
description: |
9386
+
You can permanently delete contacts in bulk by submitting an array of contact `id`s. This mirrors [Delete a contact](/docs/references/preview/rest-api/api.intercom.io/contacts/deletecontact) — deleted contacts are **not restorable**.
9387
+
9388
+
The endpoint creates an async job that processes the deletes in the background. Use the returned job ID with `GET /contacts/bulk/{id}` to check the job status.
Unlike archiving, permanently deleted contacts cannot be recovered. A contact that doesn't exist, or can't be deleted, fails that item and the job's `state` ends as `completed_with_errors` (visible via `GET /contacts/bulk/{id}`) without failing the rest of the batch. Contacts with a `visitor` role are silently skipped rather than counted as failures.
9392
+
{% /admonition %}
9393
+
9394
+
{% admonition type="info" name="Limits" %}
9395
+
- Maximum of 100 contacts per request.
9396
+
- You can append tasks to an existing job by including `job.id` in the request body.
0 commit comments