List Fills
Returns the caller’s fills (executions of their own orders) in execution-time order. Without an account_id filter, the response covers every account you can read, and an account is included only after its setup and the setup of your access to it have both completed.
/portfolio/fillsAuthorization
UDX-Access-KeyAPI key · headerrequiredOpaque API key ID.
UDX-Access-TimestampAPI key · headerrequiredUnix time in milliseconds, within 30 seconds of server time.
UDX-Access-SignatureAPI key · headerrequiredStandard-base64 RSA-PSS/SHA-256 signature with a 32-byte salt.
AuthorizationBearer token (JWT) · headerrequiredBearer token for an active signed-in UDX user.
Header parameters
UDX-VersionstringDated API version (YYYY-MM-DD).
tickerTickerFilter by market ticker.
order_idEntityIdFilter to fills of a single order.
account_idEntityIdFilter to an account the caller can read.
client_order_idClientIdFilter by the client-assigned order identifier.
parent_order_idEntityIdFilter by the exchange-assigned parent order identifier.
execution_idEntityId[]Filter by exchange-assigned execution identifiers. Repeat this parameter to select multiple executions.
executed_on_or_afterstring<date>Return fills whose exchange-assigned execution trading date is on or after this date (inclusive).
executed_on_or_beforestring<date>Return fills whose exchange-assigned execution trading date is on or before this date (inclusive).
executed_at_or_afterstring<date-time>Return fills executed at or after this instant.
executed_at_or_beforestring<date-time>Return fills executed at or before this instant.
limitintegerMaximum number of items to return in one page.
pagestringOpaque token identifying the requested page.
orderstringSort direction. Applies to the default sort field when sort is omitted. Nulls sort last in both directions.
ascdesc200A page of the caller's fills.
fillsFill[]requiredOne page of fills.
Show propertiesHide properties
Filltrade_idstringrequiredExchange-assigned trade identifier.
order_idEntityIdrequiredAn exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.
client_order_idClientIdA client-supplied correlation identifier.
account_idstringrequiredThe account the filled order was placed under.
tickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
sideOrderSiderequiredOrder side.
buysellpricestringrequiredFill price, in YES dollars.
quantitystringrequiredContracts filled.
feestringrequiredFee collected for this execution.
is_takerbooleanrequiredWhether the caller's order was the aggressor (taker) of the trade.
executed_atstring<date-time>requiredWhen this fill's execution occurred.
next_page_urlNextPageURL | nullrequiredRoot-relative URL for the next page. Null when there are no more items.
400The request doesn't conform to this spec.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
401No valid credential was provided.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
403The credential lacks the read scope.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
429The member rate limit was exceeded.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
500Something went wrong on UDX's side.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
503Request admission or account setup is unavailable, or the read could not be completed in time; retry.
typestring<uri-reference>requiredA stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
titlestringrequiredA localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
statusintegerrequiredThe HTTP status code, repeated from the response itself.
detailstringA localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
instancestring<uri-reference>An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
curl -X GET "https://api.underdogexchange.com/portfolio/fills" \
-H "UDX-Access-Key: API_KEY_ID" \
-H "UDX-Access-Timestamp: UNIX_MILLISECONDS" \
-H "UDX-Access-Signature: BASE64_SIGNATURE"{
"fills": [
{
"trade_id": "BP1ZQ131E04J",
"order_id": "BK9BZNTK8022",
"client_order_id": "order-20260804-001",
"account_id": "6820943174116859281",
"ticker": "UDX-EXAMPLE-MULTI",
"side": "buy",
"price": "0.05",
"quantity": "2",
"fee": "0.03",
"is_taker": true,
"executed_at": "2026-01-01T00:00:00.000000Z"
}
],
"next_page_url": null
}{
"type": "urn:udx:problem:invalid-request-parameters",
"title": "Bad Request",
"status": 400,
"detail": "invalid request parameters",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:unknown-version",
"title": "Bad Request",
"status": 400,
"detail": "unknown UDX-Version \"1999-01-01\"; supported versions: 2026-07-15",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:invalid-authentication-credentials",
"title": "Unauthorized",
"status": 401,
"detail": "invalid authentication credentials",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:insufficient-permissions",
"title": "Forbidden",
"status": 403,
"detail": "insufficient permissions",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:member-rate-limit-exceeded",
"title": "Too Many Requests",
"status": 429,
"detail": "this member has temporarily exceeded its request rate",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:internal-error",
"title": "Internal Server Error",
"status": 500,
"detail": "internal error",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:projection-unavailable",
"title": "Service Unavailable",
"status": 503,
"detail": "account setup is still being completed; retry later",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:request-admission-unavailable",
"title": "Service Unavailable",
"status": 503,
"detail": "request admission is temporarily unavailable",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}{
"type": "urn:udx:problem:could-not-process-retry",
"title": "Service Unavailable",
"status": 503,
"detail": "could not process request, please retry",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}