Skip to content

GuidesBuild schemas by venue

  • Production status: Darked on 2026-08-13. PRED is absent from the 13 armed hosted lanes; PRED_EXCHANGE_ADDRESSES is empty. The build/sign contract below remains documentation for the source-ready lane and a possible caller-owned future arrangement.
  • Wallet and chain: A caller-owned PRED Safe on Base (8453) is the maker, and a distinct EVM EOA controlling that Safe signs the type-2 order client-side.
  • Venue account: A caller-owned PRED credential arrangement is required. Predictefy’s platform key is not accepted for orders made by caller-owned Safes.
  • Credentials: The source-ready submit shape uses the caller’s API key plus access and refresh JWTs for that one request; none is retained. There is no supported hosted credential path today.
  • Funding: Do not fund for hosted submit while the lane is dark. The registry verifies neither the collateral asset nor the Safe funding/enablement route and exposes no hosted helper.

PRED is a strict server-built Safe-maker lane and has no client-echo compatibility path. It ships default off and unregistered. PRED_EXCHANGE_ADDRESSES is empty by default and accepts only the three live-verified Base exchanges; a catalog market whose promoted parent contract is not armed fails closed. Check GET /v1/exec/venues rather than assuming a deployment enabled it.

Send asset ({bytes32 child market id}#0 Long or #1 Short), or the child outcome plus outcomeSide, with isBuy, selected-outcome probability price, size, Safe owner, and its distinct EOA signer. The server reads the parent id and verifying contract from catalog metadata, maps normalized buy/sell semantics to PRED Long/Short intent, fixes fee to 0 and signature type to 2, generates the 02 + 10-digit salt, and returns buildVersion: 1 with the complete typed data. The domain is Pred CTF Exchange, version 1, chain 8453; it is never a hardcoded exchange address.

Sign the stored digest with the EOA, then submit { executionId, signature, owner, apiKey, accessToken, refreshToken }. Artifact version/integrity and EOA recovery run before the lane reads any caller auth. Only { order, signature, owner } is persisted. The API key gates PRED login, the access JWT authenticates order placement, and all three values remain caller-supplied per request; the original rollout left whether that partner key could serve caller-owned Safes awaiting written founder confirmation. Superseded 2026-08-13: the venue answered that platform-key submissions are refused, so no Predictefy-hosted submit path is currently supported.

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

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

The darking above is only about arming. The lane itself now implements the venue’s documented order lifecycle, all authenticated with the caller’s own PRED JWT and wallet headers:

  • Cancel — buildCancel produces a bounded cancel artifact for an acknowledged order and the cancel submit relays DELETE /api/v1/order/{parentMarketId}/cancel; only the venue’s exact user_cancelled receipt for that order id maps to canceled (cancel_noop, not_found and any other answer are reported as unconfirmed). The registry row is cancelOrder: true; while the lane is dark the route still answers as unsupported because no exchange is armed.
  • Modify — no PRED modify lane. Hyperliquid is the only venue with one.
  • Redeem / settlement — PRED settles automatically (1.00 USDC per winning share, no claim endpoint), so there is nothing for a settlement lane to serve; intent: "redeem" stays 501 NOT_IMPLEMENTED by design.
  • Status refresh — POST /v1/exec/pred/orders/{id}/refresh reads the parent market’s open orders with the caller’s JWT: an order still listed is acked (remaining quantity reported); an order that is absent keeps its stored status with an explicit “unknown” observation, because PRED has no get-order-by-id and absence never proves a fill. No credential-free background poll exists.
  • Account reads — the lane implements native positions (GET /api/v1/portfolio/positions) and balance (GET /api/v1/portfolio/balance) with the caller’s JWT, reached through POST /v1/exec/pred/positions and /balance with the JWT and wallet fields in the body (sent once, never stored; the keyless GET form answers 400 naming the POST form). While the lane is dark those routes answer as unsupported. Hosted registry states stay not_supported and there is no client.accounts.pred.

Read this list as capability truth rather than as silence about verbs waiting behind the dark flag.

PRED Safe enablement is a separate high-risk flow: the venue asks for a raw secp256k1 signature over its returned transactionHash, without an EIP-191 prefix. Use signPredSafeTransaction from the TypeScript SDK. It rebuilds the canonical Safe EIP-712 hash from every returned transaction field, checks the token/spender/amount against the encoded ERC-20 approval, and refuses to sign any mismatch.