curl --request GET \
--url https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"source": "local",
"generated_at_ms": 123,
"data": {
"mint": "<string>",
"source": "oceanx_native",
"price": {
"aggregated": {
"median": "<string>",
"average": "<string>",
"min": "<string>",
"max": "<string>",
"poolCount": 9
},
"topPools": [
{
"poolId": "<string>",
"priceUsd": "<string>",
"liquidityUsd": "<string>",
"market": "<string>",
"observedAtMs": 123,
"creation": {
"createdAtMs": 1,
"reserves": {}
}
}
],
"complete": false,
"scope": "<string>",
"pool": "<string>"
},
"stats": {
"allTime": null,
"observed": {
"buys": 1,
"sells": 1,
"volumeUsd": "<string>",
"fromMs": 1,
"toMs": 1,
"unpricedExecutions": 1
},
"pool": "<string>",
"complete": false,
"truncated": true,
"suspiciousVolume": {
"value": true,
"rule": "<string>",
"complete": false
}
},
"risk": {
"asOf": 1,
"expiresAt": 1,
"source": "<string>",
"complete": false,
"bundlerCount": 1,
"bundlerPercentage": "<string>",
"sniperCount": 1,
"sniperPercentage": "<string>",
"insiderCount": 1,
"insiderPercentage": "<string>",
"bundlerRisk": {
"score": 1,
"rule": "<string>",
"inferred": true
}
},
"holderHistory": {
"points": [
{
"observedAtMs": 123,
"holders": 1,
"complete": true
}
],
"intervalMs": 300000,
"scope": "<string>",
"complete": false
},
"isHolderReward": true,
"holderRewardReason": "<string>",
"holderRewardObservedAtMs": 123
}
}Native token live
Owned multi-pool price, observed execution statistics, risk and viewed-token holder history. Top ten fresh pools with fully valued supported reserves; not a pool census. Stats count execution legs, not deduplicated economic routes. All-time totals require inception coverage and stay null. Imbalance is an observed heuristic, not a wash-trading verdict. No polling, vendor fallback or history scan.
curl --request GET \
--url https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.oceanx.trade/api/v1/tokens/{chain}/{address}/live")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"source": "local",
"generated_at_ms": 123,
"data": {
"mint": "<string>",
"source": "oceanx_native",
"price": {
"aggregated": {
"median": "<string>",
"average": "<string>",
"min": "<string>",
"max": "<string>",
"poolCount": 9
},
"topPools": [
{
"poolId": "<string>",
"priceUsd": "<string>",
"liquidityUsd": "<string>",
"market": "<string>",
"observedAtMs": 123,
"creation": {
"createdAtMs": 1,
"reserves": {}
}
}
],
"complete": false,
"scope": "<string>",
"pool": "<string>"
},
"stats": {
"allTime": null,
"observed": {
"buys": 1,
"sells": 1,
"volumeUsd": "<string>",
"fromMs": 1,
"toMs": 1,
"unpricedExecutions": 1
},
"pool": "<string>",
"complete": false,
"truncated": true,
"suspiciousVolume": {
"value": true,
"rule": "<string>",
"complete": false
}
},
"risk": {
"asOf": 1,
"expiresAt": 1,
"source": "<string>",
"complete": false,
"bundlerCount": 1,
"bundlerPercentage": "<string>",
"sniperCount": 1,
"sniperPercentage": "<string>",
"insiderCount": 1,
"insiderPercentage": "<string>",
"bundlerRisk": {
"score": 1,
"rule": "<string>",
"inferred": true
}
},
"holderHistory": {
"points": [
{
"observedAtMs": 123,
"holders": 1,
"complete": true
}
],
"intervalMs": 300000,
"scope": "<string>",
"complete": false
},
"isHolderReward": true,
"holderRewardReason": "<string>",
"holderRewardObservedAtMs": 123
}
}Authorizations
An OceanX API key, created in the app under Settings → Developer API. Send it as Authorization: Bearer ox_live_…. Required scopes are operation-specific: market reads use md.read, tracker uses tracker.read, copy reads use copy.read, and alert operations use alerts.read or alerts.write. New scopes require explicit selection and grant no trading authority. Existing perps operations retain their documented scopes.
Query Parameters
Exact pool for prices and observed statistics. Holder/risk facts describe the mint.
