> ## Documentation Index
> Fetch the complete documentation index at: https://docs.origami.chat/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Build, enrich, and read lead data programmatically with the Origami API.

Origami is an AI-powered lead generation and data enrichment platform. The
**v2 API** is the single canonical way to drive it from your own code. There are
two ways to use it:

* **Let the agent do the work.** Hand Origami a brief in plain English and it
  researches a market, finds leads, and builds a table for you.
* **Bring your own data.** Push rows into a table, let the table's columns enrich
  them, and read the results back — emails, employee counts, technographics, and
  whatever else those columns produce.

The API is resource-oriented and self-describing. If you've used Stripe, it will
feel familiar. Start with [objects and relationships](/agents/objects) to learn
the handful of objects everything is built from.

<Tip>
  Building with an AI coding assistant? [Download the OpenAPI spec](https://raw.githubusercontent.com/Origami-Agents/mintlify-docs/main/openapi-v2.yaml)
  for client generators, Postman, or your editor — or install the
  [Origami skill](/agents/skill).
</Tip>

## Base URL

All v2 requests go to:

```text theme={null}
https://origami.chat/api/v2
```

Authenticate with a Bearer API key. See [authentication](/authentication).

## Core conventions

A few conventions hold across every endpoint:

* **Self-describing objects.** Every object carries an `object` field naming its
  type (`"agent"`, `"table"`, `"campaign"`, …).
* **One list envelope.** Every list endpoint returns
  `{ "object": "list", "items": [...], "nextCursor": string | null, "url": string }`.
  Pass `nextCursor` back as `cursor` to page; `null` means the last page.
* **Async agent work.** `POST /agents` and `POST /agents/{id}/runs` return a
  `running` run immediately. Poll until `status` is terminal, honoring
  `Retry-After`.
* **Idempotency.** Any `POST` may send an `Idempotency-Key` header for safe
  retries.
* **Errors.** Every error is `{ error, code, details?, handoff? }` with an
  `UPPERCASE_SNAKE_CASE` code.

## Quick links

<CardGroup cols={2}>
  <Card title="Objects and relationships" icon="diagram-project" href="/agents/objects">
    The objects the API is built from and how they connect.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Enrich your first table end to end with curl.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    API keys, rate limits, and project scoping.
  </Card>

  <Card title="Reading data" icon="table" href="/reading-data">
    Filter, sort, paginate, and export rows.
  </Card>

  <Card title="Agent API" icon="robot" href="/agents">
    Drive Origami's AI worker from a plain-English brief.
  </Card>

  <Card title="Migrating from v1" icon="arrow-right" href="/api-v1-to-v2-migration">
    Map every deprecated v1 route to its v2 equivalent.
  </Card>
</CardGroup>

<Note>
  The **Data API (v1)** is deprecated but still fully functional, with no removal
  date in this release. New integrations should target v2. See the
  [migration guide](/api-v1-to-v2-migration).
</Note>
