Use the same Market Data credential (
stream.read) as the UMA WebSocket, with HMAC authentication and an active paid plan. There is no separate UMA key. Successful REST reads cost 1 API credit per response, including cached reads.These endpoints do not provide a full historical archive. There is no date-range filter, cursor, offset or backfill endpoint. Question and market lookups cover captured records still retained by the service.
/uma/recent returns at most 500 current question records, not a paginated event log.Make a signed request
Use your existing Market Data key and secret from Console, on an active paid plan. This example makes one REST request. A successful response costs 1 API credit. Keep the secret on your server.Node.js
200 with questions confirms that your authenticated REST read succeeded. An empty questions array reports no matching recent records; it does not establish complete historical coverage. A 401 only confirms an authentication refusal, not a successful read of resolution data.
Endpoints
Base URL:https://partner-api.bravadotrade.com. Sign every REST request with HMAC, including its sorted query parameters. JSON; ids are hex, payout is an integer micro-USDC string.
GET /uma/question
The captured, retained lifecycle state of one question. Stage objects are present only when Bravado has captured that stage; a record is not a guarantee of complete event history.
string
required
The
0x 32-byte question_id.string
Hex question id (
keccak256(ancillaryData)).string
Hex CTF condition id for the market.
string
Human-readable market question (from the ancillary data).
string
Latest answer:
yes · no · 50-50 · too-early · other.boolean
Whether the resolution has finalized on-chain.
object
object
Same shape as
proposed, plus disputer. Present only if the proposal was disputed.object
Same shape, plus
payout (micro-USDC string). Present once settled.integer
When Bravado last updated this record (unix ms).
Example response
GET /uma/market
The same retained record as /uma/question, looked up by the market’s CTF condition id. It has the same coverage and retention limits.
string
required
The
0x 32-byte CTF condition id.GET /uma/recent
Recently updated question records, newest first by last update. Each question appears with its current captured state, not as one row per proposal, dispute or settlement event. The stage filter selects the current stage: a question that has settled is not returned as proposed even if its record includes an earlier proposal.
string
Filter by current stage:
proposed · disputed · settled. Omit for all.integer
default:"100"
Max question records in this response (1–500). This is a result cap, not a page size: there is no cursor, offset or next page.
array
Array of question records (same shape as
GET /uma/question).integer
Number of records returned.
Missing records and freshness
- A
404from a question or market lookup means no retained record is available for that ID. It does not establish that the market never existed, never resolved or never had a dispute. - A missing
proposed,disputedorsettled_atobject means that stage is absent from the captured record. Do not infer a complete event history from omitted fields. updated_msis the record’s last update time, not the time of your request. Responses can be cached; a cached response may also be served during an upstream interruption. Check this timestamp before relying on freshness.- A
502can indicate that the resolution feed is unavailable. Do not interpret it as an empty result or an unresolved market.
401), credential scope and active paid plan (403), and credit allowance (402). See HMAC authentication and API credits.