> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pods.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# List pending strategy actions for a wallet

> Returns pending (`PENDING`) investment actions for the given strategy and wallet. Provider-backed actions are refreshed before the response is built so status reflects current settlement progress. Actions still awaiting the user's first on-chain transfer (`INITIAL`) or already terminal are omitted from `actions`. Ondo stock strategies include `orderBook` (buy/sell availability) and, per action, a `suw` settlement snapshot.




## OpenAPI

````yaml /openapi.yaml get /strategies/{id}/status
openapi: 3.0.0
info:
  version: 2.0.0
  title: Deframe API
  description: >
    # Deframe API Documentation


    Deframe API is a comprehensive DeFi aggregation platform that enables
    cross-chain and same-chain transactions for yield strategies.


    ## Key Features


    - **Cross-Chain Swaps**: Swap tokens across different blockchain networks

    - **Same-Chain Swaps**: Optimal routing for swaps within the same network

    - **Yield Strategies**: Access to multiple DeFi protocols (Aave, Morpho,
    Lido, etc.)

    - **Wallet Tracking**: Monitor positions and yields across protocols

    - **Transaction Monitoring**: Real-time status updates for cross-chain
    transactions


    ## Authentication


    All API endpoints require authentication using an API key. Include your API
    key in the `x-api-key` header:


    ```

    x-api-key: your-api-key-here

    ```


    Obtain your API key from the Deframe dashboard.


    ## Base URL


    Production: `https://api.deframe.io`


    ## Rate Limits


    - 100 requests per minute per API key

    - 1000 requests per day per API key


    ## Quote Expiration


    Quotes expire after 5 minutes. The `deadline` field is a Unix timestamp in
    seconds and `deadlineDate` is an ISO 8601 string (UTC); request a new quote
    when the deadline has passed.


    ## Error Handling


    All errors follow a consistent format:


    ```json

    {
      "error": {
        "code": "ERROR_CODE",
        "message": "Human-readable error message",
        "httpStatus": 400,
        "details": {}
      }
    }

    ```


    ## Common Error Codes


    - **QUOTE_NOT_FOUND** (404): Quote not found or expired

    - **ACTION_NOT_FOUND** (404): Action not found

    - **STRATEGY_NOT_FOUND** (404): Strategy not found

    - **INVALID_ACTION_TYPE** (400): Action type is not supported for this
    endpoint

    - **QUOTE_EXPIRED** (400): Quote has expired

    - **QUOTE_VALIDATION_ERROR** (400): Quote validation failed

    - **PROVIDER_NOT_FOUND** (404): Swap provider not found

    - **NO_ROUTE_FOUND** (400): No swap route available between specified chains

    - **INVALID_PREFERRED_PROVIDER** (400): Unknown preferredProvider name

    - **PREFERRED_PROVIDER_NOT_ELIGIBLE** (400): preferredProvider is not
    eligible for this swap route

    - **PREFERRED_PROVIDER_QUOTE_UNAVAILABLE** (400): No quote was returned for
    the requested preferredProvider

    - **QUOTE_GENERATION_FAILED** (400): Could not generate quote for specified
    parameters

    - **FEE_SPONSORSHIP_NOT_ALLOWED** (403): Fee sponsorship is not allowed for
    this customer

    - **INVALID_TX_HASH** (400): Invalid transaction hash format

    - **TX_UPDATE_FAILED** (500): Failed to update transaction status

    - **INVALID_AMOUNT_PARAMS** (400): Cannot specify both amountIn and
    amountOut simultaneously

    - **MISSING_AMOUNT_PARAMS** (400): Either amountIn or amountOut is required

    - **INVALID_SLIPPAGE** (400): slippage must be a number between 0.0001 and
    0.5 (fraction of 1, e.g. 0.01 = 1%)

    - **AMOUNT_IN_TOO_LOW** (400): AmountIn is below the minimum for this route

    - **AMOUNT_IN_TOO_HIGH** (400): AmountIn exceeds available liquidity for
    this route. Try a smaller amount.

    - **AMOUNT_IN_TOO_LOW_OFFRAMP** (400): AmountIn must be greater than 1 USDC

    - **AMOUNT_IN_TOO_HIGH_OFFRAMP** (400): AmountIn must be less than 5k USDC

    - **AMOUNT_OUT_TOO_LOW_OFFRAMP** (400): AmountOut must be greater than 5
    BRLA

    - **AMOUNT_OUT_TOO_HIGH_OFFRAMP** (400): AmountOut must be less than 26k
    BRLA

    - **AMOUNT_IN_TOO_LOW_ONRAMP** (400): AmountIn must be greater than 5 BRLA

    - **AMOUNT_IN_TOO_HIGH_ONRAMP** (400): AmountIn must be less than 75k BRLA

    - **AMOUNT_OUT_TOO_LOW_ONRAMP** (400): AmountOut must be greater than 1 USDC

    - **AMOUNT_OUT_TOO_HIGH_ONRAMP** (400): AmountOut must be less than 15k USDC

    - **TRANSFER_VALIDATION_FAILED** (400): Token transfer validation failed

    - **REFUND_PROCESSING_FAILED** (500): Failed to process refund transaction

    - **INSUFFICIENT_AMOUNT_FOR_REFUND** (400): Transferred amount insufficient
    to cover refund fee

    - **FORBIDDEN** (403): Access denied

    - **INTERNAL_SERVER_ERROR** (500): An unexpected error occurred

    - **BYTECODE_GENERATION_FAILED** (500): Failed to generate transaction
    bytecode

    - **SWAP_EXECUTION_FAILED** (500): Failed to execute swap transaction

    - **KAMINO_SERVICE_UNAVAILABLE** (503): Lending service is temporarily
    unavailable. Please try again later.

    - **KAMINO_BAD_REQUEST** (400): Invalid request to lending service

    - **DEPOSIT_NOT_FOUND** (404): Bitcoin deposit not found

    - **SYMBIOSIS_API_ERROR** (502): Error communicating with Symbiosis API


    ## Support


    - Documentation: https://docs.deframe.io

    - Support: support@pods.finance

    - GitHub: https://github.com/pods-finance/deframe-api
  contact:
    name: Deframe Support
    email: support@pods.finance
    url: https://deframe.io
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://api.deframe.io
    description: Production server
