Skip to content
Get an API key
  • Production status: Client-side only, by owner decision on 2026-08-18. There is no hosted Smarkets execution lane and none is planned; GET /v1/exec/venues never lists Smarkets, and every /v1/exec/smarkets/… route answers 404 VENUE_NOT_SUPPORTED. Trading runs through the venue-direct SDK client at client.accounts.smarkets.
  • Wallet and chain: None. Smarkets is an off-chain fiat exchange; there is no signer, no chain, and no on-chain artifact anywhere in this lane.
  • Venue account: Yes, and it must be approved by Smarkets as an API user. An ordinary account that has not been granted venue API access is rejected by Smarkets itself. That approval is granted by the venue, not by Predictefy.
  • Credentials: Your Smarkets account email and password. They are sent only from your process directly to api.smarkets.com and never transit Predictefy. The session token they produce is held in volatile memory and is never logged, returned, persisted, or sent to Predictefy.
  • Funding: The venue’s own GBP card or bank rails. The funding registry records fundingClass: fiat_custodied with no collateral asset, no chain, and no hosted deposit helper.

This is a custody decision, not a missing integration.

Smarkets authenticates with a full account login. It publishes no scoped, revocable API key that could be limited to order placement — the same credential that places an order can also read the account and move money. A hosted lane would therefore mean relaying, to Predictefy’s servers, a credential that controls the caller’s entire Smarkets account. That crosses the custody line this platform does not cross: Predictefy holds no user funds and no user credentials, and the way it keeps that promise is by never being on the path where an account credential travels.

So the credential doctrine here is stricter than on the hosted lanes, not looser. On a hosted lane a transient venue credential passes through the execution service for exactly one request and is then discarded. On Smarkets, nothing passes through at all.

A hosted lane remains a future maybe — if Smarkets ships scoped, revocable API credentials, the objection above disappears and the decision can be revisited. It is not planned work today, and nothing on this page should be read as a commitment to build it.

import Predictefy from '@predictefy/sdk';
const client = new Predictefy({
apiKey: process.env.PREDICTEFY_API_KEY,
venueCredentials: {
smarkets: {
email: process.env.SMARKETS_EMAIL!,
password: process.env.SMARKETS_PASSWORD!,
},
},
});
const order = await client.accounts.smarkets.createOrder({
marketId: '...',
outcomeId: '...',
side: 'buy',
amount: 5,
type: 'limit',
price: 0.5,
});
const cancelled = await client.accounts.smarkets.cancelOrder(order.id);
Verb Venue call Notes
createOrder POST /v3/orders/ type: 'limit' sends good_til_halted; type: 'market' sends an aggressive immediate_or_cancel limit at buy 9999 / sell 1
cancelOrder DELETE /v3/orders/{id}/, then a read-back of the cancelled order Returns the venue’s own post-cancel order state rather than an assumed one

amount is your own money at risk — back stake on a buy, lay liability on a sell — not Smarkets’ quantity pot. At venue price p, the back stake is quantity × p / 100,000,000 and the lay liability is quantity × (10,000 − p) / 100,000,000. The client converts your amount into a venue quantity and floors it, so the relevant contribution can never exceed what you asked for.

Three limits on this lane come from Smarkets and would not change if a hosted lane existed:

  • No modify. Smarkets exposes no order-amend verb, so there is none to wrap. Cancel and replace.
  • MFA is unsupported. This client does not accept MFA secrets, so a login that returns an MFA factor raises NOT_SUPPORTED rather than prompting. Use an account without MFA, or do not use this lane.
  • No WebSocket and no deep tape. There is no Smarkets streaming lane. The public trades tape is real but hard-capped by the venue at five fills per outcome, and the venue accepts no tape parameters at all, so limit is applied locally and a window older than those five reachable fills returns fewer rows rather than a fabricated one. Public quotes are also delayed by the venue. See Venue coverage.

fetchPositions is likewise unsupported: Smarkets publishes exposure but no positions resource, and this lane does not derive one.