---
title: "Create new intent"
method: POST
path: "/intents"
tags: ["Intents"]
---

# Create new intent

`POST /intents`

Creates a new payment intent with cross-chain transfer parameters

## Request body

- CreateIntentDto
  - `sender` string — Sender wallet address on the source chain
  - `paymentLinkId` string — Payment link ID associated with the intent
  - `amount` string, required — Amount to transfer in smallest unit (e.g., wei for ETH).
  - `amountSymbol` string, required — Token symbol for amount denomination (e.g., USDC, USDT, ETH)
  - `tokenIn` string, required — Token address on the source chain
  - `source_chain` 'ARBITRUM_MAINNET' | 'ARBITRUM_TESTNET' | 'AVALANCHE_MAINNET' | 'AVALANCHE_TESTNET' | 'BASE_MAINNET' | 'BASE_TESTNET' | 'STARKNET_MAINNET' | 'STARKNET_TESTNET' | 'BSC_MAINNET' | 'ETHEREUM_MAINNET' | 'ETHEREUM_TESTNET' | 'OPTIMISM_MAINNET' | 'OPTIMISM_TESTNET' | 'MONAD_MAINNET' | 'MONAD_TESTNET' | 'POLYGON_MAINNET' | 'HYPEREVM_MAINNET' | 'LISK_MAINNET' | 'SOLANA_MAINNET' | 'SOLANA_TESTNET' | 'TRON_MAINNET', required — Source blockchain network for the deposit
  - `destination_chain` 'ARBITRUM_MAINNET' | 'ARBITRUM_TESTNET' | 'AVALANCHE_MAINNET' | 'AVALANCHE_TESTNET' | 'BASE_MAINNET' | 'BASE_TESTNET' | 'STARKNET_MAINNET' | 'STARKNET_TESTNET' | 'BSC_MAINNET' | 'ETHEREUM_MAINNET' | 'ETHEREUM_TESTNET' | 'OPTIMISM_MAINNET' | 'OPTIMISM_TESTNET' | 'MONAD_MAINNET' | 'MONAD_TESTNET' | 'POLYGON_MAINNET' | 'HYPEREVM_MAINNET' | 'LISK_MAINNET' | 'SOLANA_MAINNET' | 'SOLANA_TESTNET' | 'TRON_MAINNET', required — Source blockchain network for the deposit
  - `recipient` string, required — Recipient wallet address on the destination chain
  - `refund_address` string — Refund address on the source chain if intent fails
  - `metadata` object — Additional metadata for the intent

## Response `201`

Intent successfully created

- object
  - `id` number
  - `client_id` string
  - `sender` string
  - `initialAmount` string
  - `fees_in_usd` string
  - `app_fee_in_usd` string
  - `total_amount_in_usd` string
  - `total_amount_in_asset_token` string
  - `fees_in_asset_token` string
  - `app_fee_in_asset_token` string
  - `asset_token_symbol` string
  - `asset_token_decimals` number
  - `slippage` string
  - `tokenIn` string
  - `tokenOut` string
  - `intent_address` string — Solana: intent PDA — show to users for QR/Send; transfer tokenIn here (wallet derives deposit ATA). EVM/Starknet: contract address.
  - `source_chain` string
  - `destination_chain` string
  - `recipient` string
  - `refund_address` string
  - `relayer` string
  - `coordinator` string
  - `bridger` string
  - `bridgeExtraData` string
  - `intent_nonce` number
  - `intent_status` 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED'
  - `tx_hash` string, nullable
  - `needs_relay` boolean
  - `expires_at` string, date-time
  - `metadata` object
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400` — Bad Request - Invalid parameters
- `401` — Unauthorized - Invalid or missing API key

## Changes

- **2026-07-22** `76a4e00b118d` — 7 info
  - added the new optional request property `paymentLinkId`
  - added the new `SOLANA_MAINNET` enum value to the request property `destination_chain/allOf[#/components/schemas/Chains]/`
  - added the new `SOLANA_MAINNET` enum value to the request property `source_chain/allOf[#/components/schemas/Chains]/`
  - added the new `SOLANA_TESTNET` enum value to the request property `destination_chain/allOf[#/components/schemas/Chains]/`
  - …3 more
- **2026-02-17** `2168c5f4fdd5` — 1 breaking, 2 warning, 23 info
  - added the new required request property `amountSymbol`
  - removed the optional property `fees` from the response with the `201` status
  - removed the optional property `totalAmount` from the response with the `201` status
  - added the new `HYPEREVM_MAINNET` enum value to the request property `destination_chain/allOf[#/components/schemas/Chains]/`
  - …22 more
- **2025-12-13** `0172b83f90c7` — 4 breaking
  - the `amount` request property type/format changed from `number`/`` to `string`/``
  - the `fees` response's property type/format changed from `number`/`` to `string`/`` for status `201`
  - the `initialAmount` response's property type/format changed from `number`/`` to `string`/`` for status `201`
  - the `totalAmount` response's property type/format changed from `number`/`` to `string`/`` for status `201`
- **2025-11-11** `fce39ccb3e9d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/horuslabsio/apis/chainrails-api/changes/intents/post.md)

---

[API](https://skmtc.dev/horuslabsio/apis/chainrails-api.md) · [All operations](https://skmtc.dev/horuslabsio/apis/chainrails-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/horuslabsio/chainrails-api/revisions/dcf19c1bab20/schema)
