Skip to main content
POST
/
api
/
vault
/
convert-signature
Co-sign a NegRisk position convert (NO-basket → USDC)
curl --request POST \
  --url https://core-api.adipredictstreet.com/api/vault/convert-signature \
  --header 'Content-Type: application/json' \
  --data '
{
  "marketId": "PM-WC26-WIN-FRA-WC26-1910V2",
  "indexSet": "14",
  "amount": "1000000"
}
'
{
  "signedOpId": "<string>",
  "digest": "<string>",
  "backendSig": "<string>",
  "salt": "<string>",
  "deadline": 123,
  "marketId": "<string>",
  "indexSet": "<string>",
  "amount": "<string>",
  "vaultAddress": "<string>",
  "tokenIds": [
    "89348190...",
    "15823942...",
    "60912834..."
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.adipredictstreet.com/llms.txt

Use this file to discover all available pages before exploring further.

Body

application/json
marketId
string
required

Off-chain market symbol (admin-issued), e.g. "PM-WC26-WIN-FRA-WC26-1910V2". Server resolves to the on-chain bytes32 NegRisk marketId via admin.market_deployments.confirmed_ids_json->>"marketId" — NegRisk-only lookup, binary markets fail closed with market_not_found.

Example:

"PM-WC26-WIN-FRA-WC26-1910V2"

indexSet
string
required

uint256 indexSet bitmap over outcomes to collapse, decimal string. Each bit set marks an outcome whose NO position is being burned. Server converts to bigint at the EIP-712 boundary. Example: a 4-outcome market collapsing NO_1 + NO_2 + NO_3 → indexSet = 0b1110 = 14. Empty (0) and full-universe (every outcome) sets are rejected.

Example:

"14"

amount
string
required

uint256 base-units (decimal string) — burned per outcome bit set in indexSet. NOT human-decimal: pass raw uint256 since CTF outcome tokens already mint 1:1 against 6-decimal USDC. Empty / zero rejected.

Example:

"1000000"

Response

200 - application/json
signedOpId
string
required

Server-side convert correlation id — exchange.signed_ops.id UUID.

digest
string
required

EIP-712 digest the user must sign with their EOA private key. The returned backendSig is over this exact digest; both signatures are submitted on-chain to vault.convertPositions(...).

backendSig
string
required

0x-hex backend EIP-712 signature over digest.

salt
string
required

uint256 EIP-712 salt (decimal string).

deadline
number
required

uint256 EIP-712 deadline (Unix seconds).

marketId
string
required

bytes32 NegRisk on-chain marketId — the value the contract expects in convertPositions(marketId, ...). Distinct from the off-chain marketSymbol in the request: this is the resolved on-chain identifier.

indexSet
string
required

uint256 indexSet bitmap (decimal string), echoed back.

amount
string
required

uint256 base units echoed back.

vaultAddress
string
required

Per-user vault address (EIP-712 verifyingContract).

tokenIds
string[]
required

Ordered list (ascending outcome index) of decimal-string tokenIds the convert will BURN. Lets clients preview/display the operation without re-deriving the indexSet → tokenId mapping.

Example:
["89348190...", "15823942...", "60912834..."]