POST /exchange Success Response
When a write operation is accepted and processed, the server returns HTTP 200 withstatus: "ok":
string
Always
"ok" for HTTP-level success. Note that business-level errors can still appear inside response.data even when status is "ok".string
A server-generated unique identifier for this request. Include this value when contacting Upside support — it allows the team to trace the request through server logs.
string
Echoes the
action.type from the request. Useful for confirming which action the response corresponds to when processing responses asynchronously.object
Action-specific result data. For
order actions this contains a statuses array. For registerAccount this contains accountId. See each action’s reference page for the full data shape.POST /exchange Error Response
When the server rejects the request at the HTTP level (bad signature, malformed JSON, rate limit, etc.), it returns a non-200 HTTP status withstatus: "error":
string
Always
"error" for HTTP-level failures.string
Server-generated request identifier. Provide this to Upside support when reporting an issue.
string
Machine-readable error code. See Error Codes for the full list.
string
Human-readable explanation of the error. For
SIGNATURE_INVALID, this includes both the recovered address and the expected address to help you debug signing issues.Business-Level Errors
Some operations return HTTP 200 withstatus: "ok" but contain per-item errors inside response.data.statuses. This occurs when the request envelope is valid and signed correctly, but one or more of the operations within the request was rejected by the matching engine.
statuses corresponds to one item in the request’s array (e.g. one entry per order in orders[]). A successful item looks like {"resting": {"oid": 15}} or {"filled": {...}}. A rejected item looks like {"error": "<message>"}.
POST /info Response
Read query responses return HTTP 200 with the query result directly in the body. There is no wrapperstatus field — the body IS the data:
type, missing required fields), the server returns a non-200 status with an error body consistent with the exchange error format.
The requestId Field
EveryPOST /exchange response includes a requestId such as "req-144115188075855905". This is a globally unique identifier generated by the server for each incoming request. When you contact Upside support about a specific request — whether it succeeded unexpectedly, failed unexpectedly, or produced a surprising result — including the requestId allows the support team to locate the exact request in server logs and investigate efficiently.