REST API Reference
The Orbit Finance adapter API serves pool data, token prices, trade history, and supports transaction building.
Base URL: https://orbit-dex.api.cipherlabsx.com/api/v1All endpoints return JSON. No authentication required for read endpoints.
Pools
GET /pools
Fetch all Orbit Finance pools with current state.
curl https://orbit-dex.api.cipherlabsx.com/api/v1/poolsResponse:
{
"pools": [
{
"id": "EoLGqHKvtK9NcxjjnvSxTYYuFMYDeWTFFyKYj1DcJyPB",
"programId": "Fn3fA3fjsmpULNL7E9U79jKTe1KHxPtQeWdURCbJXCnM",
"baseMint": "Ciphern9cCXtms66s8Mm6wCFC27b2JProRQLYmiLMH3N",
"quoteMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"priceNumber": 0.00302,
"priceUsd": 0.00302,
"activeBin": -993,
"binStepBps": 125,
"baseFeeBps": 200,
"liquidityUsd": 14929.27,
"reserveBaseUi": 3240000,
"reserveQuoteUi": 195.23
}
]
}GET /pools/:pool
Fetch a single pool by address.
curl https://orbit-dex.api.cipherlabsx.com/api/v1/pools/EoLGqHKvtK9NcxjjnvSxTYYuFMYDeWTFFyKYj1DcJyPBGET /bins/:pool
Fetch bin liquidity data for a pool. Returns all active bins with reserves.
curl https://orbit-dex.api.cipherlabsx.com/api/v1/bins/EoLGqHKvtK9NcxjjnvSxTYYuFMYDeWTFFyKYj1DcJyPBPrices
GET /tokens/prices
Get current USD prices for one or more tokens.
curl "https://orbit-dex.api.cipherlabsx.com/api/v1/tokens/prices?mints=Ciphern9cCXtms66s8Mm6wCFC27b2JProRQLYmiLMH3N"Query params:
| Param | Type | Description |
|---|---|---|
mints | string | Comma-separated token mint addresses |
Response:
{
"prices": [
{
"mint": "Ciphern9cCXtms66s8Mm6wCFC27b2JProRQLYmiLMH3N",
"priceUsd": 0.0038144,
"lastUpdated": 1773837572473
}
],
"ts": 1773837667444
}GET /price/:mint
Get price for a single token.
GET /price-quote
Get a price quote between two tokens.
curl "https://orbit-dex.api.cipherlabsx.com/api/v1/price-quote?base=CIPHER_MINT"e=USDC_MINT"Volume & Trading
GET /volumes
Get 24h trading volumes per pool.
curl "https://orbit-dex.api.cipherlabsx.com/api/v1/volumes?tf=24h"Query params:
| Param | Type | Description |
|---|---|---|
tf | string | Time frame: 1h, 24h, 7d |
pools | string | Optional comma-separated pool addresses |
Response:
{
"tf": "24h",
"volumes": {
"EoLGqHKvtK9NcxjjnvSxTYYuFMYDeWTFFyKYj1DcJyPB": 1181.04,
"HQqS7RH8YoshgmGFbynCGywuzpGjWT627QjKWbUKoccu": 0
},
"ts": 1773837666708
}GET /trades/:pool
Get recent trades for a pool.
GET /candles/:pool
Get OHLCV candle data for charting.
curl "https://orbit-dex.api.cipherlabsx.com/api/v1/candles/EoLGqHKv...?tf=1h&limit=100"Query params:
| Param | Type | Description |
|---|---|---|
tf | string | Timeframe: 1m, 5m, 15m, 1h, 4h, 1d |
limit | number | Max candles to return (default 100) |
Tokens
GET /tokens
List all known tokens with metadata.
curl https://orbit-dex.api.cipherlabsx.com/api/v1/tokensGET /tokens/:mint
Get metadata for a specific token.
GET /tokens/by-mints
Batch fetch token metadata.
curl "https://orbit-dex.api.cipherlabsx.com/api/v1/tokens/by-mints?mints=CIPHER_MINT,USDC_MINT"Pool Creation
POST /pool/create
Create a new DLMM pool. Requires admin wallet signature.
curl -X POST https://orbit-dex.api.cipherlabsx.com/api/v1/pool/create \
-H "Content-Type: application/json" \
-d '{
"admin": "orb4xg...",
"baseMint": "...",
"quoteMint": "...",
"binStepBps": 100,
"initialPrice": 0.004,
"feeConfig": {
"baseFeeBps": 90,
"creatorCutBps": 20000,
"holdersCutBps": 30000,
"nftCutBps": 10000,
"protocolCutBps": 40000
}
}'Returns unsigned transaction(s) for signing.
POST /pool/create-batch
Create pool with initial liquidity in one call.
Staking
GET /streamflow/vaults
List Streamflow staking vaults.
GET /streamflow/stakes/:owner
Get staking positions for a wallet.
curl https://orbit-dex.api.cipherlabsx.com/api/v1/streamflow/stakes/GZ74i6xZX...NFT Staking
GET /nft-staking/stats
Get overall NFT staking statistics.
GET /nft-staking/stakes/:owner
Get NFT staking positions for a wallet.
GET /nft-staking/status/:nftMint/:owner
Check stake status for a specific NFT.
Rewards
POST /rewards/holder/claimable
Calculate claimable CIPHER staker rewards for a user.
curl -X POST https://orbit-dex.api.cipherlabsx.com/api/v1/rewards/holder/claimable \
-H "Content-Type: application/json" \
-d '{ "user": "WALLET_ADDRESS" }'Response:
{
"user": "GZ74i6xZXsajBChQdXanMXyE8APmqfJ4BfFoEQCqYF9c",
"claimableUsdc": "32.81",
"weekLabel": "10-16/03/2026",
"distributor": "3ZuWESUZZ2WgbEorMM4EqjTXT4By2KT2yk9JqJ9HUEYe",
"claimUrl": "https://app.streamflow.finance/airdrops/solana/mainnet/3ZuWESUZZ2WgbEorMM4EqjTXT4By2KT2yk9JqJ9HUEYe",
"merkleProof": ["a1b2c3...", "d4e5f6..."],
"amountLamports": "32810000"
}POST /rewards/nft/claimable
Calculate claimable NFT (CIPHER OWLS) rewards for a user.
curl -X POST https://orbit-dex.api.cipherlabsx.com/api/v1/rewards/nft/claimable \
-H "Content-Type: application/json" \
-d '{ "user": "WALLET_ADDRESS" }'Response:
{
"user": "GZ74i6xZXsajBChQdXanMXyE8APmqfJ4BfFoEQCqYF9c",
"claimableUsdc": "8.47",
"weekLabel": "10-16/03/2026",
"distributor": "6H8LmknvNTn96UUFXZX6ZZiK72GkddkHHTuhGE63h4PP",
"claimUrl": "https://app.streamflow.finance/airdrops/solana/mainnet/6H8LmknvNTn96UUFXZX6ZZiK72GkddkHHTuhGE63h4PP",
"nfts": [
{ "mint": "...", "rarity": "Rare", "weight": 4 },
{ "mint": "...", "rarity": "Common", "weight": 1 }
],
"totalWeight": 5,
"merkleProof": ["a1b2c3...", "d4e5f6..."],
"amountLamports": "8470000"
}
---
## WebSocket
Real-time event streaming via WebSocket.
wss://orbit-dex.api.cipherlabsx.com/api/v1/ws
**Authentication:**
1. Get a ticket: `GET /api/v1/ws-ticket` (requires WS_TOKEN header)
2. Connect with ticket: `wss://...?ticket=TICKET`
**Events streamed:**
`pool_update`, emitted when pool state changes (price, active bin, TVL):
```json
{
"type": "pool_update",
"pool": "EoLGqHKvtK9NcxjjnvSxTYYuFMYDeWTFFyKYj1DcJyPB",
"activeBin": -993,
"priceNumber": 0.004392,
"liquidityUsd": 15990.44,
"ts": 1773837572473
}swap, emitted on each trade:
{
"type": "swap",
"pool": "EoLGqHKvtK9NcxjjnvSxTYYuFMYDeWTFFyKYj1DcJyPB",
"txSig": "5xK3r...",
"signer": "GZ74i6...",
"amountIn": "1000000",
"amountOut": "227685432",
"swapForY": false,
"feePaid": "20000",
"ts": 1773837580000
}bin_update, emitted when bin reserves change:
{
"type": "bin_update",
"pool": "EoLGqHKvtK9NcxjjnvSxTYYuFMYDeWTFFyKYj1DcJyPB",
"binId": -993,
"reserveX": "5000000000",
"reserveY": "21980",
"ts": 1773837580000
}Health
GET /health
Basic health check.
{ "ok": true }GET /health/detailed
Detailed health with RPC status, pool count, uptime.
GET /metrics
Prometheus-compatible metrics endpoint.
Rate Limits
The API is rate-limited per IP. If you need higher limits for integration purposes, reach out on X (@CipherLabsx).
Errors
All errors return:
{
"message": "Description of what went wrong",
"error": "ErrorType",
"statusCode": 400
}Common status codes:
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request (missing/invalid params) |
| 404 | Not found |
| 429 | Rate limited |
| 500 | Server error |