Skip to main content
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.
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).
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.
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.
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