Skip to main content
Send your first crosschain intent straight through the REST API. This guide walks the full flow for EOA users.
Using the Rhinestone SDK? The wallet quickstart already covers crosschain intents. Come back here when you need API-specific configuration.Using an existing smart account (non-Rhinestone SDK)? You’ll need to install the Intent Executor on each account before using Warp, then follow the smart account signing guide for the signing step.

Prerequisites

  • A Rhinestone API key (request one here) — not required for testnets
  • An EOA with funds on Ethereum, Optimism, Base, or Arbitrum — the source chains this quickstart handles below (extend the accountAccessList and wrap map for any other supported chain)

Steps

1

Get a quote

Submit a meta intent to the /quotes endpoint. Specify your destination chain, the token and amount you want on that chain, and your account:
The response is a server-ranked routes array. Use routes[0] unless you have your own ranking. Each route carries:
  • intentId: server-stored handle, used to submit
  • cost: input/output amounts and fee breakdown
  • signData: EIP-712 typed data to sign
  • tokenRequirements: approvals or wrapping the user must complete before signing
2

Fulfill token requirements

Before signing, the user must fulfill any tokenRequirements returned in the quote. Keys are CAIP-2 chain ids (eip155:8453):ERC-20 approvals — approve tokens to the Permit2 contract:
ETH wrapping — wrap native ETH to WETH:
Use max approvals to the Permit2 contract. This is the only contract you ever approve — future intents won’t need a new approval.
3

Sign the intent

Forward signData.origin[] and signData.destination directly to signTypedData. One signature per source chain, plus the destination signature:

Signing guide

Smart account signing and validator wrapping.
4

Submit the intent

Post the signed intent to /intents:
If submit returns 404, the quote TTL elapsed — re-quote and re-sign.
5

Poll for completion

Track execution status using the intentId:
Once execution finishes you’ll see the terminal status:
Typical execution time is under 2 seconds. See Tracking intents for the full lifecycle.
Your tokens moved across chains from a single set of signatures — no bridge, no manual settlement.

Next steps

Getting a Quote

Advanced quote options: sponsorship, source chain filtering, destination executions.

Token Requirements

Full details on approvals and ETH wrapping.

Error Handling

Common Orchestrator errors and how to fix them.