API Reference · Control-plane API
Webhook Deliveries
Inspect endpoint history, latest and recent activity, individual delivery details, and retryable failures.
Shared access contract
| Control | Required contract |
|---|---|
| Authentication | Bearer access token for an active organization member. |
| Permission | webhooks.manage capability; reads require webhooks:read and retry requires webhooks:write. |
| Project selection | Where supported, pass project_id in Python, { projectId } options in Node.js, or X-Project-ID over HTTPS. |
List Webhook Deliveries
GET/org/webhooks/{endpoint_id}/deliveries
200 OK
| Field | Type | Contract |
|---|---|---|
endpoint_id | integer path | Required positive endpoint ID. |
page | integer query | Optional positive page; defaults to 1. |
page_size | integer query | Optional 1–100; defaults to 20. |
status_filter | string query | Optional delivery status. |
import osfrom memorysync import ControlPlaneClientclient = ControlPlaneClient(base_url="https://api.memorysync.io",access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],)deliveries = client.list_webhook_deliveries(51,page=1,page_size=25,project_id=os.environ["MEMORYSYNC_PROJECT_ID"],)
response.json
{"deliveries":[{"id":8801,"endpoint_id":51,"event_type":"memory.created","status":"success","attempt_number":1}],"total":1,"page":1,"page_size":25}
- Use pagination metadata; status values include pending, retrying, success, failed, and
dead_letter.
| Concern | Contract |
|---|---|
| Scope | Endpoint and deliveries must match the organization and selected project. |
| Errors | 400/422 invalid paging or status; 401/403 access failure; 404 unavailable endpoint. |
Get Latest Webhook Delivery
GET/org/webhooks/{endpoint_id}/deliveries/latest
200 OK
| Field | Type | Contract |
|---|---|---|
endpoint_id | integer path | Required positive endpoint ID. |
import osfrom memorysync import ControlPlaneClientclient = ControlPlaneClient(base_url="https://api.memorysync.io",access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],)delivery = client.get_latest_webhook_delivery(51,project_id=os.environ["MEMORYSYNC_PROJECT_ID"],)
response.json
{"id":8801,"endpoint_id":51,"event_type":"memory.created","status":"success","status_code":200,"latency_ms":142}
- Returns
nullwhen the endpoint has no deliveries.
| Concern | Contract |
|---|---|
| Scope | Endpoint and latest delivery must match the organization and selected project. |
| Errors | 401/403 access failure; 404 unavailable endpoint. |
List Recent Webhook Deliveries
GET/org/webhooks/deliveries/recent
200 OK
| Field | Type | Contract |
|---|---|---|
page | integer query | Optional positive page; defaults to 1. |
page_size | integer query | Optional 1–100; defaults to 20. |
endpoint_id | integer query | Optional endpoint filter. |
status_filter | string query | Optional delivery-status filter. |
import osfrom memorysync import ControlPlaneClientclient = ControlPlaneClient(base_url="https://api.memorysync.io",access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],)deliveries = client.list_recent_webhook_deliveries(page=1,page_size=25,project_id=os.environ["MEMORYSYNC_PROJECT_ID"],)
response.json
{"deliveries":[{"id":8801,"endpoint_id":51,"event_type":"memory.created","status":"success"}],"total":1,"page":1,"page_size":25}
- Results span authorized endpoints in the selected scope and may be filtered by endpoint.
| Concern | Contract |
|---|---|
| Scope | Only deliveries in the organization and selected project are returned. |
| Errors | 400/422 invalid filters; 401/403 access failure. |
Get Webhook Delivery
GET/org/webhooks/deliveries/{delivery_id}
200 OK
| Field | Type | Contract |
|---|---|---|
delivery_id | integer path | Required positive delivery ID. |
import osfrom memorysync import ControlPlaneClientclient = ControlPlaneClient(base_url="https://api.memorysync.io",access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],)delivery = client.get_webhook_delivery(8801,project_id=os.environ["MEMORYSYNC_PROJECT_ID"],)
response.json
{"id":8801,"endpoint_id":51,"event_type":"memory.created","status":"success","payload":{"memory_id":"mem_123"},"status_code":200,"response_body":"ok","attempt_number":1,"max_attempts":5}
- Detail can contain sensitive payload, signature, bounded response, and error data.
| Concern | Contract |
|---|---|
| Scope | Delivery must match the organization and selected project. |
| Errors | 401/403 access failure; 404 unavailable delivery. |
Retry Webhook Delivery
POST/org/webhooks/deliveries/{delivery_id}/retry
200 OK
| Field | Type | Contract |
|---|---|---|
delivery_id | integer path | Required failed or dead_letter delivery ID. |
| Request body | none | No JSON body. |
import osfrom memorysync import ControlPlaneClientclient = ControlPlaneClient(base_url="https://api.memorysync.io",access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],)delivery = client.retry_webhook_delivery(8801,project_id=os.environ["MEMORYSYNC_PROJECT_ID"],)
response.json
{"id":8801,"endpoint_id":51,"status":"pending","attempt_number":2,"max_attempts":5}
- A pending result confirms requeueing, not successful downstream receipt.
| Concern | Contract |
|---|---|
| Scope | Delivery must match the organization and selected project. |
| Errors | 400 status or attempt limit prevents retry; 401/403 access failure; 404 unavailable delivery. |
Shared handling
Related reference
Was this page helpful?