GuidesBuild schemas by venue
PRED
What you need first
Section titled “What you need first”- Production status: Darked on 2026-08-13. PRED is absent from the 13 armed hosted lanes;
PRED_EXCHANGE_ADDRESSESis 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 —
buildCancelproduces a bounded cancel artifact for an acknowledged order and the cancel submit relaysDELETE /api/v1/order/{parentMarketId}/cancel; only the venue’s exactuser_cancelledreceipt for that order id maps tocanceled(cancel_noop,not_foundand any other answer are reported as unconfirmed). The registry row iscancelOrder: 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"stays501 NOT_IMPLEMENTEDby design. - Status refresh —
POST /v1/exec/pred/orders/{id}/refreshreads the parent market’s open orders with the caller’s JWT: an order still listed isacked(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 throughPOST /v1/exec/pred/positionsand/balancewith the JWT and wallet fields in the body (sent once, never stored; the keylessGETform answers400naming the POST form). While the lane is dark those routes answer as unsupported. Hosted registry states staynot_supportedand there is noclient.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.