Skip to main content
GET
/
kalshi
/
orders
cURL
curl --request GET \
  --url https://api.example.com/kalshi/orders
{
  "orders": [
    {
      "kalshiOrderId": "<string>",
      "userId": "<string>",
      "marketId": "<string>",
      "side": "yes",
      "action": "buy",
      "requestedQuantity": 123,
      "filledQuantity": 123,
      "filledUusdc": 123,
      "priceUusdc": 123,
      "chain": "<string>",
      "status": "pending",
      "createdAt": 123,
      "updatedAt": 123
    }
  ],
  "pagination": {
    "total": 123,
    "hasMore": true,
    "nextCursor": "<string>"
  }
}

Overview

Retrieve orders for a user with flexible filtering and cursor-based pagination. This endpoint supports filtering by status, market, action, side, and date range, with server-side sorting and efficient pagination for large order histories.

Filtering by Status

The status parameter accepts:
  • pending - Orders waiting to be filled
  • filled - Fully executed orders
  • cancelled - Cancelled orders
  • closed - Convenience filter for both filled and cancelled orders (useful for order history)

Pagination

This endpoint uses cursor-based pagination for efficient traversal of large datasets:
  1. Make an initial request with your desired limit (default: 50, max: 200)
  2. Check pagination.hasMore to see if more results exist
  3. Use pagination.nextCursor in subsequent requests to fetch the next page
Cursors are opaque strings and should not be modified. They encode the position in the result set and are only valid for the same query parameters.

Example: Fetching Order History

# First page of closed orders, sorted by most recent
curl "https://api.bison.markets/kalshi/orders?userId=0x...&status=closed&sortBy=updatedAt&sortOrder=desc&limit=10"

# Response includes pagination info
# {
#   "orders": [...],
#   "pagination": {
#     "total": 47,
#     "hasMore": true,
#     "nextCursor": "eyJ0IjoxNzAyMzQ1Njc4OTAwLCJpZCI6ImFiYzEyMyJ9"
#   }
# }

# Fetch next page using cursor
curl "https://api.bison.markets/kalshi/orders?userId=0x...&status=closed&sortBy=updatedAt&sortOrder=desc&limit=10&cursor=eyJ0IjoxNzAyMzQ1Njc4OTAwLCJpZCI6ImFiYzEyMyJ9"

Example: Pending Orders

# Get all pending orders (typically a small set, no pagination needed)
curl "https://api.bison.markets/kalshi/orders?userId=0x...&status=pending"

Query Parameters

userId
string
required

Ethereum address of the user

Example:

"0x1234567890123456789012345678901234567890"

status
enum<string>

Filter by status. "closed" matches filled OR cancelled.

Available options:
pending,
filled,
cancelled,
closed
marketId
string

Filter by market ticker

action
enum<string>

Filter by order action

Available options:
buy,
sell
side
enum<string>

Filter by contract side

Available options:
yes,
no
createdAfter
number | null

Orders created after this timestamp (ms)

createdBefore
number | null

Orders created before this timestamp (ms)

sortBy
enum<string>

Field to sort by (default: createdAt)

Available options:
createdAt,
updatedAt
sortOrder
enum<string>

Sort direction (default: desc)

Available options:
asc,
desc
limit
number

Max orders per page (default: 50, max: 200)

Required range: 1 <= x <= 200
cursor
string

Pagination cursor from previous response

Response

Successfully retrieved orders

orders
object[]
required
pagination
object
required