Add customers in bulk
Create or sync up to 100 customers in a single call.
POST
Batch version of Add a customer. Applies the same idempotent sync logic per entry: existing exact-match customers are synced (environment membership updated,
customerId stored if missing) while conflicting entries are skipped.
Sync behavior per entry
| Scenario | Result |
|---|---|
| New email + new phone | Customer created, included in created. |
| Existing email + matching phone | Customer synced — environment membership updated, customerId stored if not already set. Included in created. |
| Existing email + different phone | Entry skipped. Email added to skippedEmails. |
| Existing phone + different email | Entry skipped. Phone added to skippedPhones. |
| Duplicate within the same request | Second occurrence silently deduplicated. |
Query parameters
Assign all customers in this batch to a specific environment. If omitted, the environment is resolved from the authenticated API key.
Body
A JSON array of customer objects. Each object accepts the same fields as Add a customer.Full display name.
Valid RFC 5322 email. Used as a deduplication key alongside
phone.Phone number (6–30 chars). E.164 format recommended (e.g.
+14155552671).Your system’s identifier for this customer. Stored on create; applied to existing customers only if they don’t already have one.
Returns
Array of full customer objects that were newly created or successfully synced in this call.
Number of customers in
created.Emails that were skipped due to a conflict (existing email with a different phone).
Phone numbers that were skipped due to a conflict (existing phone with a different email).
Total count of distinct skipped identifiers (
skippedEmails + skippedPhones deduplicated).Error codes
| Status | Meaning |
|---|---|
400 | Empty array, no valid entries after normalization, or tenantId not resolvable. |
401 | Missing or invalid API key pair. |
409 | Every entry in the batch already conflicts — no new users could be created or synced. |