Contacts (v2)
Resubscribe Contact
Reactivate a previously opted-out contact on a sending list, with consent proof and provider/carrier opt-out handling.
POST
Resubscribes a contact who previously unsubscribed from a sending list. This reactivates their existing membership rather than creating a new one, and clears the opt-out across all three layers where it can be cleared automatically: your database, the SMS provider’s opt-out list, and — where applicable — the carrier network.
Because resubscribing re-establishes messaging consent,
consent_method is required and is validated against a fixed enum. Verbal consent is rejected for these lists (all sending lists default to marketing, and TCPA requires prior express written consent for marketing). Contacts who opted out via a STOP keyword are subject to a list-level cooling-off period and, once reactivated, return carrier_status: "pending_start_keyword" because only the consumer can clear a carrier-level block by texting START.
Body Parameters
string
required
Contact phone number in E.164 format (e.g.,
+14155559876).string
required
Sending list phone number in E.164 format (e.g.,
+18005551234). Must be an active list owned by your account.string
required
How the contact re-granted consent. Must be one of:
web_form, sms_keyword, mobile_app, written, api_with_proof, double_opt_in. verbal is a recognized method but is rejected for these lists (see verbal_not_valid_for_marketing).string
Where the consent was captured (e.g., a form URL or page identifier). Maximum 2048 characters. Stored on the membership for compliance records.
string
IP address of the contact at the time consent was re-granted. Must be a valid IPv4 or IPv6 address.
string
Browser/device user agent captured at consent time. Maximum 500 characters.
string
The exact consent language shown to the contact. Maximum 5000 characters.
boolean
default:"false"
When
true, enroll the reactivated contact in matching Welcome Journeys. Enrollment only occurs when carrier_status resolves to cleared — a contact pending a START keyword is not enrolled because messages would fail at the carrier level.boolean
default:"true"
When
true, skips journey enrollment if the contact is already in an active workflow. Only relevant when use_journeys is true.Response Fields
boolean
true when the contact was reactivated.boolean
Always
true on a successful response.string
Consent state after reactivation. Always
re_opted_in.string
cleared when messaging can resume immediately, or pending_start_keyword when the prior opt-out was a STOP keyword and the contact must text START to clear the carrier-level block. When pending_start_keyword, carrier_instructions is also returned.string
Present only when
carrier_status is pending_start_keyword. Human-readable instruction telling the contact to text START to the list number before messages can be delivered.object
Result of syncing the opt-out removal with the SMS provider.
string
Unique identifier of the Contact record.
string
Unique identifier of the ListContact record (contact-on-list membership) that was reactivated.
integer
Number of Welcome Journeys the contact was enrolled in on reactivation (
0 or 1).string
The unsubscribe reason recorded before reactivation.
null if none was set.string
ISO 8601 UTC timestamp of the prior unsubscribe.
null if none was recorded.Examples
Error Codes
A
pending_start_keyword carrier status means the contact still has a carrier-level block from their STOP reply. No API can clear this — the contact must text START to the list number. Messages sent before then will fail at the carrier.Next Steps
Create Contact
Add a contact to a sending list
Delete Contact
Unsubscribe a contact from a list