API · v1 stable
Runda API documentation
Production-ready REST endpoints behind a single hostname. Bearer-token authenticated, JSON in & out, idempotent writes via Idempotency-Key.
Base URL
https://api.runda.app
Auth
Bearer JWT
Rate limit
120 / min
Region
EU-North
Quick start
curl https://api.runda.app/v1/transactions \ -H "Authorization: Bearer $RUNDA_TOKEN" \ -H "Content-Type: application/json"
Authentication
POST
/v1/auth/sessionExchange Open Banking token for a session.
Request
{ "consentId": "cnst_a8…" }Response
{ "token": "eyJh…", "expiresIn": 3600 }POST
/v1/auth/refreshRefresh a session token.
Response
{ "token": "eyJh…" }Transactions
GET
/v1/transactionsList authenticated user transactions.
Response
[{ "id": "tx_001", "amount": 4.60, "roundUp": 0.40, "merchant": "ICA Maxi" }]GET
/v1/transactions/:idFetch a single transaction.
Response
{ "id": "tx_001", "status": "completed" }Vaults
GET
/v1/vaultsList user's vaults.
Response
[{ "id": "v_1", "name": "Lisbon", "target": 800, "saved": 312 }]POST
/v1/vaultsCreate a new vault.
Request
{ "name": "MacBook", "target": 1800 }Response
{ "id": "v_42", "saved": 0 }PATCH
/v1/vaults/:idUpdate vault target or name.
Request
{ "target": 2000 }Response
{ "id": "v_42" }DELETE
/v1/vaults/:idRemove a vault.
Response
{ "ok": true }Webhooks
POST
/v1/webhooks/bankReceive transaction events from bank partners.
Request
{ "userId": "u_1", "tx": { "amount": 4.60 } }Response
{ "received": true }POST
/v1/webhooks/settleSettle a payout batch with a partner.
Response
{ "batchId": "bt_88", "status": "queued" }