Skip to main content
Most first integrations trip on the same few behaviors: a 200 that isn’t an acceptance, amounts off by a factor of a billion, and signatures the exchange rejects. Each question below names the symptom and its one-line fix, with a link to go deeper. Why did my request return 200 but not execute? A 200 OK means the request was processed, not accepted. Signed writes return a RequestAck — branch on status, where request_completed is the only accepted outcome; account, master-key, and session writes return a success boolean instead. See the error model. Why is my price or size off by a factor of billions? The API never accepts decimals. price, quantity, and cash amounts are raw integers at fixed scales (PriceOfAtom, Atoms, CentiCents), so a human number like 50000 is wrong by orders of magnitude. Multiply by the scale and floor before sending — see markets, assets, and precision. Why does my quantity decide the side? The sign of quantity is the side: positive is long/buy, negative is short/sell. There is no separate side field, so a positive number you meant as a sell opens a long. Set the sign deliberately on every order — the precision page above shows worked long and short examples. Why is my signature rejected? A 401 almost always means one of two things: you used URL-safe base64 instead of standard (+ / / with = padding), or you signed the wrong bytes for your curve. A stale request_id is a separate failure — it returns 400 request_timestamp_skew, not 401, so generate a fresh UUIDv7 at send time and keep your clock in sync. Work through the signing checklist. Where is the SDK? There is no official SDK yet; one is coming. Until it ships you build and sign every request by hand, following the signing guide. The SDKs page tracks status. Why did my read return 404 for something I own? Scope is fail-closed. A credential pinned to one subaccount reports anything outside its scope as 404 Not Found, not 403, so a 404 on a resource you own usually means you queried it with a credential pinned elsewhere. Use a credential whose scope reaches the resource — see read credentials. Why did my deposit or conditional order get rejected? Some surface area is not live yet. Spot deposit and withdraw are rejected with 400, and there is no REST endpoint for conditional, stop, or take-profit orders. Self-trade prevention is accepted on the wire but not enforced. Stick to what the Trading API reference documents today.