Your webhooks

GET/v1/webhooks

Lists every webhook on your account, active or disabled, newest first, free.

View as MarkdownOpenAPI specAll docs for LLMs

Use it to check which subscriptions are running and whether any was disabled after repeated failed deliveries (disabledReason).

Every webhook on your account, active or disabled, newest first. Free. Scope events:read.

Request

curl "https://api.installgraph.com/v1/webhooks" \
  -H "Authorization: Bearer $INSTALLGRAPH_API_KEY"

Response

200. The example's stores are fictional.

{
  "data": [
    {
      "id": "6731b2e4c9a1f20d8e4b7c15",
      "app": {
        "slug": "klaviyo",
        "name": "Klaviyo",
        "category": "email-sms"
      },
      "types": [
        "removed"
      ],
      "filters": {
        "country": "US"
      },
      "url": "https://example.com/hooks/installgraph",
      "description": null,
      "status": "active",
      "disabledReason": null,
      "creditsPerDelivery": 10,
      "createdAt": "2026-11-10T12:00:00.000Z",
      "lastDeliveredAt": "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
data[].app AppSummary
data[].app.slug string Example: klaviyo.
data[].app.name string The catalogue's name: our own for apps we curate, else the App Store listing title as written. Example: Klaviyo.
data[].app.displayName string What a merchant calls the app, read from its keyword-padded App Store title ("Preorder, Back In Stock ‑ STOQ" is STOQ). A developer's listings that share a brand keep the words that tell them apart (Swym Wishlist Plus). Equal to name until derived. Example: Klaviyo.
data[].app.category Category One of 28 values (see Data model).
data[].app.kind string shopify-app: an app installed from Shopify. web: a website technology installed outside Shopify, by pasting its tag into the theme or through a tag manager (Google Tag Manager, Meta Pixel, Hotjar). A vendor with both has one entry of each (meta-pixel and meta-facebook-instagram-app). One of shopify-app, web.
data[].types string[] One of installed, removed.
data[].filters object The company filters it was created with.
data[].filters.country string
data[].filters.region string
data[].filters.industry string
data[].filters.aov string
data[].url string
data[].description string | null
data[].status string disabled after 3 deliveries in a row failed every retry; create a new one. One of active, disabled.
data[].disabledReason string | null
data[].creditsPerDelivery integer Example: 10.
data[].createdAt string (date-time)
data[].lastDeliveredAt 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
401 missing_api_key No key was sent. Send Authorization: Bearer sfs_… or X-API-Key: sfs_….
401 invalid_api_key The key is not one we issued. Check for truncation or whitespace; keys are sfs_ plus 32 letters and digits.
401 api_key_revoked The key was revoked. Make a new key at installgraph.com/account.
403 insufficient_scope The key lacks this endpoint's scope. Use a key with the scope the endpoint lists (GET /v1/usage shows yours).
403 api_key_suspended The key is suspended. Talk to us, quoting requestId.

All codes: Errors.