Removing deprecated REST API endpoints and response fields
We're cleaning up two deprecated REST API endpoints along with several response fields that have been marked deprecated for a while. If you're already on the recommended replacements, nothing changes for you. If you're still on any of the removed surfaces, this post tells you what to migrate to.
Endpoints removed
GET /api/v2/orders/{chain}/{protocol}/offers-> useGET /api/v2/offers/collection/{slug}/allGET /api/v2/orders/{chain}/{protocol}/listings-> useGET /api/v2/listings/collection/{slug}/all
The collection-based endpoints return a cleaner response shape with structured price objects and are sorted by best price by default. For individual order lookups, use GET /api/v2/orders/chain/{chain}/protocol/{protocol_address}/{order_hash}. To query by creation time, use the events API at GET /api/v2/events.
Response shape changes
POST /orders/{chain}/{protocol}/offers
POST /orders/{chain}/{protocol}/offersThe response no longer includes the legacy order wrapper field. The endpoint now returns an Offer directly. If you were already reading the offer field, just unwrap one level.
Before:
{ "order": { ... legacy shape ... }, "offer": { ... } }After:
{ ... offer fields ... }POST /orders/{chain}/{protocol}/listings
POST /orders/{chain}/{protocol}/listingsSame change. The legacy order wrapper is gone and the endpoint returns a Listing directly. Read the response as a Listing instead of response.listing.
Offer criteria.trait removed
criteria.trait removedThe deprecated single-trait trait field on the offer criteria response object has been removed. Use the traits array instead - it works for both single-trait and multi-trait offers.
Before:
"criteria": { "trait": { "trait_type": "Background", "value": "Blue" } }After:
"criteria": { "traits": [{ "trait_type": "Background", "value": "Blue" }] }Collection stats fields removed
We've removed several fields from collection stats responses that were always returning 0. These were placeholders that never got real values, so dropping them shouldn't change anything meaningful in your integration.
From IntervalStat:
volume_diffvolume_changesales_diffaverage_price
From Total:
market_capaverage_price
Migration checklist
- If you call
/orders/{chain}/{protocol}/offersor/orders/{chain}/{protocol}/listings, switch to the collection-based endpoints listed above - If you read the
orderfield from create offer/listing responses, switch to reading the response directly asOfferorListing - If you read
criteria.trait, switch tocriteria.traits[0] - If you read any of the always-zero stats fields, remove those references
All removed surfaces were previously marked deprecated = true in our OpenAPI schema.
