# Kraken

> Kraken: what the collector reads, how to connect it, its permissions, its certification by Atlantic Agentic Labs and its security posture.

Built, not certified Built and tested against recorded and synthetic responses (version 1.0.0, 10 November 2026). Not yet run against the vendor's sandbox or a client environment.

Reads a Kraken account’s spot balances, ledger entries and trade history, so reconciliation and reporting agents can check them against the books. It is read-only, and it is built to refuse a key that can withdraw or trade. It reads in place, in your deployment; only ids, hashes and counts reach LightHouse.

## At a glance

| Collector                   | Kraken, version `1.0.0`                                                                   |
| --------------------------- | ----------------------------------------------------------------------------------------- |
| Reads                       | Kraken: Kraken Spot REST API ([the vendor's documentation](https://docs.kraken.com/api/)) |
| Family                      | Finance                                                                                   |
| Kind                        | Exchange                                                                                  |
| Ways to connect             | Access token                                                                              |
| Scopes                      | - Read: `Query Funds`, `Query Ledger Entries`, `Query Closed Orders & Trades`             |
| Read only                   | Yes, except: \[object Object]; \[object Object]; \[object Object]; \[object Object]       |
| Vendor's API can move money | Yes                                                                                       |
| Personal data               | Financial                                                                                 |
| Hosts it may contact        | `api.kraken.com`, `{host}`                                                                |
| Vendor API versions         | Spot REST API (/0/private)                                                                |
| Lowest engine version       | `0.46.0`                                                                                  |

## What it reads

- **Spot balances:** one record per asset, rewritten only when it changes and removed when the asset disappears.
- **Ledger entries:** amount, fee and balance after, with the reference, type, sub-type and asset class.
- **Trade history:** pair, side, order type, price, volume, cost and fee in the quote currency.
- Ledgers and trades are read oldest first from the last cursor, paged by offset. The first read goes back `history_days` (default 90, at most 3,650).

It does not read futures, open orders, staking or funding addresses.

## How to connect

1. In Kraken, make an API key with only **Query Funds**, **Query Ledger Entries** and **Query Closed Orders & Trades**, and an IP allowlist of your deployment’s egress addresses.
2. In LightHouse, open **Setup and admin, Connectors** and choose **Kraken**.
3. Paste the API key and the private key. Your browser seals it to your deployment; LightHouse never sees it.

The credential is JSON in the variable the source names (`AAL_KRAKEN` by default): `api_key` and `api_secret`.

## Permissions

This collector is **read-only** in what it does. Kraken’s private endpoints accept only `POST`, so every request is a signed `POST`, but the collector makes exactly four calls, all of which read: `GetApiKeyInfo`, `Balance`, `Ledgers` and `TradesHistory` (the manifest lists them under `read_operations`; the read-only test fails on any other call). Nothing is placed, cancelled or withdrawn.

- **Refused by the code:** Kraken states a key’s permissions (`POST /0/private/GetApiKeyInfo`, which needs no permission). Before every read, and in the health check, a key whose `permissions` include any of these six names is refused, naming it: `withdraw-funds`, `modify-trades`, `close-trades`, `earn-funds`, `add-withdraw-address`, `update-withdraw-address`. The error is `Kraken: refused: the credential can \<permissions>; make a view-only one`.
- **Not refused by the code:** every other permission name, because the code refuses only those six. A permission that moves funds or trades under a name not on that list would pass. Make the key with only the three query permissions above.
- **IP allowlist:** the check reports whether the key has one; a key without one is told to pin it to your egress addresses (it is not refused).
- **Signing:** each request carries HMAC-SHA512 of the path and the SHA-256 of nonce and body, under the base64-decoded secret; the nonce always increases. The secret never leaves your store.
- **Hosts:** only `api.kraken.com`, over https; redirects are never followed.

## Limits

- Spot only.
- Requests are paced one second apart and retried on 429 and 5xx with back-off.
- Amounts are exact decimals; a number that arrives as a float is refused.
- Each record is keyed by Kraken’s own id, so one read twice is still one record.

## Data handling

- Records hold financial data: balances, ledger amounts and trades. Documents carry the `label` you give the source (default `confidential`).
- Content is read in place, in your deployment. LightHouse receives ids, hashes and counts, never the records, and never opens the credential.
- Errors carry a status and fixed text, never a provider’s body.
- The data is audit-ready for your own agents; nothing here certifies anyone against any regulation.

## Troubleshooting

| What you see                                                               | What it means                                          | What to do                                                            |
| -------------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------- |
| `Kraken: refused: the credential can withdraw-funds; make a view-only one` | The key holds a fund-moving permission (the one named) | Make a key with only the three query permissions                      |
| `Kraken answered HTTP 401 (the key or signature was refused)`              | `EAPI:Invalid key` or a bad signature                  | Check the key and the private key                                     |
| `Kraken answered HTTP 403 (permission denied)`                             | The key lacks a query permission                       | Add Query Funds, Query Ledger Entries or Query Closed Orders & Trades |
| `Kraken refused Balance: EService:Unavailable`                             | Kraken reported an error (its code is shown)           | Try again later                                                       |
| `Kraken answered HTTP 429`                                                 | Rate limit                                             | Nothing; the collector backs off and continues                        |

## Certification

Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See [How collectors are certified](/collectors/certification/).

| Date             | Collector | Engine   | Vendor API                 | Method                              | Expires        |
| ---------------- | --------- | -------- | -------------------------- | ----------------------------------- | -------------- |
| 10 November 2026 | `1.0.0`   | `0.46.0` | Spot REST API (/0/private) | Fixtures only: built, not certified | Not applicable |

## Security posture

From the collector’s last scan on the default branch. What each line means, and what blocks a release: [Security posture](/collectors/security/).

| Last scanned               | 10 November 2026                                                                                                                                                                                                      |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Critical findings          | 0                                                                                                                                                                                                                     |
| High findings              | 0                                                                                                                                                                                                                     |
| Medium findings            | 0                                                                                                                                                                                                                     |
| Low findings               | 0                                                                                                                                                                                                                     |
| Info findings              | 0                                                                                                                                                                                                                     |
| Release blocked            | No                                                                                                                                                                                                                    |
| Network allow-list check   | Pass                                                                                                                                                                                                                  |
| Read-only behavioural test | Pass                                                                                                                                                                                                                  |
| SBOM (CycloneDX)           | Produced                                                                                                                                                                                                              |
| Dependency licences        | Pass                                                                                                                                                                                                                  |
| Scanners                   | bandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only |

Source: https://docs.atlanticagenticlabs.com/collectors/catalogue/kraken/
