# Search review history

> Check existing work for several people or topics in one request, including resolved cards, without returning full drafts.

Canonical: https://revnu.com/docs/review-search
Last updated: 2026-10-19

```bash
curl -H "Authorization: Bearer $REVNU_API_TOKEN" \
  "https://revnu.com/api/v1/review/search?query=Acme&query=Example&limit=5"
```

## Query

| Param | Meaning |
|---|---|
| `query` | Repeat for each person or topic. Required: 1 to 10 queries, each 1 to 120 characters. Searches card titles and prompts across all statuses. |
| `limit` | Maximum matches per query, from 1 to 20. Default 5. |

## Response

```json
{
  "matches": [{
    "query": "Acme",
    "hasMore": false,
    "openCardCount": 0,
    "items": [{
      "id": "k97…",
      "title": "Reply to Acme",
      "status": "done",
      "sourceType": "agent",
      "updatedAt": 1792400000000,
      "resolvedAt": 1792400000000,
      "resolutionAction": "approve",
      "delivery": "unconfirmed",
      "reviewUrl": "https://revnu.com/dashboard/review…"
    }]
  }],
  "coverage": "Search coverage and delivery evidence limitations."
}
```

Search matches are bounded by relevance, combined across title and prompt,
then ordered by update time. `hasMore` means matches may be missing because the
result limit or the batch's shared read budget stopped the search. Later names
can return no items with `hasMore: true`; that is incomplete evidence. An
empty list means no matching title or prompt, not that no work or send exists.

`status` describes the card. A done card does not prove delivery.
`sent_recorded` means the card's resolution records a send. `queued` means
approved for delivery. Other resolutions return `unconfirmed`. This endpoint
does not check the provider for a receipt.

Draft bodies and internal payloads are omitted. [Get a card](https://revnu.com/docs/review-get.md)
returns the full details. Reading history does not change any card or send a
message. Responses are not cached.

## Frequently asked questions

### Does a done card prove a message was delivered?

No. The delivery field reports the card's recorded resolution, not a live provider check. Opening the full card does not check the provider either.

### Do I need to list the whole queue to find other pending cards for these names?

When `hasMore` is false, `openCardCount` counts all matching pending and revising cards. When the search is truncated, the count is null. The search still covers only titles and prompts, so it cannot establish that no other activity exists. Copy `reviewUrl` directly rather than reconstructing a link from its ID.
