API Endpoints: Use https://txline.txodds.com/api/ for mainnet or https://txline-dev.txodds.com/api/ for devnet
Stream Odds Updates
Connect to the odds stream for real-time updates.
const streamUrl = "https://txline.txodds.com/api/odds/stream";
const streamResponse = await fetch(streamUrl, {
headers: {
Authorization: `Bearer ${jwt}`,
"X-Api-Token": apiToken,
Accept: "text/event-stream",
"Cache-Control": "no-cache",
},
});
if (!streamResponse.ok) {
throw new Error(`Stream failed: ${streamResponse.status}`);
}
const reader = streamResponse.body!.getReader();
const decoder = new TextDecoder();
try {
while (true) {
const { value, done } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split("\n");
for (const line of lines) {
if (line.trim()) {
console.log(line);
}
}
}
} finally {
reader.releaseLock();
}
Stream Scores Updates
Connect to the scores stream for real-time updates.
const streamUrl = "https://txline.txodds.com/api/scores/stream";
const streamResponse = await fetch(streamUrl, {
headers: {
Authorization: `Bearer ${jwt}`,
"X-Api-Token": apiToken,
Accept: "text/event-stream",
"Cache-Control": "no-cache",
},
});
if (!streamResponse.ok) {
throw new Error(`Stream failed: ${streamResponse.status}`);
}
const reader = streamResponse.body!.getReader();
const decoder = new TextDecoder();
try {
while (true) {
const { value, done } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split("\n");
for (const line of lines) {
if (line.trim()) {
console.log(line);
}
}
}
} finally {
reader.releaseLock();
}
Stream Compression: To reduce bandwidth usage by up to 70-80%, add "Accept-Encoding": "gzip" to your headers. You’ll need to decompress the response chunks using gunzipSync() from Node’s zlib module before decoding.