Outcome markets
Outcome markets are HIP-4 markets with named outcomes and a fixed expiry.
They are optional. Check /v1/runtime-config and only show outcome UI when outcomes_enabled is true. When outcomes are disabled, outcome routes are unavailable.
Outcome reads expose metadata and price history. When outcome writes are
enabled, order and cancel prepare flows require JWT authentication, RIPBET
allowlist access, and an active approved agent wallet. If the API returns
agent_not_approved, call POST /v1/agent/approve first, then retry the
prepare step.
List markets
curl -s "{API_BASE_URL}/v1/outcomes/meta"
The response includes:
| Field | Meaning |
|---|---|
outcomeId | Market outcome id |
name | Display name |
sides | Tradable sides and coins |
expired | Terminal state |
settling | In settlement or grace window |
questions | Related question metadata |
Use sides[].coin for WebSocket outcome subscriptions and order preparation.
Price history
curl -s "{API_BASE_URL}/v1/outcomes/price-history?coins=%2336010"
URL-encode # as %23.
Transfer collateral
Outcome trading may require moving USDH into the right balance class. Use prepare/submit:
curl -s -X POST "{API_BASE_URL}/v1/outcomes/transfer/prepare" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{"amount":"25"}'
The user signs the returned transfer action. Submit the signature:
{
"actionHash": "0x...",
"signature": "0x..."
}
Place an outcome order
Prepare a limit order:
curl -s -X POST "{API_BASE_URL}/v1/outcomes/orders/prepare" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"outcomeId": 3601,
"side": 0,
"isBuy": true,
"sz": "95",
"mode": {
"kind": "limit",
"limitPx": "0.556"
}
}'
Prepare a market-style order:
{
"outcomeId": 3601,
"side": 0,
"isBuy": true,
"sz": "95",
"mode": {
"kind": "market",
"slippageBps": 300
}
}
The prepare response contains orderId, actionHash, connectionId, eip712Domain, and agentMessage. Sign the returned agent message, then submit:
{
"orderId": "9c07d350-0000-4000-8000-000000000000",
"actionHash": "0x...",
"hlSignature": "0x..."
}
Cancel
Outcome cancels use the same prepare/submit pattern:
{
"outcomeId": 3601,
"side": 0,
"cloid": "0x0123456789abcdef0123456789abcdef"
}
Read open orders and status
curl -s "{API_BASE_URL}/v1/outcomes/orders/open/0xabc..." \
-H "Authorization: Bearer $JWT"
curl -s -X POST "{API_BASE_URL}/v1/outcomes/order-status" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{"address":"0xabc...","cloid":"0x0123456789abcdef0123456789abcdef"}'
Provide exactly one of oid or cloid.