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.
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"}