curl --request POST \
--url http://127.0.0.1:8081/v1/rpc/event.replay \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "event.replay",
"id": "<string>"
}
'import requests
url = "http://127.0.0.1:8081/v1/rpc/event.replay"
payload = {
"jsonrpc": "2.0",
"method": "event.replay",
"id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({jsonrpc: '2.0', method: 'event.replay', id: '<string>'})
};
fetch('http://127.0.0.1:8081/v1/rpc/event.replay', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8081",
CURLOPT_URL => "http://127.0.0.1:8081/v1/rpc/event.replay",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => 'event.replay',
'id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://127.0.0.1:8081/v1/rpc/event.replay"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"event.replay\",\n \"id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://127.0.0.1:8081/v1/rpc/event.replay")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"event.replay\",\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:8081/v1/rpc/event.replay")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"event.replay\",\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": "<string>",
"result": {
"audit_event_id": "<string>",
"event_id": "<string>",
"new_deliveries": [
{
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
}
],
"original_deliveries": [
{
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
}
],
"replay_event_id": "<string>",
"subscribers_replayed": [
"<string>"
]
}
}event.replay
Canonical operator-facing event redelivery primitive.
Redelivers one existing persisted event to all original agent subscribers, or to a caller-supplied subset of those original agent subscribers. The target set is owned by the original event_deliveries agent rows; current live subscriptions, route tables, and bundle declarations must not add recipients. Requested subscribers outside the original agent delivery set fail closed with EVENT_REPLAY_SUBSCRIBER_NOT_ORIGINAL.
Public replay creates fresh replay execution evidence. Implementations MUST preserve the original event, delivery, receipt, and session inspection surface, and MUST create a distinct replay event identity whose source_event_id/parent lineage points at the original event. The fresh replay event creates fresh event_deliveries rows, and the result reports source_delivery_id lineage back to the original delivery rows.
Only terminal original delivery rows are replayable in v1: delivered, failed, and dead_letter. Pending or in_progress originals fail closed with EVENT_REPLAY_NOT_ELIGIBLE. If the original event has no replayable original agent delivery history, the method fails with EVENT_REPLAY_NO_DELIVERY_HISTORY.
The server also persists a synthetic event.replayed audit event with original event identity, replay event identity, selected subscribers, actor token identity, and original delivery summary. event.list, event.get, run.trace, and event.subscribe observe this audit event through the normal event read/stream owners.
Runtime pause and run-dispatch blocking follow the queueable event-producing ingress rule: replay/audit events and delivery rows may be persisted, but subscriber work must not dispatch until resume/unblock. Missing or unregistered selected original subscribers fail closed before replay evidence is created with EVENT_REPLAY_SUBSCRIBER_UNAVAILABLE.
Error codes: , , , , , ,
Transport: all methods are a single POST /v1/rpc with the method name in the JSON-RPC body. The path shown is a per-method convenience.
curl --request POST \
--url http://127.0.0.1:8081/v1/rpc/event.replay \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "event.replay",
"id": "<string>"
}
'import requests
url = "http://127.0.0.1:8081/v1/rpc/event.replay"
payload = {
"jsonrpc": "2.0",
"method": "event.replay",
"id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({jsonrpc: '2.0', method: 'event.replay', id: '<string>'})
};
fetch('http://127.0.0.1:8081/v1/rpc/event.replay', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8081",
CURLOPT_URL => "http://127.0.0.1:8081/v1/rpc/event.replay",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => 'event.replay',
'id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://127.0.0.1:8081/v1/rpc/event.replay"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"event.replay\",\n \"id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://127.0.0.1:8081/v1/rpc/event.replay")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"event.replay\",\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:8081/v1/rpc/event.replay")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"event.replay\",\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": "<string>",
"result": {
"audit_event_id": "<string>",
"event_id": "<string>",
"new_deliveries": [
{
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
}
],
"original_deliveries": [
{
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
}
],
"replay_event_id": "<string>",
"subscribers_replayed": [
"<string>"
]
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

