> For the complete documentation index, see [llms.txt](https://docs.reya.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.reya.xyz/developers/changelog/changelog.md).

# Changelog

{% hint style="info" %}
This page is the record of changes to the Reya order-book **integration surface** — the REST API, the WebSocket order-entry and info APIs, and the on-chain settlement contracts (EIP-712 domains + addresses). If you integrate against Reya, watch this page.
{% endhint %}

Entries record changes, effective dates, and migration steps. See [Our commitment](#our-commitment) for notice windows.

Entries from before the mainnet launch (devnet1, July to September 2026) are in the [changelog archive](/developers/changelog/changelog-archive.md).

## Stay notified

{% hint style="info" %}
Breaking changes are mirrored to the Telegram announcements channel [`@reya_api_updates`](https://t.me/reya_api_updates). This changelog remains the system of record.
{% endhint %}

## How we manage changes

### Surfaces

| Surface                 | Where                                                                              |
| ----------------------- | ---------------------------------------------------------------------------------- |
| REST API                | [REST API Reference](/developers/api-reference/rest-api-reference.md)              |
| WebSocket — order entry | [WS Order Entry API Reference](/developers/api-reference/ws-exec-api-reference.md) |
| WebSocket — info        | [WS Info API Reference](/developers/api-reference/websocket-api-reference.md)      |
| On-chain settlement     | [Contract Addresses](/developers/reference/contract-addresses.md)                  |

### What counts as breaking

A change is **breaking** if you must change code or config to keep working. For example: a removed or renamed field/endpoint; a changed type, default, or semantic; a new required field; a changed EIP-712 domain or contract address; changed auth/nonce rules; or tightened validation or rate limits.

Additive, backward-compatible changes (new optional fields, new endpoints, fixes) are **not** breaking and ship continuously — logged here, but without advance notice.

### Our commitment

* **Advance notice.** Breaking changes get **at least 15 calendar days** advance notice on mainnet and **at least 5 business days** on devnet1, with the effective date stated in each entry.
* **Cutovers.** Breaking changes ship on a **fixed, pre-announced date** with the notice window plus a migration note. There is no old/new overlap — plan to switch over on the effective date.
* **Emergency / security.** Critical fixes may ship faster, with notice at or before rollout and a written rationale — the policy never blocks a security fix.
* **devnet1 leads.** Changes reach devnet1 before mainnet — validate against devnet1 before each mainnet effective date.

## Legend

Each entry is tagged by **surface** and **type**:

* Surface — `[REST]` · `[WS-OrderEntry]` · `[WS-Info]` · `[On-chain]`
* Type — **Added** · **Changed** · **Deprecated** · **Removed** · **Fixed**
* **🔴 BREAKING** — you must change your integration.

## Log

### 2026-10-16 — Market categories (API [3.7.2](https://github.com/Reya-Labs/reya-api-specs/tree/47ecab47073ec5068a2c22ab42eb758160cd7c68))

`[REST]` **Added.** `GET /v2/perpMarketDefinitions` now has a `categories` field on every perp market, to group markets for discovery:

| Category      | Markets                              |
| ------------- | ------------------------------------ |
| `CRYPTO`      | all crypto perps, e.g. BTC, ETH, SOL |
| `EQUITIES`    | single stocks, e.g. AAPL, MSFT, NVDA |
| `INDICES`     | SPY, QQQ                             |
| `COMMODITIES` | gold, silver, oil                    |

A market has one or more categories. They are display metadata only and do not affect trading.

**What you need to do:** nothing. If you use the field, ignore values you don't recognize: new categories may be added without an API release.

### 2026-10-16 — Perp markets listed before they open (API [3.7.0](https://github.com/Reya-Labs/reya-api-specs/tree/8c2c674df6de240a6d83aaba44375bd196263e09))

`[REST]` `[WS-Info]` **Added.** Perp markets that are staged but not yet trading are now listed with `status: PREOPEN`, so you can load and test them before launch:

* `GET /v2/perpMarketDefinitions` lists `PREOPEN` markets with their full parameters (tick, step, minimum order, leverage, margins, OI cap), plus a `status` field on every market: `PREOPEN` or `TRADING`.
* The per-market summary (REST and WebSocket) returns `PREOPEN` markets with `status`, the mark and index prices, and an indicative funding rate. Open interest and volume are 0, and there is no mid.
* `GET /v2/perpMarkets/summary` and the all-markets stream include `PREOPEN` markets, with `status`.
* Depth for a `PREOPEN` market is an empty book.
* WebSocket subscriptions to a `PREOPEN` market continue through the switch to `TRADING`, without a resubscribe.

Orders on a `PREOPEN` market are rejected with `SERVICE_DISABLED_ERROR` until it switches to `TRADING`.

**What you need to do:** only quote or trade markets with `status == TRADING`; don't treat "listed in `perpMarketDefinitions`" as "open". Python SDK users can upgrade to [3.7.0.0](https://github.com/Reya-Labs/reya-python-sdk/releases/tag/v3.7.0.0) for the `MarketStatus` enum.

Announced on 14 October in [`@reya_api_updates`](https://t.me/reya_api_updates) and directly to market makers.

### 2026-10-13 — Cursor pagination on history endpoints (API [3.6.5](https://github.com/Reya-Labs/reya-api-specs/tree/7df81dbdfc11fdb6385d836ad8c5849cffb7966d))

`[REST]` **Added.** These history endpoints now take optional `limit` and `cursor` query parameters and return `meta.nextCursor`:

* `GET /v2/market/{symbol}/perpExecutions`, `/spotExecutions` and `/executionBusts`
* `GET /v2/wallet/{address}/perpExecutions`, `/spotExecutions`, `/executionBusts` and `/orderHistory`

Results are newest first (by `sequenceNumber`; order history by `lastUpdateAt`). `limit` defaults to 100, which is also the maximum. For the next page, pass `meta.nextCursor` unchanged as `cursor`, with the same filters, and stop when it is absent. Cursors don't repeat or skip rows that share a timestamp, so you no longer need to page by `endTime` and de-duplicate.

**What you need to do:** nothing for the first page; requests without `cursor` still return the newest 100. If you page through history, switch to `cursor`.

### 2026-10-05 — `uiVisible` on perp market definitions (API [3.6.3](https://github.com/Reya-Labs/reya-api-specs/tree/e2c7974c983ef49d784dbc6b0d5748093b83cebb))

`[REST]` **Added.** `GET /v2/perpMarketDefinitions` has a `uiVisible` field: whether the Reya app shows the market. `false` doesn't restrict API trading, permissions or account and history access, so a market can trade through the API before it appears in the app.

**What you need to do:** nothing. The field is optional to read.

### 2026-09-28 — Order book live on mainnet (API [3.6.2](https://github.com/Reya-Labs/reya-api-specs/tree/1fdb52a9ce50d2f2d52b28f2895a5f0be0c01e80))

`[REST]` `[WS-OrderEntry]` `[WS-Info]` `[On-chain]` **Added.** The perpetual and spot order book is live on mainnet, serving API **3.6.2**. See [Environments](/developers/getting-started/environments.md#mainnet) for endpoints and signing values, and [Contract Addresses](/developers/reference/contract-addresses.md) for the on-chain settlement contracts.

This guide replaces both the pre-launch mainnet developer docs and the separate Order Book — Devnet guide. It documents mainnet and devnet1 together; devnet1 remains available for integration testing.
