- Auth: API key (Authentication)
- Scope:
events:read - Cost: Free.
Use it to debug your endpoint: lastStatus and lastError show what it answered, and nextAttemptAt when we will retry.
The webhook's latest deliveries, newest first, kept 90 days. Free. Scope events:read.
Request
curl "https://api.installgraph.com/v1/webhooks/6731b2e4c9a1f20d8e4b7c15/deliveries?limit=1" \
-H "Authorization: Bearer $INSTALLGRAPH_API_KEY"
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | Yes |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit |
integer | No | 1–100. Default 50. |
Response
200. The example's stores are fictional.
{
"data": [
{
"id": "6733d1a07be42c19f5a8e301",
"eventId": "evt_6720a4c3f1b2",
"type": "removed",
"domain": "example.com",
"status": "delivered",
"attempts": 1,
"lastStatus": 204,
"lastError": null,
"credits": 10,
"refunded": false,
"createdAt": "2026-11-12T04:21:05.000Z",
"lastAttemptAt": "2026-11-12T04:21:07.000Z",
"nextAttemptAt": null,
"deliveredAt": "2026-11-12T04:21:07.000Z"
}
],
"meta": {
"requestId": "6f1c2a9e-4b7d-4e2a-9c51-0d3b8e7f2a14",
"creditsUsed": 0,
"creditsCharged": 0,
"creditsRemaining": 2480,
"freeRepulls": 0
}
}
Fields
| Field | Type | Description |
|---|---|---|
data[].id |
string | The payload's id and the Installgraph-Webhook-Id header. |
data[].eventId |
string | The event's id in GET /v1/events. |
data[].type |
string | One of installed, removed. |
data[].domain |
string | |
data[].status |
string | failed: every retry failed (refunded). expired: your balance did not cover it within 7 days (never charged). cancelled: the webhook was deleted or disabled first. One of pending, awaiting_credits, delivered, failed, expired, cancelled. |
data[].attempts |
integer | |
data[].lastStatus |
integer | null | Your endpoint's HTTP status on the last attempt. |
data[].lastError |
string | null | |
data[].credits |
integer | |
data[].refunded |
boolean | |
data[].createdAt |
string (date-time) | |
data[].lastAttemptAt |
string (date-time) | null | |
data[].nextAttemptAt |
string (date-time) | null | |
data[].deliveredAt |
string (date-time) | null |
Every keyed response also carries meta (requestId, creditsUsed, creditsRemaining, freeRepulls) and the X-Credits-* and X-RateLimit-* headers. See Credits and Rate limits.
Errors
| Status | Code | Meaning | What to do |
|---|---|---|---|
| 400 | invalid_request |
A parameter or body field is missing or malformed. | Fix the request; message names the field. Do not retry unchanged. |
| 404 | not_found |
No such endpoint, app, or store (or not scanned yet). | Check the slug or domain. Store 404s are free within the lookup-miss allowance. |
All codes: Errors.