List brand + campaign registrations

GET /v1/registrations

Send your API key as a bearer token: Authorization: Bearer ssms_sk_.... Test keys run this endpoint against the sandbox; see Authentication for key modes and scopes.

Responses

StatusMeaningBody
200Registrations, newest firstPage of Registration
401Missing, malformed, or revoked API keyError
402Billable live calls only: the prepaid credit balance cannot cover the call (insufficient_credits); nothing was done or chargedError
429Rate limit or quota exceededError

200: each item in data (Registration)

The body is a page: data (the array), has_more, and next_cursor (null on the last page).

FieldTypeDescription
idstringExample: reg_a1B2c3D4e5F6.
objectregistration
statusdraft, checks_failed, ready, submitted, in_review, approved, rejected
business_namestring
websitestring
use_casestring
opt_in_urlstringNullable.
privacy_urlstringNullable.
terms_urlstringNullable.
support_emailstringNullable.
brandobject
sample_messagesarray of stringThe examples as they stand: yours, or starter drafts (see samples_source). These are what a submission files.
samples_sourcestarter, customerstarter: our drafts, not yet edited or confirmed; the registration cannot be ready. customer: yours.
descriptionstringYour own description; null when the generated one (generated.campaign.description) is filed Nullable.
sample_checkobjectThe example-message check. Deterministic rules, no AI. Recomputed on every read.
sample_check.passedinteger
sample_check.failedinteger
sample_check.warningsinteger
sample_check.okboolean
sample_check.findingsarray of SampleFinding
guidanceobjectThe five answers every state gives
guidance.what_happenedstring
guidance.whystring
guidance.next_actoryou, delivered, carriers, nobody
guidance.next_stepstring
guidance.afterstring
checkobjectNullable.
check.checked_atstring (date-time)
check.passedinteger
check.failedinteger
check.warningsinteger
check.urlsobject
check.findingsarray of Finding
rejectionobjectNullable.
rejection.codestring
rejection.titlestring
rejection.explanationstring
rejection.fixstring
rejection.notestringNullable.
rejection.related_findingsarray of string
rejection.rejected_atstring (date-time)
generatedobjectDeterministic compliant copy and the registry draft
generated.opt_in_ctastring
generated.privacy_clausestring
generated.sms_termsstring
generated.sample_messagesarray of stringStarter drafts from templates. What is filed is the top-level sample_messages (also in generated.campaign.sample_messages). At most 5 items. At least 2 items.
generated.help_replystring
generated.stop_replystring
generated.opt_in_confirmationstring
generated.brandobject
generated.brand.missingarray of string
generated.campaignobject
generated.campaign.use_casestring
generated.campaign.descriptionstring
generated.campaign.message_flowstring
generated.campaign.sample_messagesarray of string
generated.campaign.opt_in_keywordsarray of string
generated.campaign.opt_in_messagestring
generated.campaign.opt_out_keywordsarray of string
generated.campaign.opt_out_messagestring
generated.campaign.help_keywordsarray of string
generated.campaign.help_messagestring
generated.campaign.embedded_linkboolean
generated.campaign.embedded_phoneboolean
generated.campaign.number_poolingboolean
generated.campaign.direct_lendingboolean
generated.campaign.age_gatedboolean
generated.campaign.affiliate_marketingboolean
generated.campaign.privacy_policy_urlstring
generated.campaign.terms_urlstring
submissionsinteger
historyarray of object
history[].atstring (date-time)
history[].statusstring
history[].actorcustomer, delivered, system
history[].labelstring
history[].reason_codestring
history[].notestring
created_atstring (date-time)
updated_atstring (date-time)

Errors

StatusWhen
401Missing, malformed, or revoked API key
402Billable live calls only: the prepaid credit balance cannot cover the call (insufficient_credits); nothing was done or charged
429Rate limit or quota exceeded

Every error has the same JSON shape, and request_id matches the X-Request-Id response header. Errors lists every code and what to do about it.

json
{
  "error": {
    "code": "invalid_request",
    "message": "What went wrong, in plain words.",
    "param": "the_field",
    "request_id": "req_a1B2c3D4e5F6g7H8"
  }
}

Examples

curl

bash
curl -X GET "https://api.joinsimplesms.com/v1/registrations" \
  -H "Authorization: Bearer $SIMPLESMS_API_KEY"

Node.js

The Node.js SDK does not wrap this endpoint yet; call it with fetch.

javascript
const res = await fetch('https://api.joinsimplesms.com/v1/registrations', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.SIMPLESMS_API_KEY}`,
  },
});

if (!res.ok) throw new Error((await res.json()).error.message);
const data = await res.json();

Python

The Python SDK does not wrap this endpoint yet; call it over HTTP.

python
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.joinsimplesms.com/v1/registrations",
    method="GET",
    headers={
        "Authorization": f"Bearer {os.environ['SIMPLESMS_API_KEY']}",
    },
)
with urllib.request.urlopen(req) as res:
    data = json.load(res)