# Read an account's balance curve

`GET https://app.skylit.ai/api/nexus/v1/journal/growth`

API: Nexus.

The account's **cash** at the end of each day in `range`, oldest first. It's a cash curve: buying a position lowers it by what you paid, and open positions aren't marked to the market. For what the account is worth now, read the wallet's `equityCents`.

- `startingBalance` is the cash when the range began, so `netChange` and `netChangePercent` are for this range.
- `maxDrawdown` is the deepest fall from a peak in the range, in dollars; `maxDrawdownPercent` is that fall as a share of the peak it fell from.
- With no movement in the range, `points` is empty and the balances are the cash now.
- On your own account, if you've ever held a paper spread, each point is the cash less the spread collateral held then.

## Authentication

Send your Skylit API key as a bearer token: `Authorization: Bearer <key>`. No other header is accepted.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `account` | query | string | no | `main` (your own simulated wallet, the default) or `agent` (your bot's). (one of `main`, `agent`) |
| `range` | query | string | no | How far back, in New York time. Left out, `30d`. (one of `7d`, `30d`, `90d`, `ytd`, `all`; default `30d`) |

## Example request

```bash
curl "https://app.skylit.ai/api/nexus/v1/journal/growth" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

The curve.

Your bot's account, a day after it opened a $5,000 position.:

```json
{
  "data": {
    "range": "30d",
    "startingBalance": 25000,
    "currentBalance": 24100,
    "peakBalance": 25000,
    "netChange": -900,
    "netChangePercent": -3.6,
    "maxDrawdown": 5000,
    "maxDrawdownPercent": 20,
    "points": [
      {
        "date": "2026-11-12",
        "balance": 20000,
        "realizedPnl": 0,
        "peak": 25000
      },
      {
        "date": "2026-11-13",
        "balance": 24100,
        "realizedPnl": 100,
        "peak": 25000
      }
    ]
  },
  "meta": {
    "account": "agent",
    "port": null
  }
}
```

### 400

Code: `bad_request`. `account`, `range`, `by` or `month` isn't one of the allowed values, or `account=main` was sent to `agent/edge`. The message says which.

A range that isn't allowed.:

```json
{
  "error": {
    "code": "bad_request",
    "message": "range must be one of 7d, 30d, 90d, ytd, all."
  }
}
```

### 401

No key, or a key that isn't valid. Codes: `missing_api_key`, `invalid_api_key`.

No key sent.:

```json
{
  "error": {
    "code": "missing_api_key",
    "message": "Send your Skylit API key in the Authorization header: Authorization: Bearer YOUR_SKYLIT_API_KEY."
  }
}
```

### 403

The key works but this can't be read. Codes: `feature_disabled` (you sent `port`: ports aren't available yet, so leave it out), `account_suspended`, `nexus_access_denied`.

You sent `port`.:

```json
{
  "error": {
    "code": "feature_disabled",
    "message": "Ports aren't open to members yet."
  }
}
```

### 404

Code: `user_not_found`. This Skylit account hasn't used Nexus yet, so it has no journal.

No Nexus account yet.:

```json
{
  "error": {
    "code": "user_not_found",
    "message": "This Skylit account hasn't used Nexus yet, so it has no journal."
  }
}
```

### 429

Over a rate limit. Wait `Retry-After` seconds, then retry. Codes: `rate_limited`, and `stream_limit_reached` (too many live streams open: 3 per key, 6 per account).

Headers: `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`.

Too many writes from this key.:

```json
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests (limit 30). Slow down and retry in 12 seconds."
  }
}
```

### 500

Something went wrong on our side. If you sent a `clientOrderId`, retry with the same one. Code: `internal_error`.

Retry with the same clientOrderId.:

```json
{
  "error": {
    "code": "internal_error",
    "message": "Something went wrong on our side. If you sent a clientOrderId, retry with the same one (it can't fill twice). Otherwise check your account before retrying."
  }
}
```
