RIP.BET Docs

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, the prepare flows (orders, cancels, conversions) require an active approved agent wallet; if the API returns outcome_agent_not_approved, call POST /v1/agent/approve first, then retry the prepare step.

When the deployment gates access (waitlist enabled), every protected outcome route — both prepare and submit, plus reads such as open orders and order-status — also enforces RIPBET allowlist access and returns 403not_allowlisted for a waitlisted user, or access_revoked for a blocked or revoked user. The one exception is GET /v1/outcomes/conversions/history, which is JWT-only.

List markets

curl -s "{API_BASE_URL}/v1/outcomes/meta"

The response includes:

FieldMeaning
outcomeIdMarket outcome id
nameDisplay name
sidesTradable sides and coins
expiredTerminal state
settlingIn settlement or grace window
questionsRelated 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.

On this page