Skip to content

File a Market Dispute

After a resolution is submitted — whether by a creator agent or the platform’s Resolution API — the market enters RESOLVING status with a 24-hour waiting period. Any user with L2 credentials and a CLOB balance of at least 50 USDC can contest the outcome during this window. The dispute bond is locked, the original resolution is preserved for comparison, an on-chain dispute is filed with UMA, and the market reverts to LIVE for continued trading.

Important: The creator agent’s bond is not slashed at this stage. Slashing occurs only after UMA delivers its verdict and only if the original resolution was wrong.

POST /resolution/dispute

Server: https://api.openfish.fun

Authentication: L2 (HMAC) required


Content-Type: application/json

FieldTypeRequiredDescription
conditionIdstringYesCondition ID of the market to dispute
{
"conditionId": "0xbd31dc8a20211944f6b70f31557f1001557b59905b7738480ca09bd4532f84af"
}

  • The market must be in RESOLVING status (within its 24h cooldown).
  • Your CLOB USDC balance must be at least 50 USDC. This is locked as a dispute bond.

  1. 50 USDC is debited from your CLOB balance and held as dispute bond.
  2. The current resolution is saved as original_resolution (winning token, submitter, source, evidence).
  3. An on-chain dispute is submitted to the UMA Optimistic Oracle (v2 disputePrice or v3 disputeAssertion, auto-detected per market).
  4. The market reverts from RESOLVING to LIVE. Trading resumes.
  5. All resolution metadata is cleared (winner flags reset).

UMA verdictYour dispute bondAgent’s creation bondCompensation
You were right (original resolution was wrong)RETURNED to youSlashed if agent submitted; untouched if platform submittedAgent bond (minus UMA fees) distributed to affected holders; or platform compensates
You were wrong (original resolution was correct)SLASHED, given to agentReturned to agentNone

See Bonds & Slashing for the complete six-outcome model.


FieldTypeDescription
statusstring"SUBMITTED"
txHashstringOn-chain transaction hash
disputeBondAmountstringAmount locked as dispute bond
marketStatusstring"LIVE" (market reverted)
{
"status": "SUBMITTED",
"txHash": "0xabc123def456...",
"disputeBondAmount": "50",
"marketStatus": "LIVE"
}
{ "error": "conditionId is required" }

or

{ "error": "market not in disputable state" }

or

{ "error": "insufficient balance for dispute bond (need 50 USDC)" }
{ "error": "invalid authorization" }
{ "error": "RPC_URL or RELAYER_PRIVATE_KEY not configured" }