Skip to the page

API reference

Stop texting somebody

Puts a person on the stop list and cancels their queued and scheduled texts.

POST/v1/stops

Puts a person on the stop list and cancels their queued and scheduled texts. Adding somebody already on it changes nothing.

Needs a key with the contacts:write scope. Keys and scopes

Send an Idempotency-Key so a retry never acts twice. Idempotency

Headers

  • Idempotency-Keystring

    Any string of up to 255 characters, new for each request. A retry with the same key gets the first answer back for 24 hours, with Idempotent-Replayed: true.

    Up to 255 characters.

Request body

  • personstringrequired

    The phone number or email address to stop texting.

    3 to 320 characters.

Example

curl -X POST "https://usebluebot.com/api/v1/stops" \
  -H "Authorization: Bearer $BLUEBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 0f6d8c2e-5b1a-4c7e-9d3f-2a8b6e1c4d70" \
  -d '{
    "person": "+15555550144"
  }'

Response

201: The stop.

  • object"stop"required
  • handlestringrequired

    A phone number in E.164 (+15555550123) or an email address an Apple ID uses (iMessage only).

  • contact_idstringrequired

    A ct_ id.

    Starts with ct_.

  • stopped_attimestamprequired

    When they were put on the list.

  • sourcestringrequired

    reply (they texted a stop word), dashboard, api, import or admin.

    One of reply, dashboard, api, import, admin.

Response201
{
  "object": "stop",
  "handle": "+15555550144",
  "contact_id": "ct_4Mr6NdF1jHwS8aPxQcUv3e",
  "stopped_at": "2026-11-13T19:41:00.000Z",
  "source": "api"
}

Errors

Every refusal has the same envelope and a page of its own. These are the ones this operation can give.

CodeStatusWhat it means
unauthorized401The request carried no key, or a key BlueBot doesn’t know: mistyped, revoked, or a test key sent to the live API.
insufficient_scope403The key doesn’t carry the scope the endpoint needs. Each endpoint’s reference names its scope.
rate_limited429Too many requests. A key may make 120 requests a minute. The RateLimit header says how many are left, and Retry-After how long to wait.
internal500Something went wrong on BlueBot’s side. It was reported. Send the request again; with an Idempotency-Key that is always safe.
invalid_request400Something in the request doesn’t fit: a missing or malformed field, a bad id, or a combination the endpoint refuses. details names each field.
idempotency_conflict409The Idempotency-Key was used in the last 24 hours with a different request. A key stands for one request.
conflict409The request doesn’t fit the thing’s current state, or another request with the same Idempotency-Key is still running.

Try it

Call this operation from the page with your own key. The key stays in this tab and is forgotten when you leave.