---
title: "List an app's webhook deliveries"
method: GET
path: "/api/orgs/{slug}/apps/{app}/deliveries"
tags: ["Apps"]
---

# List an app's webhook deliveries

`GET /api/orgs/{slug}/apps/{app}/deliveries`

## Request

- Base URL: `https://git.cafe`
- URL: `https://git.cafe/api/orgs/{slug}/apps/{app}/deliveries`
- Auth: one of:
  - API key in cookie `gc-session`
  - HTTP bearer
  - HTTP basic
  - HTTP token

Lists recent webhook deliveries of an app this organization publishes, across its installations and newest first, with the installation and organization each went to. The organization's handle is null once the app is uninstalled. Only deliveries to the installations' own webhooks that GitCafe has attempted, and requested redeliveries, are listed, with the body last sent; signing headers and receiver bodies are never returned. History is kept for 30 days, also after an uninstall. Requires authenticated authority and enforces current resource policy.

## Path parameters

- `slug` string, required
- `app` string, required

## Query parameters

- `state` 'queued' | 'running' | 'succeeded' | 'failed' | 'dead_lettered' | 'cancelled'
- `installationId` string
- `after` string
- `limit` integer

## Response `200`

Response for status 200

- object
  - `items` object[], required
    - `id` string, required
    - `eventId` string, required
    - `eventCreatedAt` string, date-time, required
    - `eventType` 'issue.created' | 'issue.closed' | 'issue.updated' | 'issue.reopened' | 'issue.locked' | 'issue.unlocked' | 'issue.pinned' | 'issue.unpinned' | 'issue.assignees_updated' | 'issue.labels_updated' | 'issue.milestone_updated' | 'issue.linked' | 'issue.unlinked' | 'issue.comment_created' | 'issue.comment_updated' | 'issue.comment_deleted' | 'issue.reaction_added' | 'issue.reaction_removed' | 'pull.created' | 'pull.updated' | 'pull.closed' | 'pull.reopened' | 'pull.drafted' | 'pull.ready' | 'pull.locked' | 'pull.unlocked' | 'pull.reviewers_updated' | 'pull.assignees_updated' | 'pull.labels_updated' | 'pull.milestone_updated' | 'pull.linked' | 'pull.unlinked' | 'pull.comment_created' | 'pull.comment_updated' | 'pull.comment_deleted' | 'pull.comment_hidden' | 'pull.comment_unhidden' | 'pull.comment_resolved' | 'pull.comment_unresolved' | 'pull.reaction_added' | 'pull.reaction_removed' | 'pull.review_submitted' | 'pull.review_dismissed' | 'pull.merged' | 'pull.synchronized' | 'label.created' | 'label.updated' | 'label.deleted' | 'milestone.created' | 'milestone.updated' | 'milestone.deleted' | 'repo.default_branch_changed' | 'ci.run_updated' | 'git.push' | 'git.ref_created' | 'git.ref_deleted' | 'issue.bot_assigned' | 'issue.bot_unassigned' | 'issue.bot_mentioned' | 'pull.bot_assigned' | 'pull.bot_unassigned' | 'pull.bot_review_requested' | 'pull.bot_mentioned' | 'check.rerequested' | 'installation.created' | 'installation.paused' | 'installation.resumed' | 'installation.uninstalled' | 'installation.permissions_accepted' | 'installation.repositories_updated' | 'actions.workflow_job' | 'webhook.ping', required: Beta: webhook event coverage and payload schemas may evolve. See /docs/integrations/webhooks for supported events and delivery limits.
    - `deliveryOrdinal` integer, required
    - `state` 'queued' | 'running' | 'succeeded' | 'failed' | 'dead_lettered' | 'cancelled', required
    - `attempts` integer, required
    - `nextAttemptAt` string, date-time, required
    - `lastHttpStatus` integer, nullable, required
    - `deliveredAt` string, date-time, nullable, required
    - `lastErrorCategory` string, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `installation` object, required
      - `id` string, required
      - `org` object, required
        - `id` string, required
        - `handle` string, nullable, required
  - `next` string, nullable, required

## Other responses

- `400`: The request is invalid.
- `401`: Authentication is required, or the supplied credential is invalid.
- `403`: The credential does not permit this operation. A `code`, when present, names the refusal.
- `404`: The resource does not exist or is not visible to the caller.
- `409`: The request conflicts with the current state. A `code`, when present, names the refusal; `retryable` says whether the same request can succeed later, and `operationId` names the operation in the way.
- `429`: A rate limit is exhausted. Wait Retry-After seconds; the value is a hint, so back off on a repeat 429.
- `503`: A required service is temporarily unavailable; retry later.

---

[API](https://skmtc.dev/gitcafe/apis/git-cafe-api.md) - [All operations](https://skmtc.dev/gitcafe/apis/git-cafe-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gitcafe/apis/git-cafe-api/revisions/9fa233d2986d?raw)
