Update a segment

PATCH /v1/segments/{id}

Send name / description alone, or rules (and match) to replace the whole rule list.

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
idstringYes

Request body

JSON (Content-Type: application/json).

A SegmentInput object.

FieldTypeRequiredDescription
namestringNoAt most 80 characters.
descriptionstringNoAt most 200 characters. Nullable.
matchall, anyNoDefault "all".
rulesarray of SegmentRuleNoAt most 10 items.

Responses

StatusMeaningBody
200The segmentSegment
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: Segment fields

FieldTypeDescription
idstringExample: seg_a1B2c3D4e5F6.
objectsegment
namestring
descriptionstringNullable.
matchall, any
rulesarray of SegmentRule
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
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/segments/seg_a1B2c3D4e5F6" \
  -H "Authorization: Bearer $SIMPLESMS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "rules": [
    {
      "field": "tag",
      "op": "is",
      "value": "vip"
    },
    {
      "field": "state",
      "op": "is",
      "value": "TN"
    },
    {
      "field": "field",
      "key": "plan",
      "op": "is",
      "value": "pro"
    },
    {
      "field": "topic",
      "key": "tp_marketing",
      "op": "is",
      "value": "subscribed"
    }
  ]
}'

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/segments/seg_a1B2c3D4e5F6', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.SIMPLESMS_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "rules": [
      {
        "field": "tag",
        "op": "is",
        "value": "vip"
      },
      {
        "field": "state",
        "op": "is",
        "value": "TN"
      },
      {
        "field": "field",
        "key": "plan",
        "op": "is",
        "value": "pro"
      },
      {
        "field": "topic",
        "key": "tp_marketing",
        "op": "is",
        "value": "subscribed"
      }
    ]
  }),
});

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/segments/seg_a1B2c3D4e5F6",
    method="PATCH",
    headers={
        "Authorization": f"Bearer {os.environ['SIMPLESMS_API_KEY']}",
        "Content-Type": "application/json",
    },
    data=json.dumps({
        "rules": [
            {
                "field": "tag",
                "op": "is",
                "value": "vip"
            },
            {
                "field": "state",
                "op": "is",
                "value": "TN"
            },
            {
                "field": "field",
                "key": "plan",
                "op": "is",
                "value": "pro"
            },
            {
                "field": "topic",
                "key": "tp_marketing",
                "op": "is",
                "value": "subscribed"
            }
        ]
    }).encode(),
)
with urllib.request.urlopen(req) as res:
    data = json.load(res)