Assign a number to a customer

PATCH /v1/numbers/{id}

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.

Path parameters

NameTypeRequiredDescription
idstringYesThe E.164 number

Request body

JSON (Content-Type: application/json).

FieldTypeRequiredDescription
customer_idstringYesA customer id, or null to unassign Nullable.

Responses

StatusMeaningBody
200The updated numberNumber
400Unknown customerError
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
404Not foundError
429Rate limit or quota exceededError

200: Number fields

FieldTypeDescription
idstringExample: +15005550132.
objectnumber
phone_numberstring
statusactive, released
modetest, live
created_atstring (date-time)
customer_idstringThe customer this number is assigned to Nullable.
labelstringNullable.
tagsarray of string
poolsarray of stringPool ids
senderobjectHow the number stands with the carriers. null on sandbox numbers and on numbers that need no registration (toll-free, Canadian). Only an active number can text anyone; in every other state it can text only your verified numbers. Nullable.
sender.statetest_only, pending, active, action_neededtest_only: no registration submitted. pending: a registration is in review, or approved and being linked. active: linked to an approved registration. action_needed: see reason.
sender.registration_idstringThe registration it is (being) linked to Nullable.
sender.reasonstringWhat to do, in plain words, when state is action_needed Nullable.
sender.updated_atstring (date-time)

Errors

StatusWhen
400Unknown customer
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
404Not found
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 PATCH "https://api.joinsimplesms.com/v1/numbers/+15005550132" \
  -H "Authorization: Bearer $SIMPLESMS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "customer_id": "string"
}'

Node.js

javascript
import { SimpleSMS } from 'joinsimplesms'; // npm install joinsimplesms

const sms = new SimpleSMS(process.env.SIMPLESMS_API_KEY);

const number = await sms.numbers.update('+14155550132', { customerId: 'cus_a1B2c3D4e5F6g7' });

Python

python
import os
from joinsimplesms import SimpleSMS  # pip install joinsimplesms

client = SimpleSMS(os.environ["SIMPLESMS_API_KEY"])

number = client.numbers.update("+14155550132", customer_id="cus_a1B2c3D4e5F6g7")