security: []
tags:
  - name: Health
    description: Health check endpoints
  - name: KYC
    description: Reusable Sumsub KYC import and status endpoints
  - name: Swap v2
    description: Token swap operations (latest version)
  - name: Tracking
    description: Execution tracking for swaps, transfers, and strategy operations
  - name: Strategies
    description: DeFi yield strategy operations
  - name: Transfer
    description: Token transfer transaction generation
  - name: Wallets
    description: Wallet position tracking
  - name: Customers
    description: Customer account management
  - name: Quotes
    description: Quote history and management
  - name: Yield
    description: Yield optimization recommendations
paths:
  /strategies/{id}/status:
    get:
      tags:
        - Strategies
      summary: List pending strategy actions for a wallet
      description: >
        Returns pending (`PENDING`) investment actions for the given strategy
        and wallet. Provider-backed actions are refreshed before the response is
        built so status reflects current settlement progress. Actions still
        awaiting the user's first on-chain transfer (`INITIAL`) or already
        terminal are omitted from `actions`. Ondo stock strategies include
        `orderBook` (buy/sell availability) and, per action, a `suw` settlement
        snapshot.
      parameters:
        - schema:
            type: string
            description: Strategy ID or slug
          required: true
          name: id
          in: path
        - schema:
            allOf:
              - $ref: '#/components/schemas/Address'
              - description: Wallet address used when the action was created
          required: true
          name: wallet
          in: query
      responses:
        '200':
          description: Pending strategy actions retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StrategyInvestmentStatusResponse'
        '404':
          description: Strategy not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    Address:
      type: string
      description: Ethereum address (EVM-compatible)
      example: '0xb794F5eA0ba39494cE839613fffBA74279579268'
    StrategyInvestmentStatusResponse:
      type: object
      properties:
        strategyId:
          type: string
        wallet:
          $ref: '#/components/schemas/Address'
        hasPending:
          type: boolean
        message:
          type: string
        orderBook:
          type: object
          nullable: true
          properties:
            requestLend:
              $ref: '#/components/schemas/StrategyOrderBookProbe'
            requestWithdraw:
              $ref: '#/components/schemas/StrategyOrderBookProbe'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/StrategyPendingActionStatus'
      required:
        - strategyId
        - wallet
        - hasPending
        - message
        - actions
      description: >-
        Pending strategy operations for a wallet. Ondo stock strategies include
        order-book availability and per-action SUW settlement snapshots.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            httpStatus:
              type: number
            details:
              nullable: true
          required:
            - code
            - message
            - httpStatus
      required:
        - error
      example:
        error:
          code: QUOTE_NOT_FOUND
          message: Quote not found or expired
          httpStatus: 404
    StrategyOrderBookProbe:
      type: object
      properties:
        canOpenOrder:
          type: boolean
        code:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
        retryable:
          type: boolean
        errorType:
          type: string
          nullable: true
          description: Machine-readable availability reason when canOpenOrder is false
        probeSellAmount:
          type: string
        probeBuyAmount:
          type: string
      required:
        - canOpenOrder
        - retryable
      description: >-
        Whether a new buy or sell request is likely to succeed at poll time
        (Ondo stock strategies).
    StrategyPendingActionStatus:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        status:
          type: string
          enum:
            - PENDING
        createdAt:
          type: string
          nullable: true
          format: date-time
        updatedAt:
          type: string
          nullable: true
          format: date-time
        currentStep:
          allOf:
            - $ref: '#/components/schemas/StrategyStatusActionStep'
          nullable: true
        steps:
          type: array
          items:
            $ref: '#/components/schemas/StrategyStatusActionStep'
        suw:
          allOf:
            - $ref: '#/components/schemas/SuwStatusSnapshot'
          nullable: true
      required:
        - id
        - type
        - status
        - steps
    StrategyStatusActionStep:
      type: object
      properties:
        stepIndex:
          type: integer
        status:
          type: string
        legs:
          type: array
          items:
            $ref: '#/components/schemas/StrategyStatusActionLeg'
      required:
        - stepIndex
        - status
        - legs
    SuwStatusSnapshot:
      type: object
      properties:
        singleUseAddress:
          $ref: '#/components/schemas/Address'
        phase:
          type: string
          enum:
            - awaiting_transfer
            - awaiting_presign
            - order_in_progress
            - awaiting_forward
            - completed
            - refunded
            - expired
            - failed
            - cancelled
          description: High-level lifecycle phase for UI
        fundsReturnedToWallet:
          type: boolean
        order:
          allOf:
            - $ref: '#/components/schemas/SuwSettlementOrder'
          nullable: true
        balances:
          type: object
          nullable: true
          properties:
            underlying:
              $ref: '#/components/schemas/SuwStatusTokenBalance'
            strategy:
              $ref: '#/components/schemas/SuwStatusTokenBalance'
        timing:
          type: object
          properties:
            requestedAt:
              type: string
              nullable: true
            ageSeconds:
              type: integer
              nullable: true
            deadlineSeconds:
              type: integer
              nullable: true
            refundAt:
              type: string
              nullable: true
            secondsUntilRefund:
              type: integer
              nullable: true
        pricing:
          type: object
          nullable: true
          properties:
            side:
              type: string
            referencePriceUsd:
              type: number
              nullable: true
            livePriceUsd:
              type: number
              nullable: true
            priceSource:
              type: string
              nullable: true
            driftBps:
              type: integer
              nullable: true
            slippageBps:
              type: integer
              nullable: true
        suwSteps:
          type: array
          items:
            type: object
            properties:
              stepIndex:
                type: integer
              label:
                type: string
              status:
                type: string
              txHash:
                type: string
                nullable: true
              legs:
                type: array
                items:
                  $ref: '#/components/schemas/StrategyStatusActionLeg'
      required:
        - singleUseAddress
        - phase
        - fundsReturnedToWallet
    StrategyStatusActionLeg:
      type: object
      properties:
        kind:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        operator:
          type: string
          nullable: true
    SuwSettlementOrder:
      type: object
      properties:
        orderUid:
          type: string
        posted:
          type: boolean
        quoteId:
          type: string
          nullable: true
        action:
          type: string
          nullable: true
        sellAmount:
          type: string
          nullable: true
        buyAmount:
          type: string
          nullable: true
        status:
          type: string
          description: Settlement order state (e.g. not_posted, open, fulfilled, unknown)
        validTo:
          type: integer
          nullable: true
        creationDate:
          type: string
          nullable: true
        executionDate:
          type: string
          nullable: true
        executedSellAmount:
          type: string
          nullable: true
        executedBuyAmount:
          type: string
          nullable: true
        txHash:
          type: string
          nullable: true
        canOpenOrder:
          type: boolean
        code:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
        retryable:
          type: boolean
        lastPostError:
          type: string
          nullable: true
        lastPostAttemptAt:
          type: string
          nullable: true
        providerError:
          type: string
          nullable: true
    SuwStatusTokenBalance:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/Address'
        symbol:
          type: string
        decimals:
          type: integer
        amountRaw:
          type: string
        amountHumanized:
          type: string
      required:
        - address
        - symbol
        - decimals
        - amountRaw
        - amountHumanized
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Obtain from your Deframe dashboard.

````