Skip to main content
The DRO Resolution API is an on-chain contract API. There is no public REST endpoint that submits a final result. A proposer wallet reads the DRO adapter request, signs a transaction with its private key, and calls the Direct Resolution Oracle contract. For the operator-facing incentive model, bonded user reports, fee split, and Security Reserve, see DRO Resolution & Rewards.
DRO resolution flow from market rules and proposer validation through the on-chain resolution transaction and platform synchronization
DRO resolution is final for approved proposers. Always verify the market rules and the listed resolution source before signing.

Before you sign

Confirm the market

Match the event, question ID, adapter, resolution rules, source, and cutoff time.

Confirm the signer

Verify that the proposer wallet is whitelisted for the market creator.

Confirm the network

Use the RPC, chain ID, and contract addresses for the market’s deployment.

Confirm finality

Treat the selected outcome and submitted resolution transaction as final.

When to use DRO

A market is a DRO market when its metadata has resolution_type: "dro_moov2" or when its resolver/oracle address is one of the configured DRO contracts.

Required inputs

The proposer wallet must be listed in the creator’s proposer whitelist. The platform checks that by reading:
  1. CreatorProposerWhitelistRegistry.whitelistOf(creator)
  2. CreatorProposerWhitelist.getProposers()

Outcome prices

unknown is only supported for standard DRO markets. Do not use it for neg-risk markets.

Resolution flow

1

Check proposer permission

Read the creator’s proposer whitelist and confirm the signer wallet is listed.
2

Read the adapter request

Call adapter.getQuestion(adapterQuestionId) and use the returned requestTimestamp and ancillaryData.
3

Confirm request state

Stop if requestTimestamp is 0, ancillaryData is empty, or resolved is already true.
4

Submit the final result

Call proposeAndResolve for standard DRO or proposeAndResolveNegRisk for neg-risk DRO.
5

Wait for sync

After the transaction confirms, the resolution sync job reads the resolution subgraph and updates market status, outcome payouts, caches, and event state.

Contract calls

Standard DRO:
Neg-risk DRO:
YES_OR_NO_IDENTIFIER is:

Complete Scripts

Each script uses the same environment variables:

After submission

1

Confirm the receipt

Wait for a successful transaction receipt and store its hash with the market question ID and selected outcome.
2

Watch resolution sync

Confirm /api/sync/resolution completes and the event reflects the final payout state.
3

Investigate before retrying

If the transaction succeeded but the site has not updated, inspect sync logs and indexed resolution data. Do not submit a second resolution transaction only to force a refresh.