# Quickstart

> Create an API key, read a company's chart of accounts and post your first draft journal entry in about five minutes.

This guide uses an API key, the fastest way to work with your own company's books. If you are building an app that other Numina companies will connect to, use [OAuth](https://developers.numina.app/authentication.md#oauth) instead; the requests are the same.

### Create an API key

In Numina, open Settings → API & apps and create an API key. Name it and give it read and draft permissions: it reads the books and creates drafts, and books nothing. The key is shown once, so store it in your secret manager or an environment variable:

```bash
export NUMINA_API_KEY="numi_..."
```

> [!WARNING]
> An API key acts on behalf of the whole company, without a user. Keep it on your server and never ship it in a browser or mobile app.

### Make your first request

List the company's chart of accounts. Journal entry lines refer to these accounts by number.

```bash title="cURL"
curl https://api.numina.app/v1/accounts \
  -H "Authorization: Bearer $NUMINA_API_KEY"
```

```javascript title="JavaScript"
const response = await fetch("https://api.numina.app/v1/accounts", {
  headers: { Authorization: `Bearer ${process.env.NUMINA_API_KEY}` },
});
const { accounts } = await response.json();
```

```python title="Python"

response = requests.get(
    "https://api.numina.app/v1/accounts",
    headers={"Authorization": f"Bearer {os.environ['NUMINA_API_KEY']}"},
)
accounts = response.json()["accounts"]
```

```json title="Response"
{
  "accounts": [
    {
      "id": "0b7c1f2e-8f4a-4c2b-9d3e-6a5f4e3d2c1b",
      "account_number": 2450,
      "name": "Kontorartikler",
      "description": "",
      "account_type": "profit_loss",
      "default_vat_code": "I25"
    },
    {
      "id": "3f9e8d7c-6b5a-4f3e-8d2c-1b0a9f8e7d6c",
      "account_number": 6480,
      "name": "Bankkonto",
      "description": "",
      "account_type": "status",
      "default_vat_code": null
    }
  ]
}
```

### Post a draft journal entry

Book 500 DKK of office supplies paid from the bank. The lines are signed: the expense is a debit (positive), the bank a credit (negative), and together they sum to zero.

```bash title="cURL" {6-7}
curl -X POST https://api.numina.app/v1/journal-entries \
  -H "Authorization: Bearer $NUMINA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ "date": "2026-10-29", "text": "Office supplies", "lines": [
    { "account_number": 2450, "amount": 500, "vat_code": "I25" },
    { "account_number": 6480, "amount": -500 }
  ] }'
```

The entry arrives as a draft in Numina's journal. The `I25` code splits the 500 DKK into 400 DKK of expense and 100 DKK of deductible VAT when someone books it.

## Next steps

- [undefined](undefined): <Card title="The accounting model" href="/accounting-model"> Signs, VAT, drafts and booking: what Numina expects before you write.
- [API reference](https://developers.numina.app/api.md): Every endpoint, parameter and response.
