Skip to content

GuidesBuild schemas by venue

Step zero — from nothing to your first trade

Section titled “Step zero — from nothing to your first trade”

PredictStreet settles on ADI Chain and holds your collateral in a vault that belongs to your account, not to Predictefy.

  1. Create the account and its vault. Start at adipredictstreet.com and provision the caller-specific vault. The vault must exist before you can build an order — the execution lane resolves vaultOf and will not create one for you.
  2. Obtain the API key. Provision the account and vault first, then obtain its PredictStreet API key. You need it before submitting, though not to build.
  3. Connect the signing EOA. An EOA on ADI Chain (36900) signs the VAULT-type EIP-712 order. That private key stays in your process; only the signature crosses the API.
  4. Fund the vault. Deposit six-decimal ADI-chain USDC.e: approve the dynamic vault, then call depositERC20. There is no hosted funding helper for this venue.
  5. Check access. This lane is default off and unregistered — an empty or unknown-only PREDICTSTREET_EXCHANGE_ADDRESSES registers nothing. Call GET /v1/exec/venues before building, and note the lane serves build and submit only, with no hosted cancel.
  • Production status: Armed for build and submit as verified on 2026-08-15; cancel, caller-key status refresh and native account reads were added on 2026-09-19 (see below).
  • Wallet and chain: An EOA on ADI Chain (36900) signs a VAULT-type EIP-712 order.
  • Venue account: Yes. Provision the caller-specific PredictStreet vault before building and obtain the caller’s PredictStreet API key before submitting.
  • Credentials: The EOA private key stays client-side. The API key transits only submit, after signature recovery over the stored digest, and is never retained.
  • Funding: Deposit six-decimal ADI-chain USDC.e into the caller’s vault. Approve that dynamic vault and call depositERC20; the execution lane only resolves vaultOf and has no funding helper.

PredictStreet is a strict server-built lane with no client-echo compatibility path. It is source-ready but default off and unregistered. An empty or unknown-only PREDICTSTREET_EXCHANGE_ADDRESSES registers nothing; check GET /v1/exec/venues before building.

Send the native decimal token id as asset, or outcome + outcomeSide, with isBuy, a 0.01-tick probability-dollar price from 0.01 through 0.99, up to six-decimal share size, and the EOA owner. Optional expiresAt: 0 builds GTC, postOnly defaults false, and the only accepted signature type is VAULT 1. The server resolves the catalog outcome, then rechecks the live condition id, token id, open/tradable state, taker fee, and NegRisk flag. It also calls the verified VaultFactory’s read-only vaultOf(owner); a missing vault fails before any execution is persisted.

The artifact pins ADI Chain 36900, six-decimal USDC.e 0x9cb8142aEBBcdc60AF7c97Af897A67A8f3CA71C2, buildVersion: 1, and EIP-712 domain PredictStreet version 1. Standard markets use exchange 0x90EA87493E208A14011EC700Ac9cbAf4d064acc0; NegRisk markets use 0x79ACbb874dd01044FA38a89c1478E60FaAB40D00. The signed 11-field order is salt, maker, signer, taker, tokenId, makerAmount, takerAmount, expiration, feeRateBps, side, and signatureType. BUY notional rounds up one collateral atom; SELL notional rounds down.

Sign the returned typed data in the owner’s wallet. Submit { executionId, signature, owner, apiKey }. Predictefy validates the versioned server-stored artifact and recovers the signer over its stored digest before it reads the API key. It then relays that exact stored order once and discards the key. Hosted settlement is not implemented. Predict Street Limited states it operates under Gibraltar licence 167, and FIFA names it the official prediction-market partner of the FIFA World Cup 2026; jurisdiction and user eligibility remain the operator’s and integrator’s compliance responsibility.

What the lane carries beyond build and submit (2026-09-19)

Section titled “What the lane carries beyond build and submit (2026-09-19)”

Every verb below authenticates with the caller’s own PredictStreet API key, sent once and never stored. The key needs the matching scope: orders:write for submit and cancel, orders:read for status and fills, portfolio:read for positions and balances.

  • Wallet attribution — every authenticated request carries X-User-Wallet beside the key: the stored order’s signer for place, cancel and status, the owner you state for account reads. PredictStreet requires that header for multi_wallet partner keys and ignores it for single_wallet keys; you never send it yourself.
  • Cancel — POST /v1/exec/predictstreet/orders/{id}/cancel builds a cancel artifact from the stored order only (it accepts no fields); submit { executionId, owner, apiKey }. Only the venue’s exact cancelled receipt for that order id maps to canceled. PredictStreet answers not_found (HTTP 200) for an unknown order and for one that is already terminal, so that answer is reported as unconfirmed — refresh the order to learn which.
  • Status refresh — POST /v1/exec/predictstreet/orders/{id}/refresh with { owner, apiKey } reads the order by id. The answer is used only when its id, wallet, vault and client order id all belong to the stored execution; otherwise the stored status is kept and the response’s observation.reason says why. Fills are appended only when the recorded fills plus the venue’s new trades add up to the order’s filledQty exactly; when they do not, the status still follows the venue and observation.fillsReconciled is false. A failed order (rejected, or settlement failed) records no fills. There is no credential-free background poll.
  • Positions and balances — POST /v1/exec/predictstreet/positions and /balance with { owner, apiKey } (positions also accept filter: open by default, or won, lost, voided, all). The answer must be for the wallet you named: a single_wallet key answers for its own bound wallet, and a mismatch is refused rather than served. Accounting fields appear only where the venue returned them; balances keep the venue’s decimal strings verbatim. A paginated positions answer is refused for now, because the venue does not document its cursor parameter.
  • Redeem / settlement — not implemented. PredictStreet’s gasless redeem needs an owner-signed EIP-712 RedeemAuthorization whose field types the venue has not published; intent: "redeem" stays 501 NOT_IMPLEMENTED until it does.
  • Modify, batch cancel, cancel-all, open-orders listing — not implemented.