> ## Documentation Index
> Fetch the complete documentation index at: https://docs.novig.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Move from v2 to v3

> For liquidity providers on v2: what changes in v3, and whether to move at all.

This page is for liquidity providers (LPs) who trade on the v2 API today, at `https://api.novig.com/nbx/v2`.

> [!NOTE]
>
> **You don't have to move.** v2 keeps working, and moving is your choice. Stay on v2 if it serves you well.

> [!TIP]
>
> **You can run v2 and v3 at the same time.** For example, quote the order book on v3 and answer RFQs on v2. You don't have to move everything at once.

Before you start, check the two limits below. Either one can make v3 a poor fit for you today.

## Check what v3 can't do yet

### v3 has lower rate limits

v2 limits each route by requests per second. v3 limits each subaccount with a bucket of tokens. The bucket holds a burst, then refills at a fixed rate.

| Throttle | v2, per second | v3 burst | v3 refill |
| - | - | - | - |
| Place | 2,048 | 256 | 8 per second |
| Cancel | 2,048 | 256 | 16 per second |
| Read | 256 | 64 | 16 per second |

A v3 batch spends one token per order, not one per request.

Each subaccount has its own buckets, and you can open up to 10. Extra keys on one subaccount don't add capacity.

> [!WARNING]
>
> If you quote many markets or requote often, v3 may throttle you well below your v2 rate. Measure your peak place and cancel rate before you move.

> [!NOTE]
>
> **Higher limits are coming soon.** We're adding dynamic rate-limit tiers, with higher limits than the ones above. Until then, you can stay on v2.

[Throttling](https://docs.novig.com/api/throttling.md) gives the full schedule. `GET /v3/limits` returns the numbers that apply to you.

### v3 has no RFQ routes

v3 doesn't send or answer requests for quote (RFQs), our parlay pricing auction. If you price RFQs, keep that integration on v2. It keeps working as it does today.

[RFQ](https://docs.novig.com/api-reference/rfq/overview.md) describes the v2 flow.

## What changes

| | v2 | v3 |
| - | - | - |
| Base path | `/nbx/v2` | `/v3` |
| Credential | OAuth client ID and secret | Your own Ed25519 or P-256 keypair |
| Each request | A bearer token | A signature over the request |
| Wallets | One per account | Up to 10 subaccounts |
| Rate limits | Per route, per second | Per subaccount, token buckets |
| RFQ | Yes | No |
| Paper exchange | No | Yes |

* **You sign each request.** We store only your public key, so your private key never leaves your machine. [Sign a request](https://docs.novig.com/api/signing.md) explains the rules.
* **A trading key reaches one subaccount.** Each subaccount has its own balance, positions, and orders. [Account model](https://docs.novig.com/api/concepts/account-model.md) shows how they fit.
* **You can test on Paper first.** Paper is our play-money exchange, with the same API as Production. [Environments](https://docs.novig.com/api/environments.md) has the hosts.

## Move step by step

You can move one strategy at a time. Your v2 credentials keep working while you test v3.

**1. Try v3 on Paper**

Create a management key on [Profile](https://paper.novig.com/Profile/ProfileScreen) on paper.novig.com, then run the [Quickstart](https://docs.novig.com/api/quickstart.md).

**2. Register a management key**

Sign `POST /v3/keys` with your v2 client-credentials token. The steps are below.

**3. Open a subaccount**

Call `POST /v3/account/subaccounts` with your management key. The reply creates the subaccount's trading key.

**4. Fund the subaccount**

Move money into it with a transfer. [Funding](https://docs.novig.com/api/subaccounts/funding.md) shows how.

**5. Move your order flow**

Point one strategy at v3, and watch your throttle use with `GET /v3/limits`.

### Register a management key with your v2 token

As a v2 LP, you can create your v3 management key with the client-credentials token you already use. You don't need the web app for this.

Get a token the way you do for v2, then generate a keypair:

```bash theme={"dark"}
openssl genpkey -algorithm ed25519 -out novig-mgmt.pem
openssl pkey -in novig-mgmt.pem -pubout -out novig-mgmt.pub.pem
```

Send the public half, with your token as the bearer:

```bash theme={"dark"}
curl -i -X POST "$NOVIG_HOST/v3/keys" \
  -H "Authorization: Bearer $TOKEN" \
  -H 'content-type: application/json' \
  -d "$(jq -n --arg name "mgmt-1" --arg publicKey "$(cat novig-mgmt.pub.pem)" \
        '{name: $name, publicKey: $publicKey, algorithm: "Ed25519"}')"
```

A `201` reply carries your `keyId` and `"scope": "management"`. Save the `keyId` with `novig-mgmt.pem`. Every signed call needs both.

A `409 MANAGEMENT_KEY_EXISTS` means you already hold a live management key. Use that key, or revoke it first.

## Map your v2 routes

| v2 route | v3 route |
| - | - |
| `POST emm/orders/place` | `POST /v3/orders` |
| `POST emm/orders/batch` | `POST /v3/orders/batch` |
| `DELETE emm/orders/*` | `DELETE /v3/orders/{id}` or `DELETE /v3/orders/batch` |
| `emm/kill` | `DELETE /v3/orders` |
| `emm/orders/all` | `GET /v3/orders` |
| `emm/fills/all` | `GET /v3/portfolio/fills` |
| `emm/events` | `GET /v3/catalog/events` |

The [API Reference](https://docs.novig.com/api-reference) lists every v3 route.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.