Returns the single fill belonging to the requested account for the given trade ID. Requires the address query parameter (optional accountIndex selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a tradeId; this returns the leg owned by the requested account. No authentication header is required.
The response body shown here is a static example, not live data. After you click Send, your live result appears in a separate panel headed 200 OK. The panel under the status-code tabs is a fixed sample from the spec — its field values (fees, prices, sizes, IDs, timestamps) are placeholders. Use Send, or call the endpoint, for current values.
Returns the single fill belonging to the requested account for the given trade ID. Requires the address query parameter (optional accountIndex selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a tradeId; this returns the leg owned by the requested account. No authentication header is required.
Path Parameters
tradeId
string
required
Trade identifier of the fill (the tradeId field returned by GET /v1/fills). A non-integer value → 400.
Example:
"12345"
Query Parameters
address
string
required
Master Ethereum address for this API key (must match address from POST /createApiKey for the same key). Required on REST for account-scoped reads and for place/cancel. Invalid hex → 400; mismatch with key → 403.
20-byte EVM address as hex: optional 0x or 0X prefix and exactly 40 hexadecimal digits. API responses normalize to lowercase a–f after 0x.
Pattern: ^(0x|0X)?[0-9a-fA-F]{40}$
accountIndex
integer
default:0
Subaccount index (0–9) to scope the request to. Defaults to 0 (the primary account). Values above 9 → 400.
Required range: 0 <= x <= 9
Response
Fill details.
Unified fill shape used across REST responses, WebSocket snapshots, and streaming updates. Fields only available from the store are optional and may be absent in streaming updates.
tradeId
string
required
Unique trade identifier.
Example:
"12345"
orderId
string
required
Order ID that generated this fill.
Example:
"order-abc-123"
marketId
integer
required
Perpetual market identifier (uint16). Map to display name via GET /markets. Used for orders, positions, funding, and market metadata.
Required range: 0 <= x <= 65535
marketDisplayName
string
required
Market symbol (e.g. BTC-USD).
Example:
"BTC-USD"
side
enum<string>
required
Order side.
Available options:
BUY,
SELL
originalSize
string
required
Original order size in human-readable base-asset units (decimal string).
Example:
"1.0"
size
string
required
Fill size in human-readable base-asset units (decimal string).
Example:
"0.01"
price
string
required
Fill price in human-readable USD (decimal string).
Example:
"50000.5"
fee
string
required
Fee amount (decimal string). On the liquidated leg of an engine liquidation this is the liquidation penalty (the market's liquidation fee rate applied to the fill notional, paid to the insurance fund) — "0" when the market has no liquidation fee configured. ADL legs carry no fee.
Example:
"0.5"
role
enum<string>
required
Liquidity role. MAKER rested on the book, TAKER crossed it.
Available options:
MAKER,
TAKER
createdAt
integer<int64>
required
Fill timestamp (epoch microseconds).
address
string
Ethereum address (lowercase 0x + 40 hex). Only present on REST and snapshot responses.
Example:
"0x0000000000000000000000000000000000000000"
accountIndex
integer
Account index (account index, 0–9). Identifies the account for orders, positions, fills, and API keys.
Required range: 0 <= x <= 9
clientId
string
Client-provided order ID. Only present on streaming updates.
closedPnl
string
Realized PnL for this fill (decimal string, quote currency): cost-basis release (old borrowedCapital − new borrowedCapital − Δsize × price) minus the fill's fee. Opening and same-direction add legs contribute −fee (price PnL is 0). On a flat account, Σ closedPnl + Σ funding equals netQuoteBalance − net deposits. On the liquidated (taker) leg of a forced closure (liquidation.method == LIQUIDATION) closedPnl carries the realized PnL of the closed size under the same rule as any other fill; it is no longer read as "0". Liquidation fills recorded before this behavior are not backfilled and may read "0".
Example:
"12.34"
remainingSize
string
Remaining unfilled order size after this fill. Only present on streaming updates.
positionEffect
enum<string>
How this fill affected the account's position in marketId. For taker fills the value is the net effect across all fills in the aggregated update (FLIP_* covers a position that closed and reopened on the opposite side within one user order). May be absent on persisted rows from before the field was introduced.
Available options:
OPEN_LONG,
OPEN_SHORT,
ADD_LONG,
ADD_SHORT,
CLOSE_LONG,
CLOSE_SHORT,
FLIP_LONG_TO_SHORT,
FLIP_SHORT_TO_LONG
sequenceNumber
integer<uint64>
Sequence number for ordering and reconciliation. Only present on streaming updates.
liquidation
object
Present only when this fill closed a position involuntarily — on the liquidated account's leg of an engine liquidation (LIQUIDATION) or the deleveraged counterparty's leg of an auto-deleverage (ADL). The voluntary counterparty leg of a liquidation match (a resting maker order that got hit) does not carry this marker. Absent on voluntary fills and on rows persisted before the marker was introduced. This field, not the order-ID format, is the supported way to detect forced closures (the engine's synthetic liq: order-ID prefix is an internal detail and not part of the API contract).
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Arcus Docs","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/arcus-11aecf6e/Pw2ZUiZemhLSrOMO/logo/light.svg?fit=max\u0026auto=format\u0026n=Pw2ZUiZemhLSrOMO\u0026q=85\u0026s=9bbd1de2de2a31d08c50e0d58bdac466","dark":"https://mintcdn.com/arcus-11aecf6e/Pw2ZUiZemhLSrOMO/logo/dark.svg?fit=max\u0026auto=format\u0026n=Pw2ZUiZemhLSrOMO\u0026q=85\u0026s=811a9395d1f3457230f9f5defa23c9d0"},"favicon":"https://mintcdn.com/arcus-11aecf6e/cwobDWFqGCQyNAqW/favicon.svg?fit=max\u0026auto=format\u0026n=cwobDWFqGCQyNAqW\u0026q=85\u0026s=c3d0e980a4a9fe344d7143e7f3c18caf","navbar":{"links":[{"href":"https://help.arcus.xyz","label":"Help Center"}],"primary":{"type":"button","label":"Go to Arcus","href":"https://app.arcus.xyz"}},"integrations":{"ga4":{"measurementId":"G-1232GKGLVQ"},"intercom":{"appId":"fdd72bam"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"arcus-11aecf6e","hasAudioNarration":false,"actualSubdomain":"arcus-11aecf6e","customDomains":["docs.arcus.xyz"],"gitSource":{"type":"github","owner":"dydxprotocol","repo":"v5-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af6b1f7aa6a9b02a8ca4e72","clientVersion":"0.0.4138","searchFilterCounts":[{"language":"default","tag":"API reference","count":99},{"language":"default","tag":"Endpoints","count":69},{"language":"default","tag":"Public","count":36},{"language":"default","tag":"WebSocket","count":22},{"language":"default","tag":"Concepts","count":20},{"language":"default","tag":"Referral","count":17},{"language":"default","tag":"Exchange","count":13},{"language":"default","tag":"Market data","count":11},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"Perpetuals","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"6a0c053228609ad420f986bc","deploymentId":"69f19afe69cb5ad533409b0a","questionText":"How do I place an order","status":"active","generatedBy":"manual","createdAt":"2026-05-19T06:37:38.436Z","updatedAt":"2026-05-19T06:37:38.436Z","__v":0}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/public/get-fill-by-id","slug":"/api-reference/public/get-fill-by-id","pageMetadata":{"title":"Get fill by ID","description":"Returns the single fill belonging to the requested account for the given trade ID. Requires the `address` query parameter (optional `accountIndex` selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a `tradeId`; this returns the leg owned by the requested account. No authentication header is required.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/fill/{tradeId}","href":"/api-reference/public/get-fill-by-id","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Returns the single fill belonging to the requested account for the given trade ID. Requires the \", _jsx(_components.code, {\n children: \"address\"\n }), \" query parameter (optional \", _jsx(_components.code, {\n children: \"accountIndex\"\n }), \" selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a \", _jsx(_components.code, {\n children: \"tradeId\"\n }), \"; this returns the leg owned by the requested account. No authentication header is required.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Note}=_components;if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsxs(Note,{children:[_jsx(_components.strong,{children:`The response body shown here is a static example, not live data.`}),` After you click `,_jsx(_components.strong,{children:`Send`}),`, your live result appears in a separate panel headed `,_jsx(_components.strong,{children:`200 OK`}),`. The panel under the status-code tabs is a fixed sample from the spec — its field values (fees, prices, sizes, IDs, timestamps) are placeholders. Use `,_jsx(_components.strong,{children:`Send`}),`, or call the endpoint, for current values.`]}),`\n`,_jsxs(_components.p,{children:[`Returns the single fill belonging to the requested account for the given trade ID. Requires the `,_jsx(_components.code,{children:`address`}),` query parameter (optional `,_jsx(_components.code,{children:`accountIndex`}),` selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a `,_jsx(_components.code,{children:`tradeId`}),`; this returns the leg owned by the requested account. No authentication header is required.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get fill by ID","description":"Returns the single fill belonging to the requested account for the given trade ID. Requires the `address` query parameter (optional `accountIndex` selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a `tradeId`; this returns the leg owned by the requested account. No authentication header is required.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/fill/{tradeId}","href":"/api-reference/public/get-fill-by-id","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Get fill by ID","description":"Returns the single fill belonging to the requested account for the given trade ID. Requires the `address` query parameter (optional `accountIndex` selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a `tradeId`; this returns the leg owned by the requested account. No authentication header is required.\n","operationId":"getFillById","tags":["Public"],"x-codeSamples":[{"lang":"Shell","label":"curl","source":"ADDR=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\nTRADE_ID=12345\ncurl \"https://api.arcus.xyz/v1/fill/${TRADE_ID}?address=${ADDR}\"\n"},{"lang":"Python","label":"requests","source":"import requests\ntradeId = \"12345\"\nr = requests.get(\n f\"https://api.arcus.xyz/v1/fill/{tradeId}\",\n params={\"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"},\n)\nprint(r.json())\n"},{"lang":"TypeScript","label":"fetch","source":"const tradeId = \"12345\";\nconst url = new URL(`https://api.arcus.xyz/v1/fill/${tradeId}`);\nurl.searchParams.set(\"address\", \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\");\nconst res = await fetch(url);\nconsole.log(await res.json());\n"}],"parameters":["0404bc24-451e-4b18-8c3e-d3612c70a24f","23dfbcbf-af4a-427e-8557-d9345b638b46","2217e85e-0f9a-4426-a193-e1813ae8df00"],"responses":{"200":"c6551427-ece0-48a6-808b-572abf657c9d","400":"04483cd6-1b2c-4528-b002-79e0a15e78c5","404":"afc3798a-e826-4cf1-b1e2-630a51be7d4c","429":"542e7d00-6da1-41b2-8c40-319fddba565d"},"x-mint":{"content":"\u003cNote>**The response body shown here is a static example, not live data.** After you click **Send**, your live result appears in a separate panel headed **200 OK**. The panel under the status-code tabs is a fixed sample from the spec — its field values (fees, prices, sizes, IDs, timestamps) are placeholders. Use **Send**, or call the endpoint, for current values.\u003c/Note>\n\nReturns the single fill belonging to the requested account for the given trade ID. Requires the `address` query parameter (optional `accountIndex` selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a `tradeId`; this returns the leg owned by the requested account. No authentication header is required."},"method":"get","type":"path","servers":["8bcbded4-ced7-41f7-9103-ef78afb86c4b","db341041-78f8-47d5-bb08-4c97d4cfedb3"],"security":[],"path":"/v1/fill/{tradeId}","baseUrlOptions":["https://api.arcus.xyz","https://api.testnet.arcus.xyz"],"title":"Get fill by ID","codeSamples":[{"label":"curl","lang":"Shell","source":"ADDR=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\nTRADE_ID=12345\ncurl \"https://api.arcus.xyz/v1/fill/${TRADE_ID}?address=${ADDR}\"\n"},{"label":"requests","lang":"Python","source":"import requests\ntradeId = \"12345\"\nr = requests.get(\n f\"https://api.arcus.xyz/v1/fill/{tradeId}\",\n params={\"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"},\n)\nprint(r.json())\n"},{"label":"fetch","lang":"TypeScript","source":"const tradeId = \"12345\";\nconst url = new URL(`https://api.arcus.xyz/v1/fill/${tradeId}`);\nurl.searchParams.set(\"address\", \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\");\nconst res = await fetch(url);\nconsole.log(await res.json());\n"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"0404bc24-451e-4b18-8c3e-d3612c70a24f":{"name":"tradeId","in":"path","required":true,"schema":{"type":"string","example":"12345","isRequired":true,"description":"Trade identifier of the fill (the `tradeId` field returned by `GET /v1/fills`). A non-integer value → 400.\n","uniqueKey":"","typeLabel":"string"},"description":"Trade identifier of the fill (the `tradeId` field returned by `GET /v1/fills`). A non-integer value → 400.\n"},"23dfbcbf-af4a-427e-8557-d9345b638b46":{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^(0x|0X)?[0-9a-fA-F]{40}$","description":"Master Ethereum address for this API key (must match `address` from `POST /createApiKey` for the same key). Required on REST for account-scoped reads and for place/cancel. Invalid hex → 400; mismatch with key → 403.\n\n20-byte EVM address as hex: optional `0x` or `0X` prefix and exactly 40 hexadecimal digits. API responses normalize to lowercase `a`–`f` after `0x`.\n","isRequired":true,"uniqueKey":"","typeLabel":"string"},"description":"Master Ethereum address for this API key (must match `address` from `POST /createApiKey` for the same key). Required on REST for account-scoped reads and for place/cancel. Invalid hex → 400; mismatch with key → 403.\n"},"2217e85e-0f9a-4426-a193-e1813ae8df00":{"name":"accountIndex","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9,"default":0,"isRequired":false,"description":"Subaccount index (0–9) to scope the request to. Defaults to 0 (the primary account). Values above 9 → 400.\n","uniqueKey":"","typeLabel":"integer"},"description":"Subaccount index (0–9) to scope the request to. Defaults to 0 (the primary account). Values above 9 → 400.\n"}},"responses":{"c6551427-ece0-48a6-808b-572abf657c9d":{"description":"Fill details.","content":{"application/json":{"schema":{"type":"object","description":"Unified fill shape used across REST responses, WebSocket snapshots, and streaming updates. Fields only available from the store are optional and may be absent in streaming updates.\n","required":["tradeId","orderId","marketDisplayName","marketId","side","originalSize","size","price","fee","role","createdAt"],"properties":{"tradeId":{"type":"string","description":"Unique trade identifier.","examples":["12345"],"isRequired":true,"uniqueKey":"tradeId","typeLabel":"string"},"orderId":{"type":"string","description":"Order ID that generated this fill.","examples":["order-abc-123"],"isRequired":true,"uniqueKey":"orderId","typeLabel":"string"},"marketId":{"type":"integer","minimum":0,"maximum":65535,"description":"Perpetual market identifier (uint16). Map to display name via `GET /markets`. Used for orders, positions, funding, and market metadata.","isRequired":true,"uniqueKey":"marketId","typeLabel":"integer"},"marketDisplayName":{"type":"string","description":"Market symbol (e.g. BTC-USD).","examples":["BTC-USD"],"isRequired":true,"uniqueKey":"marketDisplayName","typeLabel":"string"},"side":{"type":"string","enum":["BUY","SELL"],"description":"Order side.","isRequired":true,"uniqueKey":"side","typeLabel":"enum\u003cstring>"},"originalSize":{"type":"string","description":"Original order size in human-readable base-asset units (decimal string).","examples":["1.0"],"isRequired":true,"uniqueKey":"originalSize","typeLabel":"string"},"size":{"type":"string","description":"Fill size in human-readable base-asset units (decimal string).","examples":["0.01"],"isRequired":true,"uniqueKey":"size","typeLabel":"string"},"price":{"type":"string","description":"Fill price in human-readable USD (decimal string).","examples":["50000.5"],"isRequired":true,"uniqueKey":"price","typeLabel":"string"},"fee":{"type":"string","description":"Fee amount (decimal string). On the liquidated leg of an engine liquidation this is the liquidation penalty (the market's liquidation fee rate applied to the fill notional, paid to the insurance fund) — \"0\" when the market has no liquidation fee configured. ADL legs carry no fee.\n","examples":["0.5"],"isRequired":true,"uniqueKey":"fee","typeLabel":"string"},"role":{"type":"string","enum":["MAKER","TAKER"],"description":"Liquidity role. `MAKER` rested on the book, `TAKER` crossed it.","isRequired":true,"uniqueKey":"role","typeLabel":"enum\u003cstring>"},"createdAt":{"type":"integer","format":"int64","description":"Fill timestamp (epoch microseconds).","isRequired":true,"uniqueKey":"createdAt","typeLabel":"integer\u003cint64>"},"address":{"type":"string","description":"Ethereum address (lowercase 0x + 40 hex). Only present on REST and snapshot responses.","examples":["0x0000000000000000000000000000000000000000"],"uniqueKey":"address","typeLabel":"string"},"accountIndex":{"type":"integer","minimum":0,"maximum":9,"description":"Account index (account index, 0–9). Identifies the account for orders, positions, fills, and API keys.","uniqueKey":"accountIndex","typeLabel":"integer"},"clientId":{"type":"string","description":"Client-provided order ID. Only present on streaming updates.","uniqueKey":"clientId","typeLabel":"string"},"closedPnl":{"type":"string","description":"Realized PnL for this fill (decimal string, quote currency): cost-basis release (`old borrowedCapital − new borrowedCapital − Δsize × price`) minus the fill's fee. Opening and same-direction add legs contribute `−fee` (price PnL is 0). On a flat account, Σ closedPnl + Σ funding equals netQuoteBalance − net deposits. On the liquidated (taker) leg of a forced closure (`liquidation.method == LIQUIDATION`) closedPnl carries the realized PnL of the closed size under the same rule as any other fill; it is no longer read as \"0\". Liquidation fills recorded before this behavior are not backfilled and may read \"0\".\n","examples":["12.34"],"uniqueKey":"closedPnl","typeLabel":"string"},"remainingSize":{"type":"string","description":"Remaining unfilled order size after this fill. Only present on streaming updates.","uniqueKey":"remainingSize","typeLabel":"string"},"positionEffect":{"type":"string","enum":["OPEN_LONG","OPEN_SHORT","ADD_LONG","ADD_SHORT","CLOSE_LONG","CLOSE_SHORT","FLIP_LONG_TO_SHORT","FLIP_SHORT_TO_LONG"],"description":"How this fill affected the account's position in marketId. For taker fills the value is the net effect across all fills in the aggregated update (FLIP_* covers a position that closed and reopened on the opposite side within one user order). May be absent on persisted rows from before the field was introduced.\n","uniqueKey":"positionEffect","typeLabel":"enum\u003cstring>"},"sequenceNumber":{"type":"integer","format":"uint64","description":"Sequence number for ordering and reconciliation. Only present on streaming updates.","uniqueKey":"sequenceNumber","typeLabel":"integer\u003cuint64>"},"liquidation":{"type":"object","description":"Present only when this fill closed a position involuntarily — on the liquidated account's leg of an engine liquidation (`LIQUIDATION`) or the deleveraged counterparty's leg of an auto-deleverage (`ADL`). The voluntary counterparty leg of a liquidation match (a resting maker order that got hit) does not carry this marker. Absent on voluntary fills and on rows persisted before the marker was introduced. This field, not the order-ID format, is the supported way to detect forced closures (the engine's synthetic `liq:` order-ID prefix is an internal detail and not part of the API contract).\n","required":["method","liquidatedUser"],"properties":{"method":{"type":"string","enum":["LIQUIDATION","ADL"],"description":"How the position was force-closed.","isRequired":true,"uniqueKey":"liquidation.method","typeLabel":"enum\u003cstring>"},"liquidatedUser":{"type":"string","description":"Account wire ID (unpadded base64 of address + account index) of the account that was force-closed — always the account that owns this fill row.\n","isRequired":true,"uniqueKey":"liquidation.liquidatedUser","typeLabel":"string"}},"uniqueKey":"liquidation","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tradeId":"12345","orderId":"order-abc-123","marketId":32767,"marketDisplayName":"BTC-USD","side":"BUY","originalSize":"1.0","size":"0.01","price":"50000.5","fee":"0.5","role":"MAKER","createdAt":123,"address":"0x0000000000000000000000000000000000000000","accountIndex":4,"clientId":"\u003cstring>","closedPnl":"12.34","remainingSize":"\u003cstring>","positionEffect":"OPEN_LONG","sequenceNumber":123,"liquidation":{"method":"LIQUIDATION","liquidatedUser":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"04483cd6-1b2c-4528-b002-79e0a15e78c5":{"description":"Invalid tradeId, or missing/invalid `address` or `accountIndex` query parameter.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","examples":["Invalid request body"],"isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code for generic (non-order) rejections. Present on geo-restriction blocks; clients should key product-availability UI off this rather than the human `error` string.\n\n| Value | Meaning |\n|------------------|---------|\n| `GEO_RESTRICTED` | The action is not available from the caller's country/region for this product (perps and/or spot). Reads remain available; only state-changing actions are blocked. |\n","enum":["GEO_RESTRICTED"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Invalid request body","code":"GEO_RESTRICTED"}}},"exampleType":"generated"}},"exampleType":"generated"},"afc3798a-e826-4cf1-b1e2-630a51be7d4c":{"description":"Fill not found for this account and trade ID.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","examples":["Invalid request body"],"isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code for generic (non-order) rejections. Present on geo-restriction blocks; clients should key product-availability UI off this rather than the human `error` string.\n\n| Value | Meaning |\n|------------------|---------|\n| `GEO_RESTRICTED` | The action is not available from the caller's country/region for this product (perps and/or spot). Reads remain available; only state-changing actions are blocked. |\n","enum":["GEO_RESTRICTED"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Invalid request body","code":"GEO_RESTRICTED"}}},"exampleType":"generated"}},"exampleType":"generated"},"542e7d00-6da1-41b2-8c40-319fddba565d":{"description":"Rate limit exceeded. Two signals are returned, designed to coexist with both naive HTTP clients and rate-limit-aware SDK clients:\n\n- `Retry-After` header (integer seconds, RFC 7231 compliant). Rounds up — clients that obey this header sleep at least as long as required. Safe for generic HTTP libraries to read.\n- JSON body `retryAfterMs` (precise milliseconds, matches the server's internal computation). Sophisticated clients should prefer this over the header to avoid the round-up overshoot.\n- JSON body `reason` indicates which rate-limit layer rejected: `ip` (per-IP weight bucket), `account_empty` (per-subaccount pool fully exhausted, in drip throttle), `account_partial` (pool has some credit but not enough for this batch — split the request smaller to drain), or `unknown` (defensive fallback).\n- JSON body `clientId` (single-order endpoints) or `clientIds` (batch endpoints) echoes the request's client-supplied order identifier(s) so the client can correlate the rejection to a specific order request.\n","headers":{"Retry-After":{"description":"Seconds the client should wait before retrying the request.","schema":{"type":"integer","minimum":1,"example":1}}},"content":{"application/json":{"schema":{"description":"429 response body shape. Extends the generic `Error` with two rate-limit-specific fields:\n\n- `reason` — which limiter rejected the request. Stable string enum; new values may be added in future versions, so clients should treat unknown values as opaque.\n- `retryAfterMs` — precise milliseconds the client should wait before retrying. The HTTP `Retry-After` header carries the same information rounded up to whole seconds (RFC 7231); prefer this field when sub-second precision matters.\n","type":"object","required":["error"],"properties":{"error":{"type":"string","example":"rate limited","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"reason":{"type":"string","enum":["ip","account_empty","account_partial","unknown"],"description":"Layer that rejected the request:\n * `ip` — per-IP weight bucket exhausted.\n * `account_empty` — per-subaccount pool fully exhausted; the\n drip-throttle has no token available either.\n * `account_partial` — pool has some credit but not enough\n for this batch. Split the request into smaller chunks to\n drain the remaining headroom.\n * `unknown` — defensive fallback; clients should retry per\n `retryAfterMs` and report the occurrence.\n","uniqueKey":"reason","typeLabel":"enum\u003cstring>"},"retryAfterMs":{"type":"integer","format":"int64","minimum":0,"description":"Milliseconds to wait before retrying. Matches the precise wait the rate limiter computed (the `Retry-After` header rounds up to the next whole second).","uniqueKey":"retryAfterMs","typeLabel":"integer\u003cint64>"},"clientId":{"type":"string","description":"Echo of the request's client-supplied `clientId`, so the client can correlate the rejection to a specific order request. Present only on single-order endpoints (placeOrder, modifyOrder, cancelOrder) when the request carried a `clientId`. Omitted on batch endpoints (see `clientIds`) and when the request had none.\n","uniqueKey":"clientId","typeLabel":"string"},"clientIds":{"type":"array","items":{"type":"string","uniqueKey":"clientIds.items.[INDEX]","typeLabel":"string"},"description":"Echo of every client-supplied `clientId` in a batch request (batchPlaceOrders, batchCancelOrders), positionally aligned with the submitted `orders` / `cancels` array. A batch is rejected all-or-nothing, so every listed order was rejected; the echo lets a client submitting multiple batches concurrently correlate the 429 to a specific batch. An entry is empty when that element carried no `clientId` (e.g. a cancel-by-orderId). Omitted on single-order endpoints (see `clientId`).\n","uniqueKey":"clientIds","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"rate limited","reason":"account_empty","retryAfterMs":850,"clientId":"my-order-42"},"examples":{"Example":{"title":"Example","value":{"error":"rate limited","reason":"account_empty","retryAfterMs":850,"clientId":"my-order-42"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{},"servers":{"8bcbded4-ced7-41f7-9103-ef78afb86c4b":{"url":"https://api.arcus.xyz","description":"Mainnet"},"db341041-78f8-47d5-bb08-4c97d4cfedb3":{"url":"https://api.testnet.arcus.xyz","description":"Testnet"}}},"originalFileLocation":"api-reference/openapi.yml"},"subdomain":"arcus-11aecf6e","siteName":"Arcus Docs","title":"Get fill by ID - Arcus Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T03:48:06.156Z","originalFileLocation":"api-reference/public/get-fill-by-id.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Returns the single fill belonging to the requested account for the given trade ID. Requires the address query parameter (optional accountIndex selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a tradeId; this returns the leg owned by the requested account. No authentication header is required.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Arcus Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get fill by ID - Arcus Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the single fill belonging to the requested account for the given trade ID. Requires the address query parameter (optional accountIndex selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a tradeId; this returns the leg owned by the requested account. No authentication header is required.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Arcus Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://arcus-11aecf6e.mintlify.site/_mintlify/api/og/v2?division=Public\u0026amp;title=Get+fill+by+ID\u0026amp;description=Returns+the+single+fill+belonging+to+the+requested+account+for+the+given+trade+ID.+Requires+the+%60address%60+query+parameter+%28optional+%60accountIndex%60+selects+a+sub\u0026amp;theme=8f431044d56cd21a41b03f79\u0026amp;signature=086d6e0940b4bd9477ad317e44e611760a608738c543f594c38b837b8cc3862f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get fill by ID - Arcus Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the single fill belonging to the requested account for the given trade ID. Requires the address query parameter (optional accountIndex selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a tradeId; this returns the leg owned by the requested account. No authentication header is required.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://arcus-11aecf6e.mintlify.site/_mintlify/api/og/v2?division=Public\u0026amp;title=Get+fill+by+ID\u0026amp;description=Returns+the+single+fill+belonging+to+the+requested+account+for+the+given+trade+ID.+Requires+the+%60address%60+query+parameter+%28optional+%60accountIndex%60+selects+a+sub\u0026amp;theme=8f431044d56cd21a41b03f79\u0026amp;signature=086d6e0940b4bd9477ad317e44e611760a608738c543f594c38b837b8cc3862f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/arcus-11aecf6e/zluNDxrkwkprdXlm/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Arcus Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/public/get-fill-by-id.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.arcus.xyz/#organization\",\"name\":\"Arcus Docs\",\"url\":\"https://docs.arcus.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/arcus-11aecf6e/Pw2ZUiZemhLSrOMO/logo/light.svg?fit=max\u0026auto=format\u0026n=Pw2ZUiZemhLSrOMO\u0026q=85\u0026s=9bbd1de2de2a31d08c50e0d58bdac466\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.arcus.xyz#website\",\"name\":\"Arcus Docs\",\"url\":\"https://docs.arcus.xyz\",\"publisher\":{\"@id\":\"https://docs.arcus.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id#webpage\",\"url\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id\",\"name\":\"Get fill by ID\",\"description\":\"Returns the single fill belonging to the requested account for the given trade ID. Requires the address query parameter (optional accountIndex selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a tradeId; this returns the leg owned by the requested account. No authentication header is required.\",\"dateModified\":\"2026-11-12T03:48:06.156Z\",\"isPartOf\":{\"@id\":\"https://docs.arcus.xyz#website\"},\"breadcrumb\":{\"@id\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.arcus.xyz/api-reference/public/service-info\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Public\",\"item\":\"https://docs.arcus.xyz/api-reference/public/service-info\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get fill by ID\",\"item\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id#apireference\",\"headline\":\"Get fill by ID\",\"name\":\"Get fill by ID\",\"description\":\"Returns the single fill belonging to the requested account for the given trade ID. Requires the address query parameter (optional accountIndex selects a subaccount, default 0): fill data is partitioned by account, so the lookup needs the owning account. A trade can produce one fill per participant that share a tradeId; this returns the leg owned by the requested account. No authentication header is required.\",\"url\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id\",\"mainEntityOfPage\":{\"@id\":\"https://docs.arcus.xyz/api-reference/public/get-fill-by-id#webpage\"},\"dateModified\":\"2026-11-12T03:48:06.156Z\",\"publisher\":{\"@id\":\"https://docs.arcus.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.arcus.xyz#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Arcus Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Arcus Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/public/get-fill-by-id.md","siteName":"Arcus Docs","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/fund-testnet-account"}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts/onboarding"}]},{"tab":"API reference","groups":[{"group":"API documentation","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"WebSocket","href":"/api-reference/websocket"},{"title":"Rate limits","href":"/api-reference/rate-limits"}]},{"group":"Endpoints","pages":[{"group":"Public","pages":[{"title":"Service info","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /","href":"/api-reference/public/service-info"},{"title":"Health check","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /health","href":"/api-reference/public/health-check"},{"title":"Get L2 orderbook snapshot","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/l2OrderBook/{market}","href":"/api-reference/public/get-l2-orderbook-snapshot"},{"title":"Get Best Bid Offer (BBO)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/bbo/{market}","href":"/api-reference/public/get-best-bid-offer-bbo"},{"title":"Get current server time","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/time","href":"/api-reference/public/get-current-server-time"},{"title":"Get all mid prices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/mids","href":"/api-reference/public/get-all-mid-prices"},{"title":"Get live prices for all markets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/prices","href":"/api-reference/public/get-live-prices-for-all-markets"},{"title":"Get fee tier table","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/feetiers","href":"/api-reference/public/get-fee-tier-table"},{"title":"Get referral commission rate schedule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/commissionrates","href":"/api-reference/public/get-referral-commission-rate-schedule"},{"title":"Get markets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/markets","href":"/api-reference/public/get-markets"},{"title":"Get market fee schedules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/markets/feeSchedules","href":"/api-reference/public/get-market-fee-schedules"},{"title":"Get corporate actions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/corporateActions","href":"/api-reference/public/get-corporate-actions"},{"title":"Get corporate actions for a market","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/corporateActions/{market_id}","href":"/api-reference/public/get-corporate-actions-for-a-market"},{"title":"Get spot collateral assets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/spotAssets","href":"/api-reference/public/get-spot-collateral-assets"},{"title":"Get global lending attributes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/lendingAttributes","href":"/api-reference/public/get-global-lending-attributes"},{"title":"Get recent public trades","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/trades","href":"/api-reference/public/get-recent-public-trades"},{"title":"Get a single trade by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/trade/{tradeId}","href":"/api-reference/public/get-a-single-trade-by-id"},{"title":"Get OHLCV candles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/candles","href":"/api-reference/public/get-ohlcv-candles"},{"title":"Get open orders","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/openOrders","href":"/api-reference/public/get-open-orders"},{"title":"Get order history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/orders","href":"/api-reference/public/get-order-history"},{"title":"Get fills","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/fills","href":"/api-reference/public/get-fills"},{"title":"Get spot fills","description":"Returns spot fill history for the requested account address, newest-first. Spot fills are the seizure and loan-settle executions of the lending system (spot has no orderbook, so there is no maker/taker role or fee). Optional `from`/`to` (epoch **microseconds**, the unit of the `createdAt` field in the response) bound the time window. Optional `accountIndex` selects a subaccount (default 0). No authentication header is required.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/spotFills","href":"/api-reference/public/get-spot-fills"},{"title":"Get fill by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/fill/{tradeId}","href":"/api-reference/public/get-fill-by-id"},{"title":"Get account transfer updates","description":"Returns deposits, withdrawals, and transfers for the requesting account, newest-first.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/accountTransferUpdates","href":"/api-reference/public/get-account-transfer-updates"},{"title":"Get funding payments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/funding","href":"/api-reference/public/get-funding-payments"},{"title":"Get interest payments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/interest","href":"/api-reference/public/get-interest-payments"},{"title":"Get market funding rates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/fundingRates","href":"/api-reference/public/get-market-funding-rates"},{"title":"Get portfolio history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/portfolio","href":"/api-reference/public/get-portfolio-history"},{"title":"Get current rate-limit usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/rateLimit","href":"/api-reference/public/get-current-rate-limit-usage"},{"title":"Get positions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/positions","href":"/api-reference/public/get-positions"},{"title":"Get spot positions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/spotPositions","href":"/api-reference/public/get-spot-positions"},{"title":"Get account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/account","href":"/api-reference/public/get-account"},{"title":"Get account stats","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/account/stats","href":"/api-reference/public/get-account-stats"},{"title":"Get order status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/order/{orderId}","href":"/api-reference/public/get-order-status"},{"title":"Get leverage and margin mode for an account across all markets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/leverages","href":"/api-reference/public/get-leverage-and-margin-mode-for-an-account-across-all-markets"},{"title":"Get the all-traders leaderboard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/leaderboard","href":"/api-reference/public/get-the-all-traders-leaderboard"}]},{"group":"Exchange","pages":[{"title":"Place order","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/placeOrder","href":"/api-reference/exchange/place-order"},{"title":"Place batch orders","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/batchPlaceOrders","href":"/api-reference/exchange/place-batch-orders"},{"title":"Cancel order","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/cancelOrder","href":"/api-reference/exchange/cancel-order"},{"title":"Batch cancel orders","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/batchCancelOrders","href":"/api-reference/exchange/batch-cancel-orders"},{"title":"Schedule cancel-all (dead man's switch)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/scheduleCancel","href":"/api-reference/exchange/schedule-cancel-all-dead-mans-switch"},{"title":"Cancel all open orders","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/cancelAllOrders","href":"/api-reference/exchange/cancel-all-open-orders"},{"title":"Modify order","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/modifyOrder","href":"/api-reference/exchange/modify-order"},{"title":"Batch modify orders","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/batchModifyOrders","href":"/api-reference/exchange/batch-modify-orders"},{"title":"Set leverage for a market","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/setLeverage","href":"/api-reference/exchange/set-leverage-for-a-market"},{"title":"Add or remove margin on an isolated-mode position","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/adjustIsolatedMargin","href":"/api-reference/exchange/add-or-remove-margin-on-an-isolated-mode-position"},{"title":"Sell spot collateral to settle the account's loan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/settleLoan","href":"/api-reference/exchange/sell-spot-collateral-to-settle-the-accounts-loan"},{"title":"Submit withdrawal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/withdraw","href":"/api-reference/exchange/submit-withdrawal"},{"title":"Submit internal transfer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/transfer","href":"/api-reference/exchange/submit-internal-transfer"}]},{"group":"Onboarding","pages":[{"title":"Get API keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/apiKeys","href":"/api-reference/onboarding/get-api-keys"},{"title":"Create API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/createApiKey","href":"/api-reference/onboarding/create-api-key"},{"title":"Revoke API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/revokeApiKey","href":"/api-reference/onboarding/revoke-api-key"}]},{"group":"Referral","pages":[{"title":"Create referral code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/affiliate/createCode","href":"/api-reference/referral/create-referral-code"},{"title":"Register as referee","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/affiliate/registerAffiliate","href":"/api-reference/referral/register-as-referee"},{"title":"Update kickback rate","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/affiliate/kickback","href":"/api-reference/referral/update-kickback-rate"},{"title":"Revoke referral code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/affiliate/revokeCode","href":"/api-reference/referral/revoke-referral-code"},{"title":"Rename referral code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/affiliate/modifyCode","href":"/api-reference/referral/rename-referral-code"},{"title":"Claim accrued commission","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/affiliate/claim","href":"/api-reference/referral/claim-accrued-commission"},{"title":"Get affiliate info","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/info","href":"/api-reference/referral/get-affiliate-info"},{"title":"Get the caller's referral code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/code","href":"/api-reference/referral/get-the-callers-referral-code"},{"title":"Get referees","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/referees","href":"/api-reference/referral/get-referees"},{"title":"Get my referrer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/myReferrer","href":"/api-reference/referral/get-my-referrer"},{"title":"Get affiliate leaderboard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/leaderboard","href":"/api-reference/referral/get-affiliate-leaderboard"},{"title":"Get affiliate commission history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/commissions","href":"/api-reference/referral/get-affiliate-commission-history"},{"title":"Get affiliate claim history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/claims","href":"/api-reference/referral/get-affiliate-claim-history"},{"title":"Look up a single claim","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/claimStatus","href":"/api-reference/referral/look-up-a-single-claim"},{"title":"Check whether a referral code is available","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/codeAvailable","href":"/api-reference/referral/check-whether-a-referral-code-is-available"},{"title":"List the caller's invite codes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /v1/affiliate/inviteCodes","href":"/api-reference/referral/list-the-callers-invite-codes"},{"title":"Redeem an invite code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /v1/affiliate/redeemInvite","href":"/api-reference/referral/redeem-an-invite-code"}]}]},{"group":"WebSocket","pages":[{"group":"Market data","pages":[{"asyncapi":"api-reference/asyncapi.yaml l2Orderbook","href":"/api-reference/market-data/l2orderbook","title":"L2 orderbook","version":null},{"asyncapi":"api-reference/asyncapi.yaml l2OrderbookUpdates","href":"/api-reference/market-data/l2orderbookupdates","title":"L2 orderbook updates","version":null},{"asyncapi":"api-reference/asyncapi.yaml trades","href":"/api-reference/market-data/trades","title":"Trades","version":null},{"asyncapi":"api-reference/asyncapi.yaml markets","href":"/api-reference/market-data/markets","title":"Markets","version":null},{"asyncapi":"api-reference/asyncapi.yaml oraclePrices","href":"/api-reference/market-data/oracleprices","title":"Oracle prices","version":null},{"asyncapi":"api-reference/asyncapi.yaml bbo","href":"/api-reference/market-data/bbo","title":"Bbo","version":null},{"asyncapi":"api-reference/asyncapi.yaml lendingRates","href":"/api-reference/market-data/lendingrates","title":"Lending rates","version":null},{"asyncapi":"api-reference/asyncapi.yaml predictedFunding","href":"/api-reference/market-data/predictedfunding","title":"Predicted funding","version":null},{"asyncapi":"api-reference/asyncapi.yaml exchangeAttributeUpdates","href":"/api-reference/market-data/exchangeattributeupdates","title":"Exchange attribute updates","version":null},{"asyncapi":"api-reference/asyncapi.yaml marketAttributes","href":"/api-reference/market-data/marketattributes","title":"Market attributes","version":null},{"asyncapi":"api-reference/asyncapi.yaml candles","href":"/api-reference/market-data/candles","title":"Candles","version":null}]},{"group":"Account","pages":[{"asyncapi":"api-reference/asyncapi.yaml account","href":"/api-reference/account/account","title":"Account","version":null},{"asyncapi":"api-reference/asyncapi.yaml positions","href":"/api-reference/account/positions","title":"Positions","version":null},{"asyncapi":"api-reference/asyncapi.yaml spotPositions","href":"/api-reference/account/spotpositions","title":"Spot positions","version":null},{"asyncapi":"api-reference/asyncapi.yaml userFills","href":"/api-reference/account/userfills","title":"User fills","version":null},{"asyncapi":"api-reference/asyncapi.yaml spotFills","href":"/api-reference/account/spotfills","title":"Spot fills","version":null},{"asyncapi":"api-reference/asyncapi.yaml settleLoanResults","href":"/api-reference/account/settleloanresults","title":"Settle loan results","version":null},{"asyncapi":"api-reference/asyncapi.yaml orders","href":"/api-reference/account/orders","title":"Orders","version":null},{"asyncapi":"api-reference/asyncapi.yaml funding","href":"/api-reference/account/funding","title":"Funding","version":null},{"asyncapi":"api-reference/asyncapi.yaml accountTransferUpdates","href":"/api-reference/account/accounttransferupdates","title":"Account transfer updates","version":null},{"asyncapi":"api-reference/asyncapi.yaml accountAttributeUpdates","href":"/api-reference/account/accountattributeupdates","title":"Account attribute updates","version":null}]},{"group":"Trading","pages":[{"asyncapi":"api-reference/asyncapi.yaml orderOperations","href":"/api-reference/trading/orderoperations","title":"Order operations","version":null}]}]},{"group":"Changelog","pages":[{"title":"Changelog API (Mainnet)","href":"/changelog"},{"title":"Upcoming mainnet release","href":"/changelog/upcoming"},{"title":"Changelog API (Testnet)","href":"/changelog/testnet"},{"title":"Arcus Changelog","href":"/changelog/frontend"}]}]}]},"basePath":"","title":"Get fill by ID - Arcus Docs","buildId":"dpl_715YoAgvjTGBDdo8RtXmHKM22b5p","deploymentId":"dpl_715YoAgvjTGBDdo8RtXmHKM22b5p","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-BvKnMd7F.js","utils-BMt52org.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CGXZuDGO.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dl57XWH2.js","snippetPresets-CWd8CxSk.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BR-Wkc_D.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-YMmi08aZ.js","shallow-DBC1OB78.js","getApiPlaygroundDisplay-Be7mmEzP.js","CodeSnippet-B14o1TgQ.js","CodeSnippets-CJ2q3fTq.js","Page-Chgj7sZe.js","getPastedJson-DnpLXm8x.js","icon-BpkSFtdK.js","MethodPill-BO3zPf-g.js","DuplicateIcon-Bib3qwfw.js","createIcon-CY2noFo3.js","DynamicMarkdown-TAXIW2vN.js","SectionHeading-Dfs3Fmfw.js","axios-vUo_bRtp.js","Markdown-CGAo_eqA.js","clsx-BNa-H6W6.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-r2tNEC1n.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-B7oWe6jc.js"]}