curl --request POST \
--url wss://api.ondoperps.xyz/ws/builderFills \
--header 'Content-Type: application/json' \
--data '
{
"op": "subscribe",
"channel": "builderFills"
}
'import requests
url = "wss://api.ondoperps.xyz/ws/builderFills"
payload = {
"op": "subscribe",
"channel": "builderFills"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({op: 'subscribe', channel: 'builderFills'})
};
fetch('wss://api.ondoperps.xyz/ws/builderFills', 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 => "wss://api.ondoperps.xyz/ws/builderFills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'op' => 'subscribe',
'channel' => 'builderFills'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "wss://api.ondoperps.xyz/ws/builderFills"
payload := strings.NewReader("{\n \"op\": \"subscribe\",\n \"channel\": \"builderFills\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("wss://api.ondoperps.xyz/ws/builderFills")
.header("Content-Type", "application/json")
.body("{\n \"op\": \"subscribe\",\n \"channel\": \"builderFills\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("wss://api.ondoperps.xyz/ws/builderFills")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"op\": \"subscribe\",\n \"channel\": \"builderFills\"\n}"
response = http.request(request)
puts response.read_body{
"type": "update",
"channel": "builderFills",
"data": {
"builderCodeFee": "0.2275",
"fillId": "70a37d8f972f2494837f9dba8364cbb4",
"market": "AAPL-USD.P",
"price": "227.50",
"size": "5.00",
"side": "buy",
"time": "2026-09-28T14:32:07.123456Z"
}
}Subscribe: Builder Code Fills
Subscribe to the builderFills channel. Requires authentication (login first), and the logged-in account must own a builder code.
Streams every fill attributed to that builder code, across all accounts trading with it, one fill per message. There is no markets filter. Builder codes apply to perps only, so no spot fills arrive on this channel.
Subscribing without a builder code on the account returns channel unsupported; subscribing before logging in returns login required.
Messages are delivered only while subscribed, so a disconnect drops anything that fills in the meantime. After reconnecting, call GET /v1/builder_code/fills to recover the most recent fills and de-duplicate by fillId.
curl --request POST \
--url wss://api.ondoperps.xyz/ws/builderFills \
--header 'Content-Type: application/json' \
--data '
{
"op": "subscribe",
"channel": "builderFills"
}
'import requests
url = "wss://api.ondoperps.xyz/ws/builderFills"
payload = {
"op": "subscribe",
"channel": "builderFills"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({op: 'subscribe', channel: 'builderFills'})
};
fetch('wss://api.ondoperps.xyz/ws/builderFills', 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 => "wss://api.ondoperps.xyz/ws/builderFills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'op' => 'subscribe',
'channel' => 'builderFills'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "wss://api.ondoperps.xyz/ws/builderFills"
payload := strings.NewReader("{\n \"op\": \"subscribe\",\n \"channel\": \"builderFills\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("wss://api.ondoperps.xyz/ws/builderFills")
.header("Content-Type", "application/json")
.body("{\n \"op\": \"subscribe\",\n \"channel\": \"builderFills\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("wss://api.ondoperps.xyz/ws/builderFills")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"op\": \"subscribe\",\n \"channel\": \"builderFills\"\n}"
response = http.request(request)
puts response.read_body{
"type": "update",
"channel": "builderFills",
"data": {
"builderCodeFee": "0.2275",
"fillId": "70a37d8f972f2494837f9dba8364cbb4",
"market": "AAPL-USD.P",
"price": "227.50",
"size": "5.00",
"side": "buy",
"time": "2026-09-28T14:32:07.123456Z"
}
}Body
Response
Channel update for builderFills
update builderFills One fill attributed to a builder code, as served by both the builderFills WebSocket channel and the builder-code fills endpoint.
Show child attributes
Show child attributes
{
"builderCodeFee": "0.2275",
"fillId": "70a37d8f972f2494837f9dba8364cbb4",
"market": "AAPL-USD.P",
"price": "227.50",
"size": "5.00",
"side": "buy",
"time": "2026-09-28T14:32:07.123456Z"
}