# The API

> There is a REST API — this is its whole surface, one link per component


Yes, there's an API. DeepSieve is a **REST API** first; the MCP server, SDK, and
CLI are all conveniences layered on top of it. Everything you can do in the app
— define a schema, start research, read a cited dataset, get notified when it
changes — you can do over plain HTTP.

If you'd rather not read this page, point your coding agent at
[https://deepsieve.ai/setup.md](https://deepsieve.ai/setup.md) and it wires the whole thing up. If
you're choosing *how* to connect, start at
[Choosing an integration](/developers/integrations). This page is the map of
*what there is to connect to*.

## The shape of it

You work with a handful of components, each with its own page below. The usual
arc:

1. **Authenticate** — mint a key or log in through the browser.
2. Define a **Blueprint** (your schema) once.
3. Start **research runs** from natural-language queries.
4. Read the **dataset** back — cited, and re-verified while monitoring is on.
5. Have DeepSieve **push** changes to you (webhooks) instead of polling, and
   **ask the research agent** about any value.

```bash
# The one call that proves you're connected:
curl -s https://deepsieve.ai/v1/me -H "Authorization: Bearer $DEEPSIEVE_API_KEY"
```

## API components

Each of these is a first-class part of the API. Follow the link for the
endpoints, request/response shapes, and the honest caveats.

- **[Blueprints & your schema](/developers/blueprints-and-data)** — the schema
  that defines your entities, columns, and how the data reads back. You may
  *create* a new Blueprint over the API; the active one is edited only by a
  human.
- **[Research runs](/developers/runs)** — start a run from a query, poll it to
  completion, and understand what a run costs. Test free with `dry_run` first.
- **[Dataset sync](/developers/dataset-sync)** — read the cited dataset,
  page through it, and read a citation's `verdict` honestly before repeating a
  value as fact.
- **[Webhooks](/developers/webhooks)** — get pushed an event when a run
  finishes or a cell changes, instead of polling. Signed and replayable.
- **[Global Reports](/developers/reports)** — the saved, shareable views over
  your dataset.
- **[Chat with the research agent](/developers/chat)** — ask about a value, or
  get a specific cell re-checked, and read the answer back programmatically.

## Reference

- **[Authentication & API keys](/developers/authentication)** — browser login
  vs. `ds_live_...` keys, scopes, and the Agent preset.
- **[Errors](/developers/errors)** — every failure is
  `{error: {code, message, retriable, request_id}}`; `retriable=false` means do
  not retry.
- **[Rate limits & budgets](/developers/rate-limits)** — the limits, and how
  prepaid credits gate real runs.
- **[Versioning & stability](/developers/versioning)** — what `/v1` promises
  now (announced breaking changes) and at GA (additive-only).

## Machine-readable

Everything above is also available in forms an agent can consume directly:

- **[/openapi.json](/openapi.json)** — the full machine-readable contract; the
  Python [SDK](/developers/sdks) is generated from it.
- **[/llms.txt](/llms.txt)** · **[/llms-full.txt](/llms-full.txt)** — the docs,
  indexed and concatenated for an agent.
- Any page here is markdown if you append **`.md`** to its URL.
