Orbis Public API

REST API for integrating with the Orbis NFT Marketplace. Discover collections, fetch listings, read activity, and build buy transactions for NFTs listed on Orbis. Designed for marketplace aggregators, wallets, and analytics platforms.

Base URL https://www.orbisonsol.io/api/mp-public
All endpoints require an API key. Include your key in the X-API-Key header with every request. Request access below to get started.

Authentication

All API requests require an API key passed via the X-API-Key header:

Header
X-API-Key: orbis_pk_your_api_key_here

Requests without a valid API key will receive a 401 Unauthorized response.

API keys are issued to marketplace aggregators, wallets, and analytics platforms. Submit a request below or reach out on Discord.

Solana RPC Access

The same X-API-Key also authorizes server-to-server calls to our protected Solana RPC proxies for use cases that need raw on-chain data not covered by /api/mp-public:

Send requests exactly as you would to Helius — include the X-API-Key header. Rate limited to 60 requests per minute per IP. Browser traffic from gotmlabz.io / orbisonsol.io uses a separate session-cookie path and does not consume your API key's rate budget.

Example
curl -X POST "https://www.orbisonsol.io/api/solana-rpc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["YOUR_WALLET"]}'

Getting Started

All endpoints use the action query parameter to specify the operation. Responses follow a consistent format:

Response
{
  "success": true,
  "data": { ... },
  "meta": {
    "timestamp": 1707900000000,
    "source": "orbis",
    "count": 10
  }
}

Error responses return success: false with an error message:

Error
{
  "success": false,
  "error": "collectionId is required"
}

Get Collections

GET /api/mp-public?action=collections

Returns all enabled collections on the Orbis marketplace with their stats.

cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://www.orbisonsol.io/api/mp-public?action=collections"
Example Response
JSON
{
  "success": true,
  "data": [
    {
      "id": "abc123",
      "name": "Example Collection",
      "pathname": "example-collection",
      "collectionAddress": "ExAm...",
      "logo": "https://arweave.net/.../logo.png",
      "banner": "https://arweave.net/.../banner.png",
      "stats": {
        "floorPrice": 1.5,
        "volume24h": 42.8,
        "volumeAll": 1250.3,
        "listed": 45,
        "supply": 5000,
        "owners": 2100
      }
    }
  ],
  "meta": { "timestamp": 1707900000000, "source": "orbis", "count": 1 }
}

Get Collection Details

GET /api/mp-public?action=collection

Returns details and stats for a single collection.

ParameterTypeDescription
id optionalstringInternal collection ID
pathname optionalstringCollection URL pathname (e.g. "gainz")
collectionAddress optionalstringOn-chain collection address (Solana mint). Recommended for external integrations.
cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://www.orbisonsol.io/api/mp-public?action=collection&pathname=example-collection"
Example Response
JSON
{
  "success": true,
  "data": {
    "id": "abc123",
    "name": "Example Collection",
    "pathname": "example-collection",
    "collectionAddress": "ExAm...",
    "logo": "https://arweave.net/.../logo.png",
    "banner": "https://arweave.net/.../banner.png",
    "description": "A collection of 5000 unique NFTs.",
    "programId": "2kmsyJ3oZHpk1Qwp4U5X4nm7KPBJrbaXdKyZYc166s6Q",
    "stats": {
      "floorPrice": 1.5,
      "topOffer": 1.2,
      "volume24h": 42.8,
      "volumeAll": 1250.3,
      "listed": 45,
      "supply": 5000,
      "owners": 2100,
      "marketCap": 7500
    }
  },
  "meta": { "timestamp": 1707900000000, "source": "orbis" }
}

Get Listings

GET /api/mp-public?action=listings

Returns active listings for a collection. Supports sorting and pagination.

ParameterTypeDescription
collectionId optionalstringInternal collection ID (use collectionId or collectionAddress)
collectionAddress optionalstringOn-chain collection address (recommended)
sort optionalstringpriceLow, priceHigh, or recentlyListed (default)
limit optionalnumberResults per page, 1-100 (default: 50)
offset optionalnumberNumber of results to skip (default: 0)
cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://www.orbisonsol.io/api/mp-public?action=listings&collectionAddress=YOUR_COLLECTION_ADDRESS&sort=priceLow&limit=20"
Example Response
JSON
{
  "success": true,
  "data": [
    {
      "mint": "NfTm1nT...",
      "name": "Example #1234",
      "image": "https://arweave.net/.../1234.png",
      "priceSol": 1.5,
      "seller": "SelL3r...",
      "source": "gotm",
      "rarityRank": 42,
      "attributes": [
        { "trait_type": "Background", "value": "Blue" },
        { "trait_type": "Eyes", "value": "Laser" }
      ],
      "listedAt": 1707900000000
    }
  ],
  "meta": { "timestamp": 1707900000000, "source": "orbis", "count": 1, "offset": 0, "limit": 20 }
}

Get Listing Details

GET /api/mp-public?action=listing

Returns details for a single listing by mint address.

