---
title: "Read delivery verdicts for subscribers"
method: GET
path: "/contacts/delivery-state"
---

# Read delivery verdicts for subscribers

`GET /contacts/delivery-state`

## Request

- Base URL: `https://sendinel.ai/api/v1`
- URL: `https://sendinel.ai/api/v1/contacts/delivery-state`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://sendinel.ai/oauth/authorize`, token URL `https://sendinel.ai/oauth/token`)

Read-only. Sendinel is the authority for suppression and bounce state.
`status` is one of `no_record`, `deliverable`, `hard_bounced`, or
`suppressed_other`. `no_record` means Sendinel has no deliverability
verdict (never sent, or only a non-permanent bounce carried on
`bounce_type` and `reason`). `matched: false` means no subscriber row.
Neither value is deliverable. `bounce_type: permanent` is set only for
`hard_bounced`. Reason is a category code, not a complaint body.
Pass `source_id` (the contact view's source id, including `sendinel:<id>`)
for one lookup. Omit it to page every subscriber in the project.

## Query parameters

- `source_id` string
- `cursor` string, uuid
- `limit` integer

## Response `200`

Delivery verdicts. An empty project returns an empty list. An unknown source_id returns one matched=false no_record row.

## Other responses

- `422`: Invalid cursor or source_id

---

[API](https://skmtc.dev/sendinel/apis/sendinel-api.md) · [All operations](https://skmtc.dev/sendinel/apis/sendinel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sendinel/apis/sendinel-api/revisions/20b2c6d5616d?raw)
