ShredReplay captures raw Solana shred packets and lets you replay them to any UDP target with precise timing control. The service retains approximately the last 24 hours of shred data, so you can replay any slot or time window from the past day.
Use it to replay historical network data for testing validators, debugging slot behavior, or analyzing shred propagation.
Authentication
All API endpoints (except health check) require an API key.
Include your key in every request:
X-API-Key: YOUR_API_KEY
Your API key is provided by the service administrator. Keep it secret.
Browsing Available Data
List Available Slots
# List slots (default: first 100)curlhttps://API_HOST/v1/slots\-H'X-API-Key: YOUR_KEY'# Filter by slot rangecurl'https://API_HOST/v1/slots?from=405445570&to=405445600'\-H'X-API-Key: YOUR_KEY'# Increase limit (max 1000)curl'https://API_HOST/v1/slots?from=405445570&limit=500'\-H'X-API-Key: YOUR_KEY'
Inspect a Slot
Field
Description
packet_count
Total shred packets captured for this slot
variant_histogram
Breakdown by shred type
first_recv_ns / last_recv_ns
Capture time window (unix nanoseconds)
Replaying Shreds
Creating a Replay Job
Packet Selection
Use the selector object to choose which packets to replay.
By Slot Range
By Specific Slots
By Time (Last N Seconds)
Replays the last 5 minutes of captured data.
By Exact Time Range
Time values are unix nanoseconds. You can find these from the slot inspect or stats endpoints.
With Slot Padding
Include neighboring slots around your selection:
Selects slots 405445595 through 405445605.
Filter by Shred Type
Value
Description
"all"
All shred types (default)
"data_only"
Only data shreds
"coding_only"
Only coding/FEC shreds
Only Valid Shreds
Excludes packets that failed shred header parsing.
Timing Modes
Original Timing
Preserves the original inter-packet delays. Gaps larger than 1ms are accurate within 10%. Use this to simulate real network conditions.
Scaled Timing
Speed
Effect
2.0
2x faster than original
0.5
Half speed (slow motion)
10.0
10x faster
Max Speed
Sends all packets as fast as possible while preserving order. No inter-packet delay.
Dry Run
Preview how many packets would be replayed without sending anything:
Checking Job Status
Status
Meaning
queued
Waiting to start
running
Sending packets
completed
All packets sent
failed
Error occurred (see error field)
cancelled
Cancelled by user
Cancelling a Job
Ordering Guarantees
Packets are sent in the exact order they were originally captured (sorted by receive timestamp, then sequence number)
Payloads are byte-identical to the original UDP packets — no modification
Typical Workflow
1
Browse available slots
GET /v1/slots?from=X&to=Y → see what's captured
2
Inspect the slots you care about
GET /v1/slots/405445570 → packet count, variant breakdown
3
Dry run to preview
POST /v1/replay/jobs → dry_run: true, see selected_count
4
Replay for real
POST /v1/replay/jobs → dry_run: false, packets sent to your target
5
Monitor progress
GET /v1/replay/jobs/{id} → watch sent_count increase
Rate Limits
API requests are rate-limited per key. If you exceed the limit, you'll receive a 429 Too Many Requests response. Wait briefly and retry.
Health Check
Returns {"ok": true} — no authentication required.