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 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:
Terminal export NUMINA_API_KEY="numi_..."Make your first request
List the company’s chart of accounts. Journal entry lines refer to these accounts by number.
cURL curl https://api.numina.app/v1/accounts \ -H "Authorization: Bearer $NUMINA_API_KEY"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 import os import requests response = requests.get( "https://api.numina.app/v1/accounts", headers={"Authorization": f"Bearer {os.environ['NUMINA_API_KEY']}"}, ) accounts = response.json()["accounts"]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.
cURL 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
I25code splits the 500 DKK into 400 DKK of expense and 100 DKK of deductible VAT when someone books it.