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
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Example: evt_a1B2c3D4e5F6g7H8. |
Request body
JSON (Content-Type: application/json).
| Field | Type | Required | Description |
|---|---|---|---|
endpoint_id | string | Yes | Example: we_a1B2c3D4e5F6. |
Responses
| Status | Meaning | Body |
|---|---|---|
| 200 | What the endpoint answered | JSON object |
| 401 | Missing, malformed, or revoked API key | Error |
| 402 | Billable live calls only: the prepaid credit balance cannot cover the call (insufficient_credits); nothing was done or charged | Error |
| 404 | No such event or endpoint | Error |
| 429 | Rate limit or quota exceeded | Error |
200: response fields
| Field | Type | Description |
|---|---|---|
object | webhook_replay | |
event_id | string | |
endpoint_id | string | |
delivery_id | string | |
ok | boolean | |
status_code | integer | Nullable. |
error | timeout, unreachable | Nullable. |
latency_ms | integer |
Errors
| Status | When |
|---|---|
| 401 | Missing, malformed, or revoked API key |
| 402 | Billable live calls only: the prepaid credit balance cannot cover the call (insufficient_credits); nothing was done or charged |
| 404 | No such event or endpoint |
| 429 | Rate 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)