Contacts
API reference descriptions are provided in English to preserve the exact published contract.
- POSTRecord the customer's instruction for an action taken on their behalf
authorizations.create - GETHow much of this account's audience you may lawfully message
consentCoverage.list - GETList contacts or find one by identifier
contacts.list - POSTResolve or create a contact by identifier
contacts.create - POSTRestrict marketing for up to 100 selected contacts with durable per-row results
contacts.bulkRestrict - GETList open contact identity conflicts
contacts.conflicts.list - POSTResolve an identity conflict by merging or dismissing it
contacts.conflicts.resolve - GETList reversible contact merge history
contacts.merges.list - GETGet contact merge recovery detail
contacts.merges.retrieve - POSTReverse a contact merge within its 30-day window
contacts.merges.revert - GETFetch a contact
contacts.retrieve - PATCHUpdate a contact's profile and attributes
contacts.update - GETFull consent history
contacts.consents.list - POSTRecord a consent event
contacts.consents.create - POSTMerge another contact into this one
contacts.merge - POSTResolve a separate corrected recipient without copying identity history or consent
contacts.recipientCorrections - GETList suppression history for a contact
contacts.suppressions.list - POSTAdd a suppression
contacts.suppressions.create - DELETERemove a suppression
contacts.suppressions.delete - GETList audience segments
segments.list - POSTCreate and materialize an audience segment
segments.create - POSTPreview typed segment membership without mutation
segments.preview - GETGet a contact segment
segments.retrieve - PATCHUpdate and rematerialize a segment
segments.update - DELETEDelete an unused segment
segments.delete - GETList materialized segment members and provenance
segments.members.list - POSTRefresh dynamic segment membership
segments.refresh - GETGet the durable service-window state for a sender/contact pair
senders.contacts.window.list - GETList account suppressions with filters
suppressions.list - POSTSuppress a contact by SID or by identifier
suppressions.create - DELETELift suppressions for a contact addressed by SID or identifier
suppressions.delete
Record the customer's instruction for an action taken on their behalf
POST/v1/accounts/{AC}/authorizations
authorizations.createSDK operation postV1AccountsByAcAuthorizations
Meta's Tech Provider terms allow a provider to act only on the customer's instruction. This records one: who gave it, for which task, in their own words. It is written to the append-only audit chain rather than a table of its own, because what an authorisation needs is exactly what that chain already guarantees — attributable, timestamped, and not quietly editable afterwards by either side.
Request body
instructionstring (max 2000 chars)RequiredresourceRefstring (max 64 chars)RequiredtaskenumRequiredDISPLAY_NAME_SUBMISSIONOFFICIAL_BUSINESS_ACCOUNT_APPLICATIONTEMPLATE_SUBMISSIONTEMPLATE_APPEAL
How much of this account's audience you may lawfully message
GET/v1/accounts/{AC}/consent-coverage
consentCoverage.listSDK operation getV1AccountsByAcConsentCoverage
Contacts counted by consent purpose and current status, with the number suppressed. Admission already refuses a marketing send without evidence; this is the same evidence read forward, so a business can see the size of the audience it may actually reach before it builds a campaign around one it may not.
List contacts or find one by identifier
GET/v1/accounts/{AC}/contacts
contacts.listSDK operation getV1AccountsByAcContacts
List contacts, or find one by phone number or WhatsApp user ID with the identifier filters.
Parameters
qstring (max 128 chars)queryidentifierstring (max 256 chars)queryidentifierTypeenumqueryphone_e164bsuidusernamescopeRefstring (max 64 chars)querylimitinteger (1–100)querycursorstring (max 2048 chars)query
Resolve or create a contact by identifier
POST/v1/accounts/{AC}/contacts
contacts.createSDK operation postV1AccountsByAcContacts
Find the contact with this identifier, or create it. Calling it twice with the same number returns the same contact.
Request body
identifiersobject[]RequiredattributesobjectdefaultCountrystring (pattern ^[A-Za-z]{2}$)displayNamestring (max 128 chars)localestring (max 16 chars)timezonestring (max 64 chars)
Restrict marketing for up to 100 selected contacts with durable per-row results
POST/v1/accounts/{AC}/contacts/bulk-restrict
contacts.bulkRestrictSDK operation postV1AccountsByAcContactsBulkRestrict
Request body
actionenumRequiredSUPPRESS_MARKETINGWITHDRAW_MARKETINGconfirmedtrueRequiredcontactSidsstring (CT… SID)[]Requiredreasonstring (max 256 chars)RequiredrequestKeystring (uuid)Required
List open contact identity conflicts
GET/v1/accounts/{AC}/contacts/conflicts
contacts.conflicts.listSDK operation getV1AccountsByAcContactsConflicts
An identifier that Meta or an import attached to a second contact in this account. Resolve by merging or dismissing.
Parameters
limitinteger (1–100)querycursorstring (max 2048 chars)query
Resolve an identity conflict by merging or dismissing it
POST/v1/accounts/{AC}/contacts/conflicts/{ID}/resolve
contacts.conflicts.resolveSDK operation postV1AccountsByAcContactsConflictsByIdResolve
Parameters
IDstring (uuid)Required
Request body
actionenumRequiredmergedismiss
List reversible contact merge history
GET/v1/accounts/{AC}/contacts/merges
contacts.merges.listSDK operation getV1AccountsByAcContactsMerges
Parameters
limitinteger (1–100)querycursorstring (max 2048 chars)query
Get contact merge recovery detail
GET/v1/accounts/{AC}/contacts/merges/{ID}
contacts.merges.retrieveSDK operation getV1AccountsByAcContactsMergesById
Parameters
IDstring (uuid)Required
Reverse a contact merge within its 30-day window
POST/v1/accounts/{AC}/contacts/merges/{ID}/revert
contacts.merges.revertSDK operation postV1AccountsByAcContactsMergesByIdRevert
Parameters
IDstring (uuid)Required
Fetch a contact
GET/v1/accounts/{AC}/contacts/{CT}
contacts.retrieveSDK operation getV1AccountsByAcContactsByCt
Fetch one contact with its identifiers, attributes and consent summary.
Parameters
CTstring (CT… SID)Required
Update a contact's profile and attributes
PATCH/v1/accounts/{AC}/contacts/{CT}
contacts.updateSDK operation patchV1AccountsByAcContactsByCt
Update a contact's name, locale, time zone or attributes. Send expectedUpdatedAt to refuse the change if someone else edited the contact first.
Parameters
CTstring (CT… SID)Required
Request body
attributesobjectdisplayNamenull | string (max 128 chars)expectedUpdatedAtstring (date-time)localenull | string (max 16 chars)timezonenull | string (max 64 chars)
Full consent history
GET/v1/accounts/{AC}/contacts/{CT}/consents
contacts.consents.listSDK operation getV1AccountsByAcContactsByCtConsents
Parameters
CTstring (CT… SID)Requiredlimitinteger (1–100)querycursorstring (max 2048 chars)query
Record a consent event
POST/v1/accounts/{AC}/contacts/{CT}/consents
contacts.consents.createSDK operation postV1AccountsByAcContactsByCtConsents
Record that a contact opted in or out for a purpose. Consent history is append-only: a new record supersedes, never overwrites.
Parameters
CTstring (CT… SID)Required
Request body
purposeenumRequiredTRANSACTIONALAUTHENTICATIONMARKETINGSUPPORTsourceenumRequiredAPIIMPORTKEYWORDFORMPROVIDERDASHBOARDstatusenumRequiredOPTED_INOPTED_OUTUNKNOWNREVOKEDEXPIREDevidenceobjectShow 11 child attributes
applicationstring (max 128 chars)campaignRefstring (max 128 chars)capturedAtstring (date-time)proofRefstring (max 512 chars)reOptInbooleanreasonstring (max 1000 chars)sourcePagestring (max 2048 chars)supersedesConsentSidstring (CV… SID)withdrawnAtstring (date-time)wordingstring (max 4096 chars)wordingVersionstring (max 128 chars)
evidenceRefstring (max 512 chars)expiresAtstring (date-time)
Merge another contact into this one
POST/v1/accounts/{AC}/contacts/{CT}/merge
contacts.mergeSDK operation postV1AccountsByAcContactsByCtMerge
The named contact becomes MERGED with merged_into set; identifiers, consents, suppressions, conversation windows (max of both) and pending dispatch move to the surviving contact. Reversible for 30 days.
Parameters
CTstring (CT… SID)Required
Request body
mergeContactSidstring (CT… SID)Requiredreasonstring (max 256 chars)Required
Resolve a separate corrected recipient without copying identity history or consent
POST/v1/accounts/{AC}/contacts/{CT}/recipient-corrections
contacts.recipientCorrectionsSDK operation postV1AccountsByAcContactsByCtRecipientCorrections
Parameters
CTstring (CT… SID)Required
Request body
identifierobjectRequiredShow 3 child attributes
typeenumRequiredphone_e164bsuidusernamevaluestring (max 256 chars)RequiredscopeRefstring (max 64 chars)
reasonstring (max 256 chars)RequiredseparateRecipientAcknowledgedtrueRequireddefaultCountrystring (pattern ^[A-Za-z]{2}$)
List suppression history for a contact
GET/v1/accounts/{AC}/contacts/{CT}/suppressions
contacts.suppressions.listSDK operation getV1AccountsByAcContactsByCtSuppressions
Parameters
CTstring (CT… SID)Requiredlimitinteger (1–100)querycursorstring (max 2048 chars)query
Add a suppression
POST/v1/accounts/{AC}/contacts/{CT}/suppressions
contacts.suppressions.createSDK operation postV1AccountsByAcContactsByCtSuppressions
Stop messages to a contact, for marketing only or for everything. Suppressed contacts are refused at send time.
Parameters
CTstring (CT… SID)Required
Request body
reasonenumRequiredCUSTOMER_OPT_OUTPROVIDER_MARKETING_OPT_OUTKEYWORD_OPT_OUTCOMPLAINTLEGAL_SUPPRESSIONTENANT_BLOCKLISTRISK_BLOCKscopeenumRequiredMARKETINGALLsourcestring (max 64 chars)RequiredexpiresAtstring (date-time)mirrorToProviderbooleansenderSidstring (WA… SID)
Remove a suppression
DELETE/v1/accounts/{AC}/contacts/{CT}/suppressions/{SU}
contacts.suppressions.deleteSDK operation deleteV1AccountsByAcContactsByCtSuppressionsBySu
Parameters
CTstring (CT… SID)RequiredSUstring (SU… SID)Requiredreasonstring (max 500 chars)query
List audience segments
GET/v1/accounts/{AC}/segments
segments.listSDK operation getV1AccountsByAcSegments
Parameters
limitinteger (1–100)querycursorstring (max 2048 chars)query
Create and materialize an audience segment
POST/v1/accounts/{AC}/segments
segments.createSDK operation postV1AccountsByAcSegments
Request body
kind"DYNAMIC"Requirednamestring (max 128 chars)RequiredcontactSidsstring (CT… SID)[]filtersobjectShow 7 child attributes
attributesobjectconsentobjectcreatedAfterstring (date-time)displayNameContainsstring (max 128 chars)localeInstring (max 35 chars)[]suppressedbooleantimezoneInstring (max 128 chars)[]
Preview typed segment membership without mutation
POST/v1/accounts/{AC}/segments/preview
segments.previewSDK operation postV1AccountsByAcSegmentsPreview
Request body
kind"DYNAMIC"RequiredcontactSidsstring (CT… SID)[]filtersobjectShow 7 child attributes
attributesobjectconsentobjectcreatedAfterstring (date-time)displayNameContainsstring (max 128 chars)localeInstring (max 35 chars)[]suppressedbooleantimezoneInstring (max 128 chars)[]
Get a contact segment
GET/v1/accounts/{AC}/segments/{SG}
segments.retrieveSDK operation getV1AccountsByAcSegmentsBySg
Parameters
SGstring (SG… SID)Required
Update and rematerialize a segment
PATCH/v1/accounts/{AC}/segments/{SG}
segments.updateSDK operation patchV1AccountsByAcSegmentsBySg
Parameters
SGstring (SG… SID)Required
Request body
kind"DYNAMIC"RequiredcontactSidsstring (CT… SID)[]filtersobjectShow 7 child attributes
attributesobjectconsentobjectcreatedAfterstring (date-time)displayNameContainsstring (max 128 chars)localeInstring (max 35 chars)[]suppressedbooleantimezoneInstring (max 128 chars)[]
namestring (max 128 chars)
Delete an unused segment
DELETE/v1/accounts/{AC}/segments/{SG}
segments.deleteSDK operation deleteV1AccountsByAcSegmentsBySg
Parameters
SGstring (SG… SID)Required
List materialized segment members and provenance
GET/v1/accounts/{AC}/segments/{SG}/members
segments.members.listSDK operation getV1AccountsByAcSegmentsBySgMembers
Parameters
SGstring (SG… SID)Requiredlimitinteger (1–100)querycursorstring (max 2048 chars)query
Refresh dynamic segment membership
POST/v1/accounts/{AC}/segments/{SG}/refresh
segments.refreshSDK operation postV1AccountsByAcSegmentsBySgRefresh
Parameters
SGstring (SG… SID)Required
Get the durable service-window state for a sender/contact pair
GET/v1/accounts/{AC}/senders/{WA}/contacts/{CT}/window
senders.contacts.window.listSDK operation getV1AccountsByAcSendersByWaContactsByCtWindow
Parameters
WAstring (WA… SID)RequiredCTstring (CT… SID)Required
List account suppressions with filters
GET/v1/accounts/{AC}/suppressions
suppressions.listSDK operation getV1AccountsByAcSuppressions
Account-wide by default; filter by contact, identifier, reason or scope. active=false returns the full history including lifted and expired rows.
Parameters
contactSidstring (CT… SID)queryidentifierstring (max 256 chars)queryidentifierTypeenumqueryphone_e164bsuidusernamescopeRefstring (max 64 chars)queryreasonstring (max 64 chars)queryscopeenumqueryMARKETINGALLactivebooleanquerylimitinteger (1–100)querycursorstring (max 2048 chars)query
Suppress a contact by SID or by identifier
POST/v1/accounts/{AC}/suppressions
suppressions.createSDK operation postV1AccountsByAcSuppressions
Addressed with exactly one of contactSid or identifier. An identifier that this account has never seen resolves-or-creates the contact, so a suppression captured before the first message still holds when that message is attempted.
Request body
reasonenumRequiredCUSTOMER_OPT_OUTPROVIDER_MARKETING_OPT_OUTKEYWORD_OPT_OUTCOMPLAINTLEGAL_SUPPRESSIONTENANT_BLOCKLISTRISK_BLOCKscopeenumRequiredMARKETINGALLcontactSidstring (CT… SID)expiresAtstring (date-time)identifierstring (max 256 chars)identifierTypeenumphone_e164bsuidusernamemirrorToProviderbooleanscopeRefstring (max 64 chars)senderSidstring (WA… SID)sourcestring (max 64 chars)
Lift suppressions for a contact addressed by SID or identifier
DELETE/v1/accounts/{AC}/suppressions
suppressions.deleteSDK operation deleteV1AccountsByAcSuppressions
Removal is a state change, never a delete of history: each affected row keeps its record and emits suppression.removed. Narrow with suppressionSid or scope.
Request body
contactSidstring (CT… SID)identifierstring (max 256 chars)identifierTypeenumphone_e164bsuidusernamereasonstring (max 500 chars)scopeenumMARKETINGALLscopeRefstring (max 64 chars)suppressionSidstring (SU… SID)