List SMS opt-outs
curl --request GET \ --url 'https://api.sipstack.com/api/v2/opt-outs?since=2026-10-01T00%3A00%3A00Z&limit=100' \ --header 'x-api-key: <x-api-key>'import requests
url = "https://api.sipstack.com/api/v2/opt-outs"
querystring = {"since":"2026-10-01T00:00:00Z","limit":"100"}
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers, params=querystring)
print(response.json())const url = 'https://api.sipstack.com/api/v2/opt-outs?since=2026-10-01T00%3A00%3A00Z&limit=100';const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}import axios from 'axios';
const options = { method: 'GET', url: 'https://api.sipstack.com/api/v2/opt-outs', params: {since: '2026-10-01T00:00:00Z', limit: '100'}, headers: {'x-api-key': '<x-api-key>'}};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}Returns your organization’s SMS opt-out list — one row per suppressed
phone number (not per contact), ordered by updated_at ascending.
Use it to keep a CRM or your own suppression list in sync. Requires the
contacts:read scope and the same Flare API plan and rate limit as the
contacts endpoints. Also available at /api/v1/opt-outs.
Pass since to get only numbers added or changed after that timestamp,
and page with next_cursor. A number that is opted back in leaves
this list, so it never shows up here as a removal — subscribe to the
contact.opted_in webhook or read
is_opted_out on GET /api/v2/contacts?updated_since= to see opt-ins.
The text of the opt-out message is never returned.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”ISO-8601 timestamp. Return only numbers added or changed after it. An unparseable date returns 400.
Example
2026-10-01T00:00:00ZOpaque keyset cursor from a previous response’s next_cursor.
Responses
Section titled “ Responses ”A page of opt-outs, oldest change first.
object
One phone number on your organization’s SMS opt-out list.
object
The opted-out number (E.164).
How the number was opted out.
When the number was first added to the list.
When the entry last changed — the field since filters on.
object
Pass as cursor to fetch the next page; null on the last page.
Example
{ "success": true, "data": [ { "phone_number": "+14165550100", "method": "sms" } ], "pagination": { "limit": 100 }}Invalid since date or cursor.
Inline error shape used by the messaging API and management endpoints.
object
Example
{ "success": false, "error": "Recipient phone number (to) is required"}Missing or invalid API key.
Inline error shape used by the messaging API and management endpoints.
object
Example
{ "success": false, "error": "Recipient phone number (to) is required"}The key is missing the contacts:read scope, or the plan does not include Flare API access.
Inline error shape used by the messaging API and management endpoints.
object
Example
{ "success": false, "error": "Recipient phone number (to) is required"}Rate limit exceeded.
Inline error shape used by the messaging API and management endpoints.
object
Example
{ "success": false, "error": "Recipient phone number (to) is required"}Internal error.
Inline error shape used by the messaging API and management endpoints.
object
Example
{ "success": false, "error": "Recipient phone number (to) is required"}