Replay an event to one webhook endpoint

POST /v1/events/{id}/replay

Sends the stored event to the endpoint you name, now, and returns its answer. Not retried. Works for paused endpoints and ones not subscribed to the event type.

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
idstringYesExample: evt_a1B2c3D4e5F6g7H8.

Request body

JSON (Content-Type: application/json).

FieldTypeRequiredDescription
endpoint_idstringYesExample: we_a1B2c3D4e5F6.

Responses

StatusMeaningBody
200What the endpoint answeredJSON object
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
404No such event or endpointError
429Rate limit or quota exceededError

200: response fields

FieldTypeDescription
objectwebhook_replay
event_idstring
endpoint_idstring
delivery_idstring
okboolean
status_codeintegerNullable.
errortimeout, unreachableNullable.
latency_msinteger

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
404No such event or endpoint
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 POST "https://api.joinsimplesms.com/v1/events/evt_a1B2c3D4e5F6g7H8/replay" \
  -H "Authorization: Bearer $SIMPLESMS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "endpoint_id": "we_a1B2c3D4e5F6"
}'

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/events/evt_a1B2c3D4e5F6g7H8/replay', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SIMPLESMS_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "endpoint_id": "we_a1B2c3D4e5F6"
  }),
});

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/events/evt_a1B2c3D4e5F6g7H8/replay",
    method="POST",
    headers={
        "Authorization": f"Bearer {os.environ['SIMPLESMS_API_KEY']}",
        "Content-Type": "application/json",
    },
    data=json.dumps({
        "endpoint_id": "we_a1B2c3D4e5F6"
    }).encode(),
)
with urllib.request.urlopen(req) as res:
    data = json.load(res)