curl --request POST \
--url http://127.0.0.1:8081/v1/rpc/agent.replay \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "agent.replay",
"id": "<string>"
}
'import requests
url = "http://127.0.0.1:8081/v1/rpc/agent.replay"
payload = {
"jsonrpc": "2.0",
"method": "agent.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: 'agent.replay', id: '<string>'})
};
fetch('http://127.0.0.1:8081/v1/rpc/agent.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/agent.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' => 'agent.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/agent.replay"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"agent.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/agent.replay")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"agent.replay\",\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:8081/v1/rpc/agent.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\": \"agent.replay\",\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": "<string>",
"result": {
"agent_id": "<string>",
"audit_event_id": "<string>",
"event_id": "<string>",
"new_delivery": {
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
},
"original_delivery": {
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
},
"replay_event_id": "<string>"
}
}agent.replay
Agent-scoped projection of the canonical operator-facing event redelivery primitive.
Redelivers one existing persisted event to exactly one requested original agent subscriber. This method MUST consume the same canonical event redelivery owner as event.replay by projecting the request to the singleton subscriber set [agent_id]. It MUST NOT implement independent replay target derivation, fresh replay event creation, audit emission, idempotency, or delivery/session interpretation.
The target authority remains the original event_deliveries agent rows for event_id. If agent_id was not an original agent subscriber for that event, the method fails closed with EVENT_REPLAY_SUBSCRIBER_NOT_ORIGINAL. Current live subscriptions, route tables, bundle declarations, or agent backlog state must not add recipients.
The replay preserves the original event, delivery, receipt, and session inspection surface, creates a distinct replay event identity with source_event_id/parent lineage to the original event, creates a fresh delivery row for the selected agent, and returns the single original/new delivery projection. The synthetic audit event is the canonical event.replayed event; this method does not create agent.event_replayed or mutate/abort the original session.
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/agent.replay \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "agent.replay",
"id": "<string>"
}
'import requests
url = "http://127.0.0.1:8081/v1/rpc/agent.replay"
payload = {
"jsonrpc": "2.0",
"method": "agent.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: 'agent.replay', id: '<string>'})
};
fetch('http://127.0.0.1:8081/v1/rpc/agent.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/agent.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' => 'agent.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/agent.replay"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"agent.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/agent.replay")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"agent.replay\",\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:8081/v1/rpc/agent.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\": \"agent.replay\",\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": "<string>",
"result": {
"agent_id": "<string>",
"audit_event_id": "<string>",
"event_id": "<string>",
"new_delivery": {
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
},
"original_delivery": {
"attempt": 2,
"delivery_id": "<string>",
"status": "pending",
"subscriber_id": "<string>",
"session_id": "<string>",
"source_delivery_id": "<string>"
},
"replay_event_id": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