ParameterTypeDescription
collectionId optionalstringInternal collection ID (use collectionId or collectionAddress)
collectionAddress optionalstringOn-chain collection address (recommended)
mint requiredstringNFT mint address
cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://www.orbisonsol.io/api/mp-public?action=listing&collectionAddress=YOUR_COLLECTION_ADDRESS&mint=NfTm1nT..."

Get Activity

GET /api/mp-public?action=activity

Returns the activity feed for a collection — sales, listings, delistings, and more.

ParameterTypeDescription
collectionId optionalstringInternal collection ID (use collectionId or collectionAddress)
collectionAddress optionalstringOn-chain collection address (recommended)
type optionalstringFilter by type (see Activity Types below)
limit optionalnumberResults to return, 1-100 (default: 50)

Activity Types

  • sale Direct purchase of a listed NFT
  • offer_accepted Seller accepted a buyer's offer
  • listing NFT was listed for sale
  • delist NFT was delisted (removed from sale)
  • offer_made Buyer placed an offer
  • offer_cancelled Buyer cancelled their offer
  • price_update Seller changed listing price
cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://www.orbisonsol.io/api/mp-public?action=activity&collectionAddress=YOUR_COLLECTION_ADDRESS&type=sale&limit=20"
Example Response
JSON
{
  "success": true,
  "data": [
    {
      "id": "act_001",
      "type": "sale",
      "mint": "NfTm1nT...",
      "name": "Example #1234",
      "image": "https://arweave.net/.../1234.png",
      "priceSol": 1.5,
      "wallet": "BuY3r...",
      "counterparty": "SelL3r...",
      "txSignature": "5vGp...",
      "source": "gotm",
      "timestamp": 1707900000000
    }
  ],
  "meta": { "timestamp": 1707900000000, "source": "orbis", "count": 1 }
}

Get Stats

GET /api/mp-public?action=stats

Returns marketplace statistics for a collection.

ParameterTypeDescription
collectionId optionalstringInternal collection ID (use collectionId or collectionAddress)
collectionAddress optionalstringOn-chain collection address (recommended)
cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://www.orbisonsol.io/api/mp-public?action=stats&collectionAddress=YOUR_COLLECTION_ADDRESS"
Example Response
JSON
{
  "success": true,
  "data": {
    "floorPrice": 1.5,
    "topOffer": 1.2,
    "volume24h": 42.8,
    "volumeAll": 1250.3,
    "listed": 45,
    "supply": 5000,
    "owners": 2100,
    "marketCap": 7500,
    "sales24h": 12
  },
  "meta": { "timestamp": 1707900000000, "source": "orbis" }
}

Get Offers

GET /api/mp-public?action=offers

Returns active offers on a specific NFT, sorted by amount (highest first).

ParameterTypeDescription
collectionId optionalstringInternal collection ID (use collectionId or collectionAddress)
collectionAddress optionalstringOn-chain collection address (recommended)
mint requiredstringNFT mint address
cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://www.orbisonsol.io/api/mp-public?action=offers&collectionAddress=YOUR_COLLECTION_ADDRESS&mint=NfTm1nT..."

Buy Instruction

POST /api/mp-public?action=buyInstruction

Builds a Solana transaction for purchasing an NFT listed on Orbis. Returns a serialized VersionedTransaction (v0) in base64. The buyer must sign this transaction before submitting it to the Solana network.

Body ParameterTypeDescription
mint requiredstringNFT mint address to buy
buyer requiredstringBuyer's wallet address (will be the signer)
cURL
curl -X POST "https://www.orbisonsol.io/api/mp-public?action=buyInstruction" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"mint": "NfTm1nT...", "buyer": "BuY3r..."}'
Example Response
JSON
{
  "success": true,
  "data": {
    "transaction": "AQAAAAAAAAA...",
    "txType": "versioned",
    "priceSol": 1.5,
    "priceLamports": "1500000000",
    "seller": "SelL3r...",
    "mint": "NfTm1nT...",
    "programId": "2kmsyJ3oZHpk1Qwp4U5X4nm7KPBJrbaXdKyZYc166s6Q"
  },
  "meta": { "timestamp": 1707900000000, "source": "orbis" }
}
Integration Flow: 1. Call this endpoint with the NFT mint and buyer wallet. 2. Deserialize the base64 transaction: VersionedTransaction.deserialize(Buffer.from(tx, 'base64')) 3. Have the buyer sign the transaction. 4. Submit to Solana via sendRawTransaction.

List Instruction

POST /api/mp-public?action=listInstruction

Builds a Solana transaction for listing an NFT on Orbis. Returns a serialized VersionedTransaction (v0) in base64. The seller must sign this transaction before submitting it to the Solana network.

