NEAR Intents: outcome-based cross-chain swaps via 1Click API
NEAR Intents lets users declare swap outcomes; market makers fill them. 1Click REST API, Solana in the chain set, quote→deposit→status flow for builders.
devrels.xyz/a/255short linkNEAR Intents: outcome-based cross-chain swaps via 1Click API. Docs live at docs.near-intents.org. Instead of scripting bridge hops and DEX legs, a user (or app) expresses what they want — e.g. SOL on Solana → USDC on Base — and market makers bid to fulfill it under on-chain verification on NEAR.
What an intent is
From the official “What are Intents?” guide: an intent states the outcome, not the path. Flow:
- Create intent (assets, amounts, destination).
- Market makers compete on price/speed.
- Smart contracts enforce atomic-style settlement or refund.
- Destination receives tokens; user keeps custody framing with refunds on failure.
NEAR hosts verification; assets on many external chains are represented as NEAR-facing asset IDs (often nep141:… / .omft.near style bridges in the token catalog).
1Click Swap API (builder surface)
1Click is the REST distribution channel: it temporarily routes deposits through a swapping agent that coordinates solvers so integrators do not implement full intent machinery themselves. Base host in docs examples: https://1click.chaindefuser.com.
| Step | Endpoint |
|---|---|
| List tokens | GET /v0/tokens |
| Quote | POST /v0/quote (+ Bearer JWT recommended) |
| Status | Check execution status by deposit address (memo if required) |
| Optional | Submit deposit tx hash; generate/submit signed intents; ANY_INPUT withdrawals |
Also in the docs tree: Swap SDK (TS/Go/Rust), fee configuration, Earn (multichain yield), Explorer API, React widget, agent skills, confidential swaps, and off-chain signed intent execution (sign intent instead of on-chain deposit path).
Solana angle
Live /v0/tokens responses include blockchain: "sol" entries (native SOL and SPL mints with Solana contractAddress). That puts NEAR Intents in the same “painless corridor” conversation as LI.FI / Relay for Solana↔EVM (and beyond) when the pair is listed — always verify the pair exists before promising UX.
Same-chain SOL↔SPL should still default to Jupiter. Use intents when the destination chain or asset family leaves Solana (or enters it from elsewhere).
Thin PoC — tokens → quote → status
// Conceptual control flow from NEAR Intents 1Click docs.
// Get a JWT from their API key flow for production (avoids documented extra fee).
const ONECLICK = "https://1click.chaindefuser.com"
export async function listTokens() {
const res = await fetch(`${ONECLICK}/v0/tokens`)
if (!res.ok) throw new Error(`tokens ${res.status}`)
return res.json() as Promise<
Array<{ assetId: string; blockchain: string; symbol: string; decimals: number; contractAddress?: string }>
>
}
export async function quoteExactIn(p: {
jwt: string
originAsset: string
destinationAsset: string
amount: string // base units
// recipient / refund / slippage fields per current OpenAPI
body: Record<string, unknown>
}) {
const res = await fetch(`${ONECLICK}/v0/quote`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${p.jwt}`,
},
body: JSON.stringify({
dry: false,
swapType: "EXACT_INPUT",
slippageTolerance: 100,
originAsset: p.originAsset,
depositType: "ORIGIN_CHAIN",
destinationAsset: p.destinationAsset,
amount: p.amount,
...p.body,
}),
})
if (!res.ok) throw new Error(`quote ${res.status} ${await res.text()}`)
return res.json()
}
// After quote: send deposit to returned deposit address (and memo if present),
// optionally POST deposit tx hash, then poll status until done / refunded.
// Verify quote signatures when docs require it for your integration tier.# Public token catalog (no key)
curl -s https://1click.chaindefuser.com/v0/tokens | head -c 400
# OpenAPI
# https://1click.chaindefuser.com/docs/v0/openapi.yaml
# Agent index
# https://docs.near-intents.org/llms.txtChains and assets
Supported chains expand over time (EVM set includes Ethereum, Base, Arbitrum, Optimism, BNB, Polygon, and more; non-EVM includes NEAR, BTC, Solana, TON, Tron, and others present in the live token list). Treat docs chain pages + GET /v0/tokens as source of truth — not a static table in this article.
vs other “painless” stacks
| System | Model |
|---|---|
| NEAR Intents / 1Click | Intent + competing solvers; NEAR verification; deposit/status API |
| LI.FI | Omnichain router over bridges/DEXs; quote/status |
| Relay | Intent/solver-style payments API |
| Stack map | When to use Jupiter vs router vs intent layer |
Builder checklist
- Read docs + 1Click ToS.
- Obtain JWT (API keys guide) for production quotes.
- Resolve
assetIds from/v0/tokens(filterblockchain === "sol"for Solana legs). - Implement quote → user review → deposit → status machine + refunds.
- Verify quote signatures per docs before treating a quote as binding.
- Configure app fees if you monetize the corridor.
People and links
| Surface | Link |
|---|---|
| Docs | docs.near-intents.org |
| Product | near-intents.org |
| 1Click API | https://1click.chaindefuser.com |
| X | @near_intents |
| Telegram | t.me/near_intents |
| Org | /organisations/near-intents |
Resources
Keep reading
Single integration for same-chain swaps, cross-chain bridges, intents, and DeFi deposits — li.quest API with SVM among supported chain types.
Same-chain stays Jupiter-class. Cross-ecosystem needs routers/solvers + messaging + honest status. Pyth prices the edge cases; Wormhole moves messages/assets.
Define an intent; Relay solvers fill across 69+ chains — integrate via Quote, Execute, and Status.
Get new articles in your inbox
Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.
