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

# Quickstart

> Create a key and read your books in two minutes.

## 1. Create an API key

In the Cherry app, go to Settings → API keys and create a key. It's yours alone. The token is shown once, so store it somewhere safe. (Owners and admins can always create keys; other roles need API access enabled by an admin.)

Keys look like `ck_live_…` and are scoped to the business they were created in. A `read` key can only read; a `write` key can also push and categorize.

## 2. Make a request

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.trycherry.ai/v1/transactions \
    -H "Authorization: Bearer ck_live_your_key_here"
  ```

  ```javascript JavaScript theme={null}
  const res = await fetch("https://api.trycherry.ai/v1/transactions", {
    headers: { Authorization: "Bearer ck_live_your_key_here" },
  });
  const { data, meta } = await res.json();
  ```

  ```python Python theme={null}
  import requests

  res = requests.get(
      "https://api.trycherry.ai/v1/transactions",
      headers={"Authorization": "Bearer ck_live_your_key_here"},
  )
  data = res.json()
  ```
</CodeGroup>

```json theme={null}
{
  "data": [
    {
      "id": "manual:chase:chk-1:9f2a…",
      "date": "2026-08-15",
      "amount": 49.99,
      "description": "Figma subscription",
      "merchant": "Figma",
      "category": "6110",
      "categoryName": "Software & Subscriptions"
    }
  ],
  "meta": { "pagination": { "limit": 50, "offset": 0, "nextOffset": null } }
}
```

Amounts follow the banking sign convention: **positive is money out, negative is money in**.

## 3. Read your statements

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.trycherry.ai/v1/reports/statements/profit_and_loss?from=2026-01-01&to=2026-06-30" \
    -H "Authorization: Bearer ck_live_your_key_here"
  ```

  ```javascript JavaScript theme={null}
  const url = new URL("https://api.trycherry.ai/v1/reports/statements/profit_and_loss");
  url.searchParams.set("from", "2026-01-01");
  url.searchParams.set("to", "2026-06-30");

  const res = await fetch(url, {
    headers: { Authorization: "Bearer ck_live_your_key_here" },
  });
  const statement = await res.json();
  ```

  ```python Python theme={null}
  import requests

  res = requests.get(
      "https://api.trycherry.ai/v1/reports/statements/profit_and_loss",
      params={"from": "2026-01-01", "to": "2026-06-30"},
      headers={"Authorization": "Bearer ck_live_your_key_here"},
  )
  statement = res.json()
  ```
</CodeGroup>

## Where to go next

* [End-to-end walkthrough](/guides/end-to-end). Push a transaction, watch it get categorized, and see it on your P\&L.
* [Push your own bank accounts and transactions](/guides/manual-banks). No Plaid required.
* [Connect an agent over MCP](/guides/mcp).
* The full **API Reference** tab above. Every endpoint, generated from the live OpenAPI spec.
