Skip to main content
GET
/
v3
/
workflows
/
{workflow_id}
/
document-packets
/
curl -X GET 'https://api.anyformat.ai/v3/workflows/0686bb97-8c30-70f0-8000-97669e000eb8/document-packets/?limit=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'
import requests

workflow_id = "0686bb97-8c30-70f0-8000-97669e000eb8"
url = f"https://api.anyformat.ai/v3/workflows/{workflow_id}/document-packets/"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

page = requests.get(url, headers=headers, params={"limit": 20}).json()
for packet in page["items"]:
    print(packet["id"], packet["status"])
{
  "items": [
    {
      "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
      "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
      "name": "invoice-1043.pdf",
      "status": "processed",
      "created_at": "2026-07-01T12:00:00.000Z",
      "updated_at": "2026-07-01T12:05:00.000Z"
    },
    {
      "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e4",
      "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
      "name": "invoice-1044.pdf",
      "status": "not_started",
      "created_at": "2026-07-01T11:00:00.000Z",
      "updated_at": "2026-07-01T11:00:00.000Z"
    }
  ],
  "next_cursor": null
}
Rate limit tier: general (600 req/min) — see Rate limits. Returns one keyset page of a workflow’s document packets, newest first. Follow next_cursor until it is null (see Pagination). Items are slim summaries — id, name, status, timestamps. Fetch GET /v3/document-packets/{document_packet_id}/ for the per-file breakdown and latest_run_id. Packet status reflects the packet’s most recent extraction: not_started (never run), queued, in_progress, processed, error, or cancelled.
curl -X GET 'https://api.anyformat.ai/v3/workflows/0686bb97-8c30-70f0-8000-97669e000eb8/document-packets/?limit=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'
import requests

workflow_id = "0686bb97-8c30-70f0-8000-97669e000eb8"
url = f"https://api.anyformat.ai/v3/workflows/{workflow_id}/document-packets/"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

page = requests.get(url, headers=headers, params={"limit": 20}).json()
for packet in page["items"]:
    print(packet["id"], packet["status"])
{
  "items": [
    {
      "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
      "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
      "name": "invoice-1043.pdf",
      "status": "processed",
      "created_at": "2026-07-01T12:00:00.000Z",
      "updated_at": "2026-07-01T12:05:00.000Z"
    },
    {
      "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e4",
      "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
      "name": "invoice-1044.pdf",
      "status": "not_started",
      "created_at": "2026-07-01T11:00:00.000Z",
      "updated_at": "2026-07-01T11:00:00.000Z"
    }
  ],
  "next_cursor": null
}

Authorizations

Authorization
string
header
required

API key issued from app.anyformat.ai/api-key. Send as Authorization: Bearer <key>.

Path Parameters

workflow_id
string
required

Query Parameters

limit
integer
default:20

Page size, capped at 100.

Required range: 1 <= x <= 100
cursor
string | null

Opaque token from a previous response's next_cursor.

Response

Successful Response

One keyset page of document packets.

Fixed (-created_at, -id) order. No totals or page numbers — iterate by following next_cursor until it is null.

items
DocumentPacketSummaryV3 · object[]
required

Packets on this page, newest first.

next_cursor
string | null

Opaque token to fetch the next page; pass it back as ?cursor=. null on the last page.