---
title: "Get delivery health and recent activity"
method: GET
path: "/api/v1/manage/forms/{form}/deliveries"
tags: ["Deliveries"]
---

# Get delivery health and recent activity

`GET /api/v1/manage/forms/{form}/deliveries`

## Request

- Base URL: `https://fillo.so`
- URL: `https://fillo.so/api/v1/manage/forms/{form}/deliveries`
- Auth: HTTP bearer

Per-destination delivery health plus the bounded recent-delivery list — exactly what the form's Activity page shows. Counts cover the telemetry retention window, not all time. Destinations are NAMED rather than spelled out: a webhook's target URL is the credential that authorizes posting to it, so a connector-owned hook is labelled by its connector (“Zapier”, “n8n”) and any other webhook by its host plus a short fingerprint of its path. The dashboard's Activity page is where a signed-in member reads the full URL. Scope: responses:manage.

## Path parameters

- `form` string, required

## Response `200`

Destination health and recent deliveries.

- DeliveryHealth: Epoch-millisecond timestamps throughout, matching the dashboard's Activity data.
  - `windowDays` integer, required: The telemetry retention window the counts cover. They are not all-time totals.
  - `destinations` object[], required
    - `key` string, required: `webhook:<id>` or `integration:<id>` — the value the retry endpoint accepts as destinationKey.
    - `kind` 'webhook' | 'integration', required
    - `label` string, required: How to name this destination: the provider for an integration, and for a webhook the connector that created it (“Zapier”, “n8n”) or its host plus a short fingerprint of the path. The full URL is never returned here.
    - `detail` string, nullable, required
    - `delivered` integer, required
    - `pending` integer, required
    - `failed` integer, required
    - `nextRetryAt` integer, nullable, required
    - `lastDeliveredAt` integer, nullable, required
    - `failingSince` integer, nullable, required
    - `lastError` string, nullable, required
  - `deliveries` object[], required: The bounded recent-delivery list, newest first — the same rows the form's Activity page shows.
    - `id` string, required
    - `destinationKey` string, required
    - `kind` 'webhook' | 'integration', required
    - `destinationLabel` string, required: The same name as the matching destination's label — never a full webhook URL.
    - `destinationDetail` string, nullable, required
    - `event` 'response.created' | 'response.updated' | 'draft.abandoned', required
    - `state` 'pending' | 'delivered' | 'failed', required
    - `attempts` integer, required
    - `httpStatus` integer, nullable, required
    - `lastError` string, nullable, required
    - `responseId` string, nullable, required
    - `nextAttemptAt` integer, nullable, required
    - `queuedAt` integer, required
    - `updatedAt` integer, required
  - `hasMore` boolean, required

## Other responses

- `400`: Invalid request (e.g. a body on a GET/DELETE, or a missing required query parameter).
- `401`: Missing, malformed, unknown, revoked, or expired key.
- `403`: The key is valid but lacks the required scope.
- `404`: No such resource in this project (returned instead of 403 for ids in other projects).
- `429`: Per-key (120/min), per-workspace (240/min), or per-IP (300/min) rate limit exceeded. Retry after the Retry-After header.

---

[API](https://skmtc.dev/fillo/apis/fillo-management-api.md) · [All operations](https://skmtc.dev/fillo/apis/fillo-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fillo/apis/fillo-management-api/revisions/867f943f04f5?raw)
