---
title: "Get next step transaction(s)"
method: POST
path: "/v1/actions/{id}/step"
tags: ["Actions", "Actions"]
---

# Get next step transaction(s)

`POST /v1/actions/{id}/step`

For async multi-step actions (e.g., cross-chain bridges, delayed withdrawals), retrieve the next transaction(s) after the previous step has been confirmed on-chain. Call this when hasNextStep is true on the action response.

## Path parameters

- `id` string, required

## Response `200`

Updated action with next transaction(s)

- ActionDto
  - `id` string, required — Unique action identifier (UUID)
  - `integrationId` string, required — Integration identifier
  - `action` 'supply' | 'borrow' | 'repay' | 'withdraw' | 'enableCollateral' | 'disableCollateral', required — Action type executed
  - `address` string, required — User wallet address
  - `status` 'CANCELED' | 'CREATED' | 'WAITING_FOR_NEXT' | 'PROCESSING' | 'FAILED' | 'SUCCESS' | 'STALE', required — Current action status
  - `transactions` TransactionDto[], required — Transactions to sign (current step only)
    - `id` string, required — Transaction ID (UUID)
    - `network` 'ethereum' | 'ethereum-goerli' | 'ethereum-holesky' | 'ethereum-sepolia' | 'ethereum-hoodi' | 'arbitrum' | 'base' | 'base-sepolia' | 'gnosis' | 'optimism' | 'polygon' | 'polygon-amoy' | 'starknet' | 'zksync' | 'linea' | 'unichain' | 'monad-testnet' | 'monad' | 'robinhood' | 'robinhood-testnet' | 'avalanche-c' | 'avalanche-c-atomic' | 'avalanche-p' | 'binance' | 'celo' | 'fantom' | 'harmony' | 'moonriver' | 'okc' | 'viction' | 'core' | 'sonic' | 'plasma' | 'katana' | 'hyperevm' | 'tempo' | 'pharos' | 'agoric' | 'akash' | 'axelar' | 'band-protocol' | 'bitsong' | 'canto' | 'chihuahua' | 'comdex' | 'coreum' | 'cosmos' | 'crescent' | 'cronos' | 'cudos' | 'desmos' | 'dydx' | 'evmos' | 'fetch-ai' | 'gravity-bridge' | 'injective' | 'irisnet' | 'juno' | 'kava' | 'ki-network' | 'mars-protocol' | 'nym' | 'okex-chain' | 'onomy' | 'osmosis' | 'persistence' | 'quicksilver' | 'regen' | 'secret' | 'sentinel' | 'sommelier' | 'stafi' | 'stargaze' | 'stride' | 'teritori' | 'tgrade' | 'umee' | 'sei' | 'mantra' | 'celestia' | 'saga' | 'zetachain' | 'dymension' | 'humansai' | 'neutron' | 'polkadot' | 'kusama' | 'westend' | 'bittensor' | 'aptos' | 'binancebeacon' | 'cardano' | 'near' | 'solana' | 'solana-devnet' | 'stellar' | 'stellar-testnet' | 'sui' | 'tezos' | 'tron' | 'ton' | 'ton-testnet' | 'hyperliquid', required — Network identifier
    - `chainId` string, required — Chain ID
    - `type` 'APPROVAL' | 'AUTHORIZE' | 'SUPPLY' | 'BORROW' | 'REPAY' | 'WITHDRAW' | 'ENABLE_COLLATERAL' | 'DISABLE_COLLATERAL', required — Transaction type
    - `status` 'NOT_FOUND' | 'CREATED' | 'BLOCKED' | 'WAITING_FOR_SIGNATURE' | 'SIGNED' | 'BROADCASTED' | 'PENDING' | 'CONFIRMED' | 'FAILED' | 'SKIPPED', required — Current transaction status
    - `address` string, required — User address
    - `signingFormat` 'EVM_TRANSACTION' | 'EIP712_TYPED_DATA' | 'SOLANA_TRANSACTION' | 'COSMOS_TRANSACTION' — Signing format required
    - `signablePayload` union — Unsigned transaction payload to sign. For EVM transactions, this is a JSON string containing from, to, data, gasLimit, and value fields.
      - string
      - object
  - `hasNextStep` boolean, required — Whether there are more transactions to sign after the current step completes. When true, call POST /actions/:id/step after confirming to get the next transaction(s). Used for async multi-step flows such as cross-chain bridges or delayed withdrawals.
  - `currentStep` number, required — Current step number (1-indexed)
  - `totalSteps` number, required — Total number of steps in this action. Most actions are single-step. Multi-step actions occur when an async operation (e.g., bridge confirmation) must complete before the next transaction can be constructed.
  - `rawArguments` ArgumentsDto
    - `amount` string — Amount in human-readable units (e.g. "1.5" for 1.5 USDC). Provide either amount or amountRaw.
    - `amountRaw` string — Amount in raw token units (e.g. "1500000" for 1.5 USDC with 6 decimals). Provide either amount or amountRaw.
    - `repayAll` boolean — Repay the full outstanding debt using protocol-specific full-repay semantics. Only valid for repay actions. When true, omit amount and amountRaw.
    - `tokenAddress` string — Token address to supply/borrow/repay/withdraw
    - `collateralTokenAddress` string — Collateral token address. Required when providing collateralAmount for pool-based protocols (Aave). Inferred from marketId for isolated-market protocols (Morpho Blue).
    - `collateralAmount` string — Optional collateral amount in human-readable units (e.g. "0.5" for 0.5 ETH). For borrow: collateral to deposit before borrowing. For repay: collateral to withdraw after repaying. Provide either collateralAmount or collateralAmountRaw.
    - `collateralAmountRaw` string — Optional collateral amount in raw token units (e.g. "50000000" for 0.5 ETH with 8 decimals). Provide either collateralAmount or collateralAmountRaw.
    - `borrowAmount` string — Supply action only. Desired borrow amount in human-readable units of the market loan token. Provide together with targetLtv to have the API derive the required collateral (post-fee). Mutually exclusive with amount/amountRaw.
    - `targetLtv` string — Supply action only. Target loan-to-value as a decimal (e.g. "0.1" = 10%). Provide together with borrowAmount. Must not exceed the market max LTV.
    - `marketId` string, required — Market ID as returned by GET /v1/markets. Identifies the specific lending market for the action.
  - `metadata` ActionMetadataDto
    - `currentHealthFactor` string, nullable, required — Current health factor. Null when there is no debt.
    - `predictedHealthFactor` string, nullable, required — Predicted health factor after the action. Null when predicted debt is zero.
    - `currentLtv` string, required — Current loan-to-value ratio as decimal
    - `predictedLtv` string, required — Predicted loan-to-value ratio after the action
    - `liquidationThreshold` string, required — Liquidation threshold as decimal
    - `predictedTotalSupplyUsd` string, required — Predicted total supply in USD after the action
    - `predictedTotalDebtUsd` string, required — Predicted total debt in USD after the action
    - `originationFeeBps` number — Origination fee in basis points when a borrow wrapper is applied
    - `originationFeeAmount` string — Origination fee amount in borrowed-token units when a borrow wrapper is applied
    - `effectivePrincipalAmount` string — Actual principal recorded onchain in borrowed-token units when a borrow wrapper is applied
    - `feeAmount` string — Fee charged on supplied collateral, in human-readable units of the supplied token. Present on supply actions; may also be present on borrow actions that bundle a collateral leg, depending on the integration. "0" when no supply fee wrapper is configured or its rate is 0.
    - `feeBps` number — Fee rate in basis points on supplied collateral. Present on supply actions; may also be present on borrow actions that bundle a collateral leg, depending on the integration. 0 when no supply fee wrapper is configured or its rate is 0.
    - `effectiveCollateralAmount` string — Collateral derived from borrowAmount + targetLtv, in human-readable units of the collateral token (post-fee). Present only when a supply action is called in borrow-derived mode.
  - `createdAt` string, date-time, required — When the action was created

## Other responses

- `401` — Invalid or missing API key
- `404` — Action not found
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/yield/apis/yield-xyz-api.md) · [All operations](https://skmtc.net/yield/apis/yield-xyz-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/yield/yield-xyz-api/revisions/acfa80015ca5/schema)
