Docs
Esc

Suggested

QuickstartGet started
Webhooks and signaturesMessaging
Create a messagemessages.create · POST /v1/accounts/{AC}/messages
RATE_LIMITED429 · Rate limit exceeded.
message.deliveredMessage resource
Contents

API reference

Contacts

API reference descriptions are provided in English to preserve the exact published contract.

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)Required
  • resourceRefstring (max 64 chars)Required
  • taskenumRequired

    DISPLAY_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)query
  • identifierstring (max 256 chars)query
  • identifierTypeenumquery

    phone_e164bsuidusername

  • scopeRefstring (max 64 chars)query
  • limitinteger (1–100)query
  • cursorstring (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[]Required
  • attributesobject
  • defaultCountrystring (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

  • actionenumRequired

    SUPPRESS_MARKETINGWITHDRAW_MARKETING

  • confirmedtrueRequired
  • contactSidsstring (CT… SID)[]Required
  • reasonstring (max 256 chars)Required
  • requestKeystring (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)query
  • cursorstring (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

  • actionenumRequired

    mergedismiss

List reversible contact merge history

GET/v1/accounts/{AC}/contacts/merges

contacts.merges.listSDK operation getV1AccountsByAcContactsMerges

Parameters

  • limitinteger (1–100)query
  • cursorstring (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

  • attributesobject
  • displayNamenull | 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)Required
  • limitinteger (1–100)query
  • cursorstring (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

  • purposeenumRequired

    TRANSACTIONALAUTHENTICATIONMARKETINGSUPPORT

  • sourceenumRequired

    APIIMPORTKEYWORDFORMPROVIDERDASHBOARD

  • statusenumRequired

    OPTED_INOPTED_OUTUNKNOWNREVOKEDEXPIRED

  • evidenceobject
    Show 11 child attributes
    • applicationstring (max 128 chars)
    • campaignRefstring (max 128 chars)
    • capturedAtstring (date-time)
    • proofRefstring (max 512 chars)
    • reOptInboolean
    • reasonstring (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)Required
  • reasonstring (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

  • identifierobjectRequired
    Show 3 child attributes
    • typeenumRequired

      phone_e164bsuidusername

    • valuestring (max 256 chars)Required
    • scopeRefstring (max 64 chars)
  • reasonstring (max 256 chars)Required
  • separateRecipientAcknowledgedtrueRequired
  • defaultCountrystring (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)Required
  • limitinteger (1–100)query
  • cursorstring (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

  • reasonenumRequired

    CUSTOMER_OPT_OUTPROVIDER_MARKETING_OPT_OUTKEYWORD_OPT_OUTCOMPLAINTLEGAL_SUPPRESSIONTENANT_BLOCKLISTRISK_BLOCK

  • scopeenumRequired

    MARKETINGALL

  • sourcestring (max 64 chars)Required
  • expiresAtstring (date-time)
  • mirrorToProviderboolean
  • senderSidstring (WA… SID)

Remove a suppression

DELETE/v1/accounts/{AC}/contacts/{CT}/suppressions/{SU}

contacts.suppressions.deleteSDK operation deleteV1AccountsByAcContactsByCtSuppressionsBySu

Parameters

  • CTstring (CT… SID)Required
  • SUstring (SU… SID)Required
  • reasonstring (max 500 chars)query

List audience segments

GET/v1/accounts/{AC}/segments

segments.listSDK operation getV1AccountsByAcSegments

Parameters

  • limitinteger (1–100)query
  • cursorstring (max 2048 chars)query

Create and materialize an audience segment

POST/v1/accounts/{AC}/segments

segments.createSDK operation postV1AccountsByAcSegments

Request body

  • kind"DYNAMIC"Required
  • namestring (max 128 chars)Required
  • contactSidsstring (CT… SID)[]
  • filtersobject
    Show 7 child attributes
    • attributesobject
    • consentobject
    • createdAfterstring (date-time)
    • displayNameContainsstring (max 128 chars)
    • localeInstring (max 35 chars)[]
    • suppressedboolean
    • timezoneInstring (max 128 chars)[]

Preview typed segment membership without mutation

POST/v1/accounts/{AC}/segments/preview

segments.previewSDK operation postV1AccountsByAcSegmentsPreview

Request body

  • kind"DYNAMIC"Required
  • contactSidsstring (CT… SID)[]
  • filtersobject
    Show 7 child attributes
    • attributesobject
    • consentobject
    • createdAfterstring (date-time)
    • displayNameContainsstring (max 128 chars)
    • localeInstring (max 35 chars)[]
    • suppressedboolean
    • timezoneInstring (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"Required
  • contactSidsstring (CT… SID)[]
  • filtersobject
    Show 7 child attributes
    • attributesobject
    • consentobject
    • createdAfterstring (date-time)
    • displayNameContainsstring (max 128 chars)
    • localeInstring (max 35 chars)[]
    • suppressedboolean
    • timezoneInstring (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)Required
  • limitinteger (1–100)query
  • cursorstring (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)Required
  • CTstring (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)query
  • identifierstring (max 256 chars)query
  • identifierTypeenumquery

    phone_e164bsuidusername

  • scopeRefstring (max 64 chars)query
  • reasonstring (max 64 chars)query
  • scopeenumquery

    MARKETINGALL

  • activebooleanquery
  • limitinteger (1–100)query
  • cursorstring (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

  • reasonenumRequired

    CUSTOMER_OPT_OUTPROVIDER_MARKETING_OPT_OUTKEYWORD_OPT_OUTCOMPLAINTLEGAL_SUPPRESSIONTENANT_BLOCKLISTRISK_BLOCK

  • scopeenumRequired

    MARKETINGALL

  • contactSidstring (CT… SID)
  • expiresAtstring (date-time)
  • identifierstring (max 256 chars)
  • identifierTypeenum

    phone_e164bsuidusername

  • mirrorToProviderboolean
  • scopeRefstring (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)
  • identifierTypeenum

    phone_e164bsuidusername

  • reasonstring (max 500 chars)
  • scopeenum

    MARKETINGALL

  • scopeRefstring (max 64 chars)
  • suppressionSidstring (SU… SID)