--- title: Deep linking description: Link into the Hular swap UI with the pair, amount, and recipient prefilled. --- The swap page reads query parameters on load, so you can send users a URL that lands on a live quote instead of an empty form. Nothing is submitted on their behalf: the link prefills the form, and the user still connects a wallet and confirms the deposit. ```text https://hular.dev/?fromChain=base&fromToken=USDC&toChain=solana&toToken=SOL&amount=25 ``` ## Parameters | Parameter | Prefills | Format | | --- | --- | --- | | `fromChain` | Source chain | Chain name (`base`), or an EVM chain id (`8453`). Solana only by name. | | `fromToken` | Source token | Token address, or a catalog symbol (`USDC`). | | `toChain` | Destination chain | Same as `fromChain`. | | `toToken` | Destination token | Same as `fromToken`. | | `amount` | Amount field | Decimal in human units, such as `25` or `0.5`. Input amount for exact input, output amount otherwise. | | `tradeType` | Trade type | `exact_input`, `expected_output`, `exact_output`, or `exact_input_guaranteed_output`. | | `toAddress` | Recipient | Address valid on the destination chain. | All parameters are optional and independent: a link can set just the pair, just the destination side, or everything at once. ## Token identification A `fromToken` or `toToken` value that looks like an address is matched against the [token catalog](/integration/tokens) first; an address outside the catalog is resolved live from the chain, the same way a pasted address is in the token picker. Any other value is treated as a symbol and matched case-insensitively against the catalog for that chain. Symbols are unique per chain, so a symbol link is unambiguous, but only catalog tokens resolve this way; long-tail tokens need the address form. Token parameters require their chain parameter: `fromToken` without a resolvable `fromChain` is ignored, and the same holds for the destination side. ## Validation Invalid input never breaks the page. Each parameter that fails validation is dropped and its field falls back to the default: - A chain that is unknown, not configured, or currently closed for quoting drops both parameters for that side. - A token that resolves to nothing is dropped. - A non-numeric or non-positive `amount`, an unknown `tradeType`, or a `toAddress` that does not match the destination chain's address format is dropped. Parameters apply on initial page load only. The URL does not track later edits, so a shared link always reflects what the sender put in it, not what the recipient did afterwards. ## Examples Prefill a USDC transfer from Base to Solana by symbol: ```text https://hular.dev/?fromChain=base&fromToken=USDC&toChain=solana&toToken=USDC&amount=100 ``` The same pair by address, with the source chain given as an EVM chain id and a fixed recipient: ```text https://hular.dev/?fromChain=8453&fromToken=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&toChain=solana&toToken=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&amount=100&toAddress= ``` Ask for an exact amount out instead of an exact amount in: ```text https://hular.dev/?fromChain=arbitrum&fromToken=USDT&toChain=base&toToken=USDC&amount=250&tradeType=exact_output ```