Submit a signed EIP-2612 permit and have the facilitator’s signer execute transferWithPermit on the Meridian Proxy Facilitator contract. The user signs the permit off-chain; the facilitator pays the gas to apply the permit and transfer value tokens from owner to recipient.
Execute a gasless ERC-20 token transfer using a signed EIP-2612 permit. The user signs off-chain; the facilitator pays the gas and settles on-chain.Documentation Index
Fetch the complete documentation index at: https://docs.mrdn.finance/llms.txt
Use this file to discover all available pages before exploring further.
Authorization: Bearer <api-key>.
| Field | Required | Notes |
|---|---|---|
network | yes | EVM network identifier (e.g. base, base-sepolia, optimism, polygon, unichain, ink) |
tokenAddress | yes | ERC-20 token contract address |
owner | yes | Token owner address; must have signed the EIP-2612 permit |
spender | yes | Spender address authorized in the permit signature |
value | yes | Amount in the token’s smallest unit as a decimal string (1000000 = 1 USDC) |
deadline | yes | Unix timestamp after which the permit expires, as a decimal string |
v | yes* | Signature recovery byte (27 or 28). Provide v/r/s OR signature, not both. |
r | yes* | 32-byte hex signature component |
s | yes* | 32-byte hex signature component |
recipient | yes | Address that receives the transferred tokens |
| Network | Contract |
|---|---|
base | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
base-sepolia | 0x8e633dBf31adCc7D41BE3e95B7c8DD3526B5235A |
ethereum | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
avalanche | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
optimism | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
optimism-sepolia | 0x8e633dBf31adCc7D41BE3e95B7c8DD3526B5235A |
arbitrum | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
polygon | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
unichain | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
ink | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
sonic | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
worldchain | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
sei | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
hyperevm | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
megaeth | 0x8E7769D440b3460b92159Dd9C6D17302b036e2d6 |
fluent-testnet | 0xB3Ac1B7871942bCdCD0bD6C65765272bBE70B8Da |
errorReason | HTTP | Description |
|---|---|---|
invalid_request | 400 | Missing or malformed fields in the request body |
unsupported_network | 400 | network is not a supported EVM network |
network_not_configured | 400 | The facilitator has no private key configured for this network |
invalid_signature | 400 | Could not resolve a valid v, r, s from the provided inputs |
permit_execution_failed | 500 | On-chain transaction failed (RPC error, revert, bad permit, etc.) |
EVM network identifier. Must be one of the SupportedEVMNetworks (e.g. base, base-sepolia, optimism, optimism-sepolia, polygon, unichain, ink, hyperevm, megaeth, fluent-testnet, etc.).
"base-sepolia"
Token owner address (the signer of the EIP-2612 permit). Tokens are pulled from this address.
^0x[a-fA-F0-9]{40}$"0x742d35Cc6634C0532925a3b8D0c4E5e6C2aE7A3e"
Spender address authorized by the permit signature. Required by the request schema. The on-chain transferWithPermit call uses the facilitator contract as the spender; this field is forwarded for signing-side compatibility.
^0x[a-fA-F0-9]{40}$"0x8e633dBf31adCc7D41BE3e95B7c8DD3526B5235A"
uint256 token amount as a decimal string in the token's smallest unit (e.g. 1000000 = 1 USDC at 6 decimals). Numbers and bigints are accepted and coerced to a decimal string.
^\d+$"1000000"
uint256 permit deadline as a decimal Unix timestamp string. Numbers and bigints are accepted and coerced to a decimal string.
^\d+$"1893456000"
Address that receives the transferred tokens after the permit is applied.
^0x[a-fA-F0-9]{40}$"0x742d35Cc6634C0532925a3b8D0c4E5e6C2aE7A3e"
ERC-20 token address. Documented as optional with a fallback to the network's USDC, but the actual transferWithPermit call uses this value directly. Provide it explicitly to avoid permit_execution_failed.
^0x[a-fA-F0-9]{40}$"0x036CbD53842c5426634e7929541eC2318f3dCF7e"
Optional 65-byte EIP-2612 permit signature, hex-encoded. Schema accepts ^0x[a-fA-F0-9]+$. WARNING: this field is broken at runtime in the current handler (viem returns r/s as 0x-prefixed and the assembler re-wraps them, producing malformed bytes); use the split (v, r, s) form instead. Provide this OR (v, r, s), but not both.
^0x[a-fA-F0-9]+$"0x..."
Optional v byte of the signature. The exclusivity check uses Boolean(data.v), so v = 0 is treated as missing; use 27 or 28.
0 <= x <= 255Optional r component. The schema accepts any string (no regex). In practice, send a 32-byte hex value (with or without leading 0x); only the first occurrence of 0x is stripped when assembling the final signature.
Optional s component. The schema accepts any string (no regex). In practice, send a 32-byte hex value (with or without leading 0x); only the first occurrence of 0x is stripped when assembling the final signature.
Permit transaction submitted
true only when the on-chain transaction was submitted successfully.
Transaction hash on success. Empty string ("") on every error response.
Echoes the network from the request (or "" if the request body could not be parsed).
Present on error responses only.
invalid_request, unsupported_network, network_not_configured, invalid_signature, permit_execution_failed