UMA WebSocket
curl --request GET \
--url https://synthesis.trade/api/v1/uma/ws \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"statuses": [
"PROPOSED",
"DISPUTED"
],
"limit": 100,
"offset": 0
}
'import requests
url = "https://synthesis.trade/api/v1/uma/ws"
payload = {
"type": "<string>",
"statuses": ["PROPOSED", "DISPUTED"],
"limit": 100,
"offset": 0
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({type: '<string>', statuses: ['PROPOSED', 'DISPUTED'], limit: 100, offset: 0})
};
fetch('https://synthesis.trade/api/v1/uma/ws', 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://synthesis.trade/api/v1/uma/ws",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'type' => '<string>',
'statuses' => [
'PROPOSED',
'DISPUTED'
],
'limit' => 100,
'offset' => 0
]),
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 := "https://synthesis.trade/api/v1/uma/ws"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"statuses\": [\n \"PROPOSED\",\n \"DISPUTED\"\n ],\n \"limit\": 100,\n \"offset\": 0\n}")
req, _ := http.NewRequest("GET", 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.get("https://synthesis.trade/api/v1/uma/ws")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"statuses\": [\n \"PROPOSED\",\n \"DISPUTED\"\n ],\n \"limit\": 100,\n \"offset\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://synthesis.trade/api/v1/uma/ws")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"<string>\",\n \"statuses\": [\n \"PROPOSED\",\n \"DISPUTED\"\n ],\n \"limit\": 100,\n \"offset\": 0\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": {
"uma": [
{
"uma": {
"id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8",
"question_id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8",
"adapter": "0x65070be91477460d8a7aeeb94ef92fe056c2f2a7",
"requestor": "0x91430cad2d3975766499717fa0d66a78d814e5c5",
"creator": "0x91430cad2d3975766499717fa0d66a78d814e5c5",
"proposer": "0x176a56a10b952c4ab1acb234384e97c5574bbdf9",
"disputer": null,
"paused": false,
"resolved": false,
"settled": false,
"result": [],
"proposed_price": 1,
"settlement_price": null,
"settlement_payout": null,
"proposal_bond": 500,
"currency": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174",
"reward": 2,
"final_fee": 250,
"neg_risk": null,
"activity": [
{
"id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8-79379792-2",
"admin": "0x0d1b6d489bd3f09e2c29383e33663600c1f1ca0a",
"content": null,
"status": "PROPOSED",
"created_at": "2025-11-23 02:23:37"
},
{
"id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8-79374007-6",
"admin": "0x91430cad2d3975766499717fa0d66a78d814e5c5",
"content": null,
"status": "INITIALIZED",
"created_at": "2025-11-22 23:10:47"
}
],
"cycles": [],
"clarifications": [],
"ancillary": {
"title": "Spread: Hawks (-10.5)",
"description": "In the upcoming NBA game, scheduled for November 22 at 7:00 PM ET:\n\nThis market will resolve to \"Hawks\" if the Hawks win the game by 11 or more points.\n\nOtherwise, this market will resolve to \"Pelicans\". If the game ends in a tie, this market will resolve to \"Pelicans\".\n\nIf the game is postponed, this market will remain open until the game has been completed. If the game is canceled entirely, with no make-up game, this market will resolve 50-50.",
"market_id": "697578",
"p1": "0",
"p2": "1",
"p3": "0.5. Where p1 corresponds to Pelicans, p2 to Hawks, p3 to unknown/50-50. Updates made by the question creator via the bulletin board at 0x65070BE91477460D8A7AeEb94ef92fe056C2f2A7 as described by https://polygonscan.com/tx/0xa14f01b115c4913624fc3f508f960f4dea252758e73c28f5f07f8e19d7bca066 should be considered.",
"initializer": "91430cad2d3975766499717fa0d66a78d814e5c5"
},
"status": "PROPOSED",
"created_at": "2025-11-22 23:10:47",
"expires_at": "2025-11-23 04:23:37",
"flagged_at": null
},
"event": {
"event_id": 82811,
"title": "Hawks vs. Pelicans",
"slug": "nba-atl-nop-2025-11-22",
"description": "In the upcoming NBA game, scheduled for November 22 at 7:00PM ET:\nIf the Hawks win, the market will resolve to \"Hawks\".\nIf the Pelicans win, the market will resolve to \"Pelicans\".\nIf the game is postponed, this market will remain open until the game has been completed.\nIf the game is canceled entirely, with no make-up game, this market will resolve 50-50.\nThe result will be determined based on the final score including any overtime periods.",
"image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/super+cool+basketball+in+red+and+blue+wow.png",
"tags": [
"Sports",
"NBA",
"Games",
"Basketball"
],
"labels": [
"sports"
],
"neg_risk": false,
"active": false,
"liquidity": "660266.55",
"volume": "1229287.45",
"volume24hr": "689710.00",
"volume1wk": "706600.87",
"volume1mo": "706600.87",
"volume1yr": "706600.87",
"live": {},
"created_at": "2025-11-16T15:00:17.833684",
"ends_at": "2025-11-23T00:00:00"
},
"market": {
"event_id": 82811,
"condition_id": "0x5142af0b36a78570754c5be525f824de2b69cf8e0651908825964691b615324b",
"question_id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8",
"question": "Spread: Hawks (-10.5)",
"outcome": "Spread -10.5",
"slug": "nba-atl-nop-2025-11-22-spread-away-10pt5",
"description": "In the upcoming NBA game, scheduled for November 22 at 7:00 PM ET:\n\nThis market will resolve to \"Hawks\" if the Hawks win the game by 11 or more points.\n\nOtherwise, this market will resolve to \"Pelicans\". If the game ends in a tie, this market will resolve to \"Pelicans\".\n\nIf the game is postponed, this market will remain open until the game has been completed. If the game is canceled entirely, with no make-up game, this market will resolve 50-50.",
"image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/super+cool+basketball+in+red+and+blue+wow.png",
"left_outcome": "Hawks",
"right_outcome": "Pelicans",
"left_price": "1.000",
"right_price": "0.001",
"left_token_id": "51363000362609959807464657776721974948318088721103617366498706951833989327973",
"right_token_id": "8700599864234240104662464466440295671498211095001926806984625502128149442187",
"winner_token_id": "51363000362609959807464657776721974948318088721103617366498706951833989327973",
"active": false,
"resolved": true,
"fees": false,
"decimals": 3,
"liquidity": "36650.62",
"volume": "41.69",
"volume24hr": "26.69",
"volume1wk": "26.69",
"volume1mo": "26.69",
"volume1yr": "26.69",
"rewards": {
"rate": 0,
"size": 0,
"spread": 0,
"holding": false,
"rewards": false
},
"created_at": "2025-11-22T23:10:25.417952",
"updated_at": "2025-12-28T07:48:40.163465",
"ends_at": "2025-11-23T00:00:00"
}
}
],
"participants": {
"0x176a56a10b952c4ab1acb234384e97c5574bbdf9": {
"address": "0x176a56a10b952c4ab1acb234384e97c5574bbdf9",
"proposals": 45,
"disputes": 2,
"settled_proposals": 40,
"successful_proposals": 38,
"failed_proposals": 2,
"settled_disputes": 2,
"successful_disputes": 1,
"failed_disputes": 1,
"total_bond": 22500,
"total_payout": 23750,
"net_pnl": 1250
}
},
"leaderboard": [
{
"address": "0x176a56a10b952c4ab1acb234384e97c5574bbdf9",
"proposals": 45,
"disputes": 2,
"settled_proposals": 40,
"successful_proposals": 38,
"failed_proposals": 2,
"settled_disputes": 2,
"successful_disputes": 1,
"failed_disputes": 1,
"total_bond": 22500,
"total_payout": 23750,
"net_pnl": 1250
}
]
}
}WebSockets
UMA WebSocket
Connect to wss://synthesis.trade/api/v1/uma/ws and send JSON messages over the socket.
Subscription behavior:
- On subscribe, current UMA requests matching the optional
statusesfilter are returned as a snapshot, along with participant stats and a leaderboard. - After the snapshot, live UMA updates are streamed as full objects with event and market data.
- If
statusesis provided, only updates matching those statuses are delivered.
UMA WebSocket
curl --request GET \
--url https://synthesis.trade/api/v1/uma/ws \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"statuses": [
"PROPOSED",
"DISPUTED"
],
"limit": 100,
"offset": 0
}
'import requests
url = "https://synthesis.trade/api/v1/uma/ws"
payload = {
"type": "<string>",
"statuses": ["PROPOSED", "DISPUTED"],
"limit": 100,
"offset": 0
}
headers = {"Content-Type": "application/json"}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({type: '<string>', statuses: ['PROPOSED', 'DISPUTED'], limit: 100, offset: 0})
};
fetch('https://synthesis.trade/api/v1/uma/ws', 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://synthesis.trade/api/v1/uma/ws",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'type' => '<string>',
'statuses' => [
'PROPOSED',
'DISPUTED'
],
'limit' => 100,
'offset' => 0
]),
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 := "https://synthesis.trade/api/v1/uma/ws"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"statuses\": [\n \"PROPOSED\",\n \"DISPUTED\"\n ],\n \"limit\": 100,\n \"offset\": 0\n}")
req, _ := http.NewRequest("GET", 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.get("https://synthesis.trade/api/v1/uma/ws")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"statuses\": [\n \"PROPOSED\",\n \"DISPUTED\"\n ],\n \"limit\": 100,\n \"offset\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://synthesis.trade/api/v1/uma/ws")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"<string>\",\n \"statuses\": [\n \"PROPOSED\",\n \"DISPUTED\"\n ],\n \"limit\": 100,\n \"offset\": 0\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": {
"uma": [
{
"uma": {
"id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8",
"question_id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8",
"adapter": "0x65070be91477460d8a7aeeb94ef92fe056c2f2a7",
"requestor": "0x91430cad2d3975766499717fa0d66a78d814e5c5",
"creator": "0x91430cad2d3975766499717fa0d66a78d814e5c5",
"proposer": "0x176a56a10b952c4ab1acb234384e97c5574bbdf9",
"disputer": null,
"paused": false,
"resolved": false,
"settled": false,
"result": [],
"proposed_price": 1,
"settlement_price": null,
"settlement_payout": null,
"proposal_bond": 500,
"currency": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174",
"reward": 2,
"final_fee": 250,
"neg_risk": null,
"activity": [
{
"id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8-79379792-2",
"admin": "0x0d1b6d489bd3f09e2c29383e33663600c1f1ca0a",
"content": null,
"status": "PROPOSED",
"created_at": "2025-11-23 02:23:37"
},
{
"id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8-79374007-6",
"admin": "0x91430cad2d3975766499717fa0d66a78d814e5c5",
"content": null,
"status": "INITIALIZED",
"created_at": "2025-11-22 23:10:47"
}
],
"cycles": [],
"clarifications": [],
"ancillary": {
"title": "Spread: Hawks (-10.5)",
"description": "In the upcoming NBA game, scheduled for November 22 at 7:00 PM ET:\n\nThis market will resolve to \"Hawks\" if the Hawks win the game by 11 or more points.\n\nOtherwise, this market will resolve to \"Pelicans\". If the game ends in a tie, this market will resolve to \"Pelicans\".\n\nIf the game is postponed, this market will remain open until the game has been completed. If the game is canceled entirely, with no make-up game, this market will resolve 50-50.",
"market_id": "697578",
"p1": "0",
"p2": "1",
"p3": "0.5. Where p1 corresponds to Pelicans, p2 to Hawks, p3 to unknown/50-50. Updates made by the question creator via the bulletin board at 0x65070BE91477460D8A7AeEb94ef92fe056C2f2A7 as described by https://polygonscan.com/tx/0xa14f01b115c4913624fc3f508f960f4dea252758e73c28f5f07f8e19d7bca066 should be considered.",
"initializer": "91430cad2d3975766499717fa0d66a78d814e5c5"
},
"status": "PROPOSED",
"created_at": "2025-11-22 23:10:47",
"expires_at": "2025-11-23 04:23:37",
"flagged_at": null
},
"event": {
"event_id": 82811,
"title": "Hawks vs. Pelicans",
"slug": "nba-atl-nop-2025-11-22",
"description": "In the upcoming NBA game, scheduled for November 22 at 7:00PM ET:\nIf the Hawks win, the market will resolve to \"Hawks\".\nIf the Pelicans win, the market will resolve to \"Pelicans\".\nIf the game is postponed, this market will remain open until the game has been completed.\nIf the game is canceled entirely, with no make-up game, this market will resolve 50-50.\nThe result will be determined based on the final score including any overtime periods.",
"image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/super+cool+basketball+in+red+and+blue+wow.png",
"tags": [
"Sports",
"NBA",
"Games",
"Basketball"
],
"labels": [
"sports"
],
"neg_risk": false,
"active": false,
"liquidity": "660266.55",
"volume": "1229287.45",
"volume24hr": "689710.00",
"volume1wk": "706600.87",
"volume1mo": "706600.87",
"volume1yr": "706600.87",
"live": {},
"created_at": "2025-11-16T15:00:17.833684",
"ends_at": "2025-11-23T00:00:00"
},
"market": {
"event_id": 82811,
"condition_id": "0x5142af0b36a78570754c5be525f824de2b69cf8e0651908825964691b615324b",
"question_id": "0x73756ed441d3c9bb5ce9fff8202cdc9edafd0d4c88323d2c5c7ed7a7b321dac8",
"question": "Spread: Hawks (-10.5)",
"outcome": "Spread -10.5",
"slug": "nba-atl-nop-2025-11-22-spread-away-10pt5",
"description": "In the upcoming NBA game, scheduled for November 22 at 7:00 PM ET:\n\nThis market will resolve to \"Hawks\" if the Hawks win the game by 11 or more points.\n\nOtherwise, this market will resolve to \"Pelicans\". If the game ends in a tie, this market will resolve to \"Pelicans\".\n\nIf the game is postponed, this market will remain open until the game has been completed. If the game is canceled entirely, with no make-up game, this market will resolve 50-50.",
"image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/super+cool+basketball+in+red+and+blue+wow.png",
"left_outcome": "Hawks",
"right_outcome": "Pelicans",
"left_price": "1.000",
"right_price": "0.001",
"left_token_id": "51363000362609959807464657776721974948318088721103617366498706951833989327973",
"right_token_id": "8700599864234240104662464466440295671498211095001926806984625502128149442187",
"winner_token_id": "51363000362609959807464657776721974948318088721103617366498706951833989327973",
"active": false,
"resolved": true,
"fees": false,
"decimals": 3,
"liquidity": "36650.62",
"volume": "41.69",
"volume24hr": "26.69",
"volume1wk": "26.69",
"volume1mo": "26.69",
"volume1yr": "26.69",
"rewards": {
"rate": 0,
"size": 0,
"spread": 0,
"holding": false,
"rewards": false
},
"created_at": "2025-11-22T23:10:25.417952",
"updated_at": "2025-12-28T07:48:40.163465",
"ends_at": "2025-11-23T00:00:00"
}
}
],
"participants": {
"0x176a56a10b952c4ab1acb234384e97c5574bbdf9": {
"address": "0x176a56a10b952c4ab1acb234384e97c5574bbdf9",
"proposals": 45,
"disputes": 2,
"settled_proposals": 40,
"successful_proposals": 38,
"failed_proposals": 2,
"settled_disputes": 2,
"successful_disputes": 1,
"failed_disputes": 1,
"total_bond": 22500,
"total_payout": 23750,
"net_pnl": 1250
}
},
"leaderboard": [
{
"address": "0x176a56a10b952c4ab1acb234384e97c5574bbdf9",
"proposals": 45,
"disputes": 2,
"settled_proposals": 40,
"successful_proposals": 38,
"failed_proposals": 2,
"settled_disputes": 2,
"successful_disputes": 1,
"failed_disputes": 1,
"total_bond": 22500,
"total_payout": 23750,
"net_pnl": 1250
}
]
}
}Body
application/json
WebSocket message type. Supported values: subscribe or unsubscribe.
Optional status filter. Only UMA requests matching these statuses are returned. Supported values: INITIALIZED, PROPOSED, DISPUTED, RESET, SETTLED, EMERGENCY_RESOLVED, MANUALLY_RESOLVED, CLARIFICATION.
Example:
["PROPOSED", "DISPUTED"]
Maximum initial requests to return. Capped at 250.
Example:
100
Pagination offset for initial requests.
Example:
0
Response
101 - application/json
WebSocket connection established
⌘I