---
updatedAt: 2026-09-24T17:52:13.000Z
agentTools:
  projectIndex: https://docs.delivr.ai/llms.txt
---

# Which API Should I Use?

Delivr has two families of APIs that both say "intent" on the label. Pick by what you are holding and what you want back.

## Start from what you have

| You have                                                                | You want                                             | Use                  | Endpoint                                                                                                       |
| ----------------------------------------------------------------------- | ---------------------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------- |
| A list of emails or LinkedIn URLs                                       | Intent topics per person                             | Intent lookup        | `POST /api/v1/intent/lookup` (one) or `/api/v1/intent/batch` (up to 10,000)                                    |
| A list of company domains                                               | Intent topics per company                            | Company intent       | `POST /api/v1/intent/company` or `/api/v1/intent/company/batch`                                                |
| A list of emails, hashed emails (HEMs), or LinkedIn profile URLs        | The identity and firmographic record behind each one | Identity lookup      | `GET /api/v1/lookup` (one) or `POST /api/v1/lookup/batch` (up to 1,000)                                        |
| A topic                                                                 | The people researching it                            | Topic discovery      | `POST /api/v1/intent/people` (add `/multi` for several topics)                                                 |
| A topic                                                                 | The companies researching it                         | Topic discovery      | `POST /api/v1/intent/companies` (add `/multi` for several topics)                                              |
| A topic, and you want a free look first                                 | A capped sample of real records                      | Previews             | `POST /api/v1/intent/people/preview`, `/api/v1/intent/companies/preview`                                       |
| Nothing yet; you want a reusable, filtered audience delivered somewhere | A built audience (files, destinations, refreshes)    | Intent Audiences API | `POST /api/v1/audiences` and the [Build Audiences guide](https://docs.delivr.ai/docs/delivr-audience)          |
| A pixel on your site                                                    | Your own visitors, resolved                          | Events API           | `GET /api/v3/events/{tier}`, see [Identify Site Visitors](https://docs.delivr.ai/docs/resolution-as-a-service) |

## Rule of thumb

* **Enriching records you already own** (CRM rows, a CSV, a Clay table): intent lookup/batch. Per-row, synchronous, up to 10,000 per call. Start with the [Quickstart](https://docs.delivr.ai/docs/intent-enrichment).
* **Finding net-new records from a topic** (TAM discovery, list building): the topic-to-people and topic-to-companies endpoints. Paginated with cursors, ranked strongest-first, free previews available.
* **Recurring, delivered audiences** (weekly file to S3, sync to a destination): the Intent Audiences API. That is a build-and-deliver system, not a synchronous query.
* **Your own website traffic**: the Events API, which requires the Delivr pixel installed.

## Lookup and Audiences measure different spans

Both say "intent", and for the same person on the same day they can disagree. That is expected, and it is worth knowing which one answers which question:

|               | Intent lookup / batch                                                             | Intent Audience                                                                                                            |
| ------------- | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Span measured | One calendar day, the `as_of` in the response                                     | The audience's configured range: a relative `intent_window_days`, or a fixed `intent_start_date`-`intent_end_date` window  |
| Refresh       | Rebuilt daily and replaced whole                                                  | Rebuilt on the audience's schedule                                                                                         |
| Per person    | The strongest 1,000 topics for that day, every tier unless `min_score` narrows it | Set by `row_grain`: one row per person keeps their strongest topic across the window, `person_topic` keeps a row per match |

So a person whose signal landed on the 26th appears in a 7-day audience built through the 1st, and returns `matched: false` from a lookup served on the 1st. Neither is wrong.

* Ask the **lookup** "what did this person research on the lookup dataset's `as_of` day?"
* Ask an **Audience** "who showed intent for this topic over the last N days?"

Do not use a lookup to spot-check rows in an audience: the audience row already carries the topic, score and signal date it was matched on.

Every intent endpoint accepts `"dry_run": true` for a free, exact cost preview. See [Rate Limits and Metering](https://docs.delivr.ai/docs/rate-limits-and-metering).