Skip to main content
GET
/
v2
/
portfolios
/
{portfolioId}
/
operations
/
{operationId}
curl --request GET \
  --url 'https://api.glider.fi/v2/portfolios/01JWZEE2MF30KVRMRX53N88VA4/operations/op_01J_ABCDEF' \
  --header 'x-api-key: gldr_sk_your_api_key'
{
  "success": true,
  "data": {
    "operationId": "op_01J_ABCDEF",
    "portfolioId": "01JWZEE2MF30KVRMRX53N88VA4",
    "kind": "withdraw",
    "state": "running",
    "createdAt": "2026-04-17T12:05:00.000Z",
    "updatedAt": "2026-04-17T12:05:10.000Z",
    "finishedAt": null,
    "error": null
  }
}
Returns the current lifecycle state of an operation previously dispatched via a write endpoint such as POST /v2/portfolios/:id/withdraw or POST /v2/portfolios/:id/trigger. Use to poll for onchain confirmation. Operations transition through:
accepted → running → (completed | failed | cancelled)

          retrying / awaiting_user
completed, failed, and cancelled are terminal — stop polling once you see one.
  • Auth: x-api-key header (required)
  • Scope: portfolios:read

Polling cadence

Poll at 2–5 second intervals. There is no SLA on when a dispatched withdrawal confirms onchain — it depends on the target chain’s block time, bundler throughput, and paymaster availability. For withdraws, typical end-to-end latency is under a minute on Base / Arbitrum / Polygon and under ~30 seconds on L1 in most conditions; but pathological conditions (RPC congestion, paymaster rebalancing) may push this higher.

Response fields

FieldTypeNotes
operationIdstringEcho of the URL param.
portfolioIdstringEcho of the URL param.
kindstringwithdraw, rebalance, bridge, swap.
stateenumCurrent lifecycle state.
createdAt / updatedAtISO 8601Operation timestamps.
finishedAtISO 8601 or nullSet once the operation reaches a terminal state.
errorstring or nullSet on failed/cancelled. Free-form message.
Common error responses:
  • 401 when x-api-key header is missing or the key is invalid
  • 403 when the API key lacks the portfolios:read scope
  • 404 when the portfolio doesn’t exist, belongs to a different tenant, or the operationId doesn’t correspond to any operation on that portfolio
  • 500 on unexpected server errors
curl --request GET \
  --url 'https://api.glider.fi/v2/portfolios/01JWZEE2MF30KVRMRX53N88VA4/operations/op_01J_ABCDEF' \
  --header 'x-api-key: gldr_sk_your_api_key'
{
  "success": true,
  "data": {
    "operationId": "op_01J_ABCDEF",
    "portfolioId": "01JWZEE2MF30KVRMRX53N88VA4",
    "kind": "withdraw",
    "state": "running",
    "createdAt": "2026-04-17T12:05:00.000Z",
    "updatedAt": "2026-04-17T12:05:10.000Z",
    "finishedAt": null,
    "error": null
  }
}