Permission Required: This endpoint requires the list permission on your API key. Contact the Orbis team to request listing access.
Body ParameterTypeDescription
mint requiredstringNFT mint address to list
price requirednumberListing price in SOL (e.g. 1.5)
seller requiredstringSeller's wallet address (will be the signer)
collectionAddress optionalstringOn-chain collection address. Auto-resolved from mint if omitted.
cURL
curl -X POST "https://www.orbisonsol.io/api/mp-public?action=listInstruction" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"mint": "NfTm1nT...", "price": 1.5, "seller": "SelL3r..."}'
Example Response
JSON
{
  "success": true,
  "data": {
    "transaction": "AQAAAAAAAAA...",
    "txType": "versioned",
    "listingPda": "LiSt1nGpDa...",
    "nftType": 0,
    "priceSol": 1.5,
    "seller": "SelL3r...",
    "mint": "NfTm1nT...",
    "programId": "2kmsyJ3oZHpk1Qwp4U5X4nm7KPBJrbaXdKyZYc166s6Q"
  },
  "meta": { "timestamp": 1707900000000, "source": "orbis" }
}
Integration Flow: 1. Call this endpoint with the NFT mint, price, and seller wallet. 2. Deserialize the base64 transaction: VersionedTransaction.deserialize(Buffer.from(tx, 'base64')) 3. Have the seller sign the transaction. 4. Submit to Solana via sendRawTransaction.

Delist Instruction

POST /api/mp-public?action=delistInstruction

Builds a Solana transaction to delist (cancel) an NFT listing on Orbis. The seller must sign this transaction.

Permission Required: This endpoint requires the list or delist permission on your API key.
Body ParameterTypeDescription
mint requiredstringNFT mint address to delist
seller requiredstringSeller's wallet address (must be the original lister)
cURL
curl -X POST "https://www.orbisonsol.io/api/mp-public?action=delistInstruction" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"mint": "NfTm1nT...", "seller": "SelL3r..."}'
Integration Flow: Same as buyInstruction — deserialize, sign, and submit.

Webhooks

Receive real-time push notifications when marketplace events occur (listings, sales, delists, offers). Register a webhook URL and Orbis will POST event data to it.

Register a Webhook

POST ?action=registerWebhook

Register a URL to receive event notifications. Max 5 webhooks per API key.

Request Body
{
  "url": "https://your-server.com/orbis-webhook",
  "events": ["listing", "sale", "delist"],
  "collections": ["collection_id_1"],
  "secret": "your_webhook_secret"
}
ParameterTypeDescription
urlstringRequired. HTTPS endpoint to receive POST notifications.
eventsstring[]Filter by event type. Omit for all events. Values: listing, delist, sale, offer_accepted, offer_made, offer_cancelled, price_update
collectionsstring[]Filter by collection ID. Omit for all collections.
secretstringOptional. Used to sign payloads with HMAC-SHA256 (X-Orbis-Signature header).

Webhook Payload

Each notification is a POST request with the following JSON body:

Payload
{
  "event": "sale",
  "timestamp": 1707900000000,
  "data": {
    "collectionId": "abc123",
    "mint": "NFTMint...",
    "name": "Cool NFT #42",
    "image": "https://...",
    "priceSol": 1.5,
    "wallet": "Buyer...",
    "counterparty": "Seller...",
    "txSignature": "5abc...",
    "source": "gotm"
  }
}
If you provided a secret, verify the X-Orbis-Signature header by computing HMAC-SHA256(secret, raw_body) and comparing. Webhooks are auto-disabled after 50 consecutive delivery failures.

List Webhooks

GET ?action=getWebhooks

List all webhooks registered under your API key.

cURL
curl "https://www.orbisonsol.io/api/mp-public?action=getWebhooks" \
  -H "X-API-Key: YOUR_API_KEY"

Delete a Webhook

POST ?action=deleteWebhook

Remove a webhook. Requires webhookId in the request body.

cURL
curl -X POST "https://www.orbisonsol.io/api/mp-public?action=deleteWebhook" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"webhookId": "webhook_id_here"}'

Data Types

Listing Object

FieldTypeDescription
mintstringNFT mint address
namestring | nullNFT name
imagestring | nullImage URL
priceSolnumberPrice in SOL
sellerstringSeller wallet address
sourcestringgotm (Orbis native), magiceden, or tensor
rarityRanknumber | nullRarity rank within the collection
attributesarrayNFT trait attributes
listedAtnumber | nullUnix timestamp (ms) when listed

Activity Object

FieldTypeDescription
idstringActivity ID
typestringActivity type (see Activity Types above)
mintstringNFT mint address
priceSolnumber | nullPrice in SOL
walletstringPrimary wallet (buyer for sales, seller for listings)
counterpartystring | nullOther party in the transaction
txSignaturestring | nullSolana transaction signature
timestampnumber | nullUnix timestamp (ms)

Rate Limits & Best Practices

Rate limits are enforced at the edge via Cloudflare. General API endpoints allow 60 requests per 10 seconds per IP. Transaction-building endpoints allow 15 requests per minute per IP. The Solana RPC proxies (/api/solana-rpc, /api/helius-proxy) allow 60 requests per minute per IP. Recommended practices:

Responses include Cache-Control headers. Honor these for optimal performance and to avoid unnecessary load.

Request API Access

Submit a request below and our team will review your application. Approved integrators receive an API key typically within 24-48 hours.

API Key Request

All fields marked with * are required

Prefer to chat? Join our Discord for direct support:

Join Discord