priority_fee and
processor_tip are denominated.
Keys are not interchangeable — a Solana key sent to the EVM host is rejected
with
UNAUTHORIZED. Token deploys are Solana-only; see
Deploy a token.
Regions
Solana runs in two regions. They are interchangeable: same account, same wallets, same keys, same request and response format. Pick whichever is closer — the only thing that differs is network latency to the API, which is worth getting right if you trade on tight timings.
Your rate-limit budget is per account, not per
region — the two regions draw on one budget, so calling both does not double
your allowance.
Regional budgets reconcile continuously rather than instantaneously. Just
after you switch regions, the
X-RateLimit-Remaining-* headers from the new
region can briefly read high before they catch up with what you already spent
elsewhere. Treat a sudden increase in remaining budget as stale rather than
as headroom, and keep your own count if you pace against these headers.Selecting a chain
On the EVM host, a swap may name the chain it targets with a top-levelchain field, matched case-insensitively:
chain is optional. Omit it and the token address is resolved across the
supported chains automatically:
chain field; the host itself is the chain.
Supported chains and quote assets
A quote asset is what a Buy is denominated in — the token you spend, and the onewallets[].amount is measured in. Each chain supports its native gas
token plus a set of stablecoins.
Arc’s native gas token is USDC, so it has no separate stablecoin.
Naming the native asset
Each chain’s native token is named by its own symbol —ETH on Ethereum,
Base and Robinhood, BNB on BNB Chain, USDC on Arc. Omitting quote_asset
selects the native token too, so these are equivalent on Base:
SOL.
quote_asset is validated against the chain you are trading on. Asking for an
asset that chain does not support is rejected, and the error lists the ones that
are:
USDT works on Ethereum and BNB Chain but not on Base or Robinhood.
What amount is denominated in
On a Buy, wallets[].amount is denominated in the quote asset you
selected — not in the chain’s native token, and not in the token you are
buying. Changing quote_asset changes what amount means.
"10", so set amount and
quote_asset together.
On a Sell, quote_asset does not affect amount at all — it is read
according to sell_mode: a percentage of holdings from 1–100 (the default),
or an absolute token quantity when sell_mode is "tokens".
amount is always a decimal string, never a JSON number — "0.05", not
0.05. This avoids floating-point precision loss on large or fine-grained
amounts. Sending a number is rejected with INVALID_REQUEST.Fee denomination
priority_fee and processor_tip mean different things on each host. This is
the most common source of mis-sized fees.
So a
priority_fee of 0.001 is a thousandth of a SOL on Solana, but a
thousandth of a gwei on EVM. A typical EVM priority fee is a whole number of
gwei:
3 is 3 gwei of priority fee, and 0.0005 is 0.0005 BNB of processor tip.
The same split applies to the priority_fee and processor_tip fields inside
auto-orders.
Setting auto_tip: true lets the server choose both values for you, and is the
safer default if you are not tuning fees per chain.
