Skip to main content
POST
/
data
/
orders
Get orders by IDs
curl --request POST \
  --url https://clob.forka.st/data/orders \
  --header 'Content-Type: application/json' \
  --data '
[
  {
    "orderId": "01K9NG3X48S6PWR9E703B70W02"
  },
  {
    "orderId": ""
  },
  {
    "orderId": "01NONEXISTENT"
  }
]
'
[
  {
    "orderId": "01K9NG3X48S6PWR9E703B70W02",
    "status": 200,
    "order": {
      "associateTrades": [
        "01K9NG5JM4N0C9S1XYVW3XG6R0"
      ],
      "id": "01K9NG3X48S6PWR9E703B70W02",
      "status": "matched",
      "market": "0xf15d606b67011df3589a141a2deecc705ce8c4ce06754db4c4d7ef71f6232789",
      "originalSize": "10.000000",
      "outcome": "30630994248667897740988010928640156931882346081873066002335460180076741328029",
      "makerAddress": "0xD88606365c43dC601310861ffFE38ccE69b8cDeA",
      "owner": "01HZX9NEJB9J4M68P6Y3VQ0WPS",
      "price": "0.683200",
      "side": "BUY",
      "sizeMatched": "10.000000",
      "assetId": "30630994248667897740988010928640156931882346081873066002335460180076741328029",
      "expiration": "0",
      "type": "GTC",
      "createdAt": "2025-11-09T23:39:37.411Z",
      "updatedAt": "2025-11-09T23:39:41.782Z"
    },
    "error": null
  },
  {
    "orderId": "",
    "status": 400,
    "error": "order_id_cannot_be_empty"
  },
  {
    "orderId": "01NONEXISTENT",
    "status": 404,
    "error": "order_not_found"
  }
]
Request multiple orders (between 1 and 500 ULIDs) in a single call. Each entry mirrors GET /data/order/{id}, so you can refresh many orders without issuing repeated requests.
No authentication headers are required. Responses always use HTTP 207 Multi-Status, and each array element carries its own status, order, and error fields.

Request body

Send a JSON array of { "orderId": "<ULID>" } entries:
FieldTypeRequiredDescription
orderIdstringYesULID of the order to fetch (case-insensitive). Leave empty only if you need to test error handling; blank values return order_id_cannot_be_empty.
The array must contain at least 1 and no more than 500 entries. Duplicate ULIDs are allowed and simply return duplicate responses.

Response semantics

  • The HTTP status is always 207 Multi-Status. Each element in the response array includes the original order_id, an integer status, and either order (when the lookup succeeded) or error (for failures).
  • status: 200order contains the same structure documented for the single-order endpoint, and error is null/omitted.
  • status: 400 — validation failure for that entry (currently only order_id_cannot_be_empty).
  • status: 404order_not_found when the ULID does not exist.
  • status: 500 — unexpected backend issue; the error string surfaces the internal failure reason.

Per-entry fields

FieldTypeDescription
order_idstringULID echoed from the request (blank if the original entry was blank).
statusintegerEntry-specific status code (200, 400, 404, or 500).
orderobjectPresent only when status is 200. Structure detailed below.
errorstringPresent only when status is not 200. Includes values like order_id_cannot_be_empty, order_not_found, or internal_error.

Order fields

When status is 200, the order object exposes the same attributes as [GET /data/order/{id}]. Key fields are summarized below:
FieldTypeDescription
associateTradesstring[]Trade identifiers linked to this order. Empty when no matches occurred.
idstringULID assigned to the order.
statusstringLifecycle state: live, matched, delayed, or unmatched.
marketstringMarket identifier associated with the order.
originalSizestringSize requested when the order was submitted.
outcomestringMarket outcome identifier (market address + outcome index).
makerAddressstringAddress that funded the maker side.
ownerstringAPI key owner recorded with the order when available.
pricestringLimit price formatted with fixed precision.
sidestringEither BUY or SELL.
sizeMatchedstringTotal quantity matched so far.
assetIdstringToken identifier for the traded outcome.
expirationstringExpiration timestamp in Unix seconds.
typestringExecution policy (GTC, GTD, FAK, FOK).
createdAtstringISO-8601 timestamp for when the order was inserted.
updatedAtstringISO-8601 timestamp for the most recent update (fill, cancel, etc.).

Body

application/json
Required array length: 1 - 500 elements
orderId
string
required

Order ULID to fetch (case-insensitive).

Example:

"01K9NG3X48S6PWR9E703B70W02"

Response

Multi-status response with per-order status entries.

orderId
string
required

Order ULID echoed from the request (may be blank when the caller supplied an empty string).

status
integer
required

HTTP-style status code for the individual entry (200, 400, 404, or 500).

Example:

200

order
object

Full order payload, present only when status is 200.

error
string

Machine-readable error string populated when status is not 200.

Example:

"order_not_found"