Contacts
The account's contact base: create, edit, delete, record consent, merge duplicates and
import in batches. An API key limited to some numbers only sees the
contacts that have a conversation on those numbers, and gets 403 on what covers the
whole base — export, import, create, delete, merge, opt-in and the definitions of fields
and tags.
GETList contactsThe contact base, paginated. Every filter adds up (AND).POSTCreate a contactCreates a contact from a phone number or a BSUID. The phone is normalized to E.164 and stored without the +; without a country code, send defaultCountry.POSTCreate or update contacts in bulkUp to 500 contacts per call, each created or updated by phone or BSUID. The answer is 200 even when rows fail: each row's outcome comes in results, in the…POSTSync a site's contactsA connected site's customers, up to 500 per call. It is what the WordPress plugin calls to bring in the site's users, customers and leads — and any custom…GETExport contacts as CSVThe whole base — or whatever the filters select — as a CSV, without paging. One column per custom field, after the fixed ones. The file starts with a UTF-8…GETList importsList importsPOSTOpen an importA record that follows a large import made in several batches: send its id as options.importId in each POST /contacts/batch and the counters add up here.…GETGet an importGet an importPATCHClose an importMarks the import as completed or failed. Only an import still processing can be closed.GETGet a contactThe contact, with the suppression list rows that match its phone or BSUID.PATCHEdit a contactAn absent field is left alone; null clears it. attributes is a patch over the stored values, and tagIds is the complete set of tags. Consent is not edited…DELDelete a contactDeletes the contact for good, with its conversations, messages, tags and history — it is the data-protection erasure request. Suppression list rows stay,…POSTRecord an opt-inRecords marketing consent, with the evidence of how it was obtained. Takes the contact off the suppression list only when the reason was an earlier opt-out.…POSTRecord an opt-outRemoves consent and puts the contact's phone and BSUID on the suppression list. Fires contact.optedout.POSTMerge duplicate contactsThe contact in the path survives; duplicateId is deleted after its conversations, tags, history and campaigns are moved over. For fields, the survivor's…GETContact's historyWhat happened to the contact, newest first: creation, edits, tags, consent, merges and campaign clicks.GETContact's customer service window (24 h)Whether a free-form (non-template) message still reaches the contact, number by number. The window opens when the contact writes and lasts 24 h from their…GETExport a contact's dataEverything the account holds about the contact, as a downloadable JSON — the data-protection access request. Up to 10,000 messages per conversation.