---
title: "Enter a yield"
method: POST
path: "/v1/actions/enter"
tags: ["Actions"]
---

# Enter a yield

`POST /v1/actions/enter`

Generate the transactions needed to enter a yield position with the provided parameters.

## Request body

- CreateActionDto
  - `yieldId` string, required — Yield ID to perform the action on
  - `address` string, required — User wallet address
  - `arguments` ActionArgumentsDto
    - `amount` string — Amount in human-readable token units, not the smallest denomination. For example, "1.500000" for 1.5 USDC (6 decimals) or "0.01" for 0.01 ETH (18 decimals). Precision up to the token's decimal places is supported.
    - `amounts` string[] — Amounts in human-readable token units, not the smallest denomination. Precision up to the token's decimal places is supported.
    - `shareAmount` string — Share amount to withdraw
    - `shareAmountRaw` string — Share amount to withdraw in raw decimals
    - `validatorAddress` string — Validator address for single validator selection
    - `validatorAddresses` string[] — Multiple validator addresses
    - `providerId` string — Provider ID for Ethereum native staking
    - `duration` number — Duration for Avalanche native staking (in seconds)
    - `inputToken` string — Token for deposits. Use "0x" for native token or provide the token address. For cross-chain deposits, also provide inputTokenNetwork.
    - `inputTokenNetwork` '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' — Network for the input token. Required for cross-chain deposits when the token is on a different network than the vault.
    - `outputToken` string — Token for withdrawals. Use "0x" for native token or provide the token address. For cross-chain withdrawals, also provide outputTokenNetwork.
    - `outputTokenNetwork` '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' — Network for the output token. Required for cross-chain withdrawals when the destination is on a different network than the vault.
    - `subnetId` number — Subnet ID for Bittensor staking
    - `tronResource` 'BANDWIDTH' | 'ENERGY' — Tron resource type for Tron staking
    - `feeConfigurationId` string — Fee configuration ID for custom fee settings
    - `cosmosPubKey` string — Cosmos public key for Cosmos staking
    - `tezosPubKey` string — Tezos public key for Tezos staking
    - `cAddressBech` string — Avalanche C-chain address
    - `pAddressBech` string — Avalanche P-chain address
    - `executionMode` 'individual' | 'batched' — Transaction execution mode
    - `ledgerWalletApiCompatible` boolean — Transactions should have Ledger wallet API compatibility for hardware wallet users
    - `useMaxAmount` boolean — Use max amount for ERC4626 withdraw
    - `useInstantExecution` boolean — Use instant execution for exit (faster but may have fees)
    - `useAutoClaim` boolean — Authorize the redeem operator to auto-claim settled async redemptions (one-time per wallet)
    - `skipPrechecks` boolean — Skip pre-flight balance and rent checks
    - `useMaxAllowance` boolean — When true, ERC20 approval transactions use the maximum allowance (uint256.max) instead of the exact deposit amount. Useful to avoid repeated approval transactions on subsequent deposits.
    - `feePayerAddress` string — Fee payer address for gas-sponsored wallets (Solana). When provided, this address is used as the payer for account creation instructions and as the transaction-level fee payer.
    - `receiverAddress` string — Receiver wallet address: ERC4626 vault flows, or on Solana the address for tokens after an optional post-exit swap
    - `rangeMin` string — Minimum price bound for concentrated liquidity pools (as decimal string). Must be non-negative (can be 0) and less than rangeMax.
    - `rangeMax` string — Maximum price bound for concentrated liquidity pools (as decimal string). Must be positive and greater than rangeMin.
    - `percentage` number — Percentage of liquidity to exit (0-100). Required for partial exits from liquidity positions.
    - `tokenId` string — NFT token ID for concentrated liquidity positions. Required for exiting specific positions.

## Response `201`

Returns action with array of transactions to execute

- 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

- `400` — Invalid request parameters
- `401` — Invalid or missing API key
- `403` — Access denied due to geolocation restrictions
- `404` — Yield not found with the specified ID
- `429` — Rate limit exceeded
- `500` — Internal server error

---

[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)
