Skip to main content
NEAR Intents exposes an RPC endpoint to request quotes, publish signed intents, and check intent status on the Message Bus. Endpoint: POST https://solver-relay-v2.chaindefuser.com/rpc
Developers searching to integrate swap functionality should use the 1Click Swap API instead.

quote

Request price quotes from connected solvers. The Message Bus forwards the request to all solvers, waits up to 3000ms, and returns all available options.
Only one of exact_amount_in or exact_amount_out should be provided, not both.
defuse_asset_identifier_in
string
required
Asset to trade from (e.g., nep141:ft1.near)
defuse_asset_identifier_out
string
required
Asset to trade to (e.g., nep141:ft2.near)
exact_amount_in
string
Amount of input token for exchange
exact_amount_out
string
Amount of output token for exchange
min_deadline_ms
number
default:"60000"
Minimum validity time for offers (in milliseconds). Shorter times may yield better prices.
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "quote",
  "params": [
    {
      "defuse_asset_identifier_in": "nep141:ft1.near",
      "defuse_asset_identifier_out": "nep141:ft2.near",
      "exact_amount_in": "1000",
      "min_deadline_ms": 60000
    }
  ]
}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    {
      "quote_hash": "00000000000000000000000000000000",
      "defuse_asset_identifier_in": "nep141:ft1.near",
      "defuse_asset_identifier_out": "nep141:ft2.near",
      "amount_in": "1000",
      "amount_out": "2000",
      "expiration_time": "2024-10-01T12:10:27Z"
    }
  ]
}
Response fields:
  • quote_hash - Quote response hash
  • defuse_asset_identifier_in - Asset to trade from
  • defuse_asset_identifier_out - Asset to trade to
  • amount_in - Input amount (exact if specified, proposed otherwise)
  • amount_out - Output amount (exact if specified, proposed otherwise)
  • expiration_time - Expiration timestamp of the offer

publish_intent

Submit a signed user intent for execution. Supported signature standards: nep413, erc191, raw_ed25519.
quote_hashes
string[]
required
Quote response hashes from solvers
signed_data
object
required
  • standard - "nep413"
  • payload.message - Stringified intent payload
  • payload.nonce - Unique nonce
  • payload.recipient - "intents.near"
  • payload.callbackUrl - Optional, for some wallets
  • signature - Signature of the payload
  • public_key - Signer’s public key
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "publish_intent",
  "params": [
    {
      "quote_hashes": ["00000000000000000000000000000000"],
      "signed_data": {
        "standard": "nep413",
        "payload": {
          "recipient": "intents.near",
          "nonce": "Vij2xgAlKBKzAEiS6N1S/hfrNi8/We0ieTmcMBti1YE=",
          "message": "{\"deadline\":\"2024-10-14T12:53:40.000Z\",\"intents\":[{\"intent\":\"token_diff\",\"diff\":{\"nep141:ft1.near\":\"300\",\"nep141:ft2.near\":\"-500\"}}],\"signer_id\":\"user.near\"}"
        },
        "public_key": "ed25519:C3jXhkGhEx88Gj7XKtUziJKXEBMRaJ67bWFkxJikVxZ2",
        "signature": "ed25519:5tk3UyFcAgnd6D4ZAuzEdZqMrneRSiTqe48ptjbjYHwiCy2vTw38uDB3KusW2cEsF3TGcqZXoQmRaeNs2erhPpqu"
      }
    }
  ]
}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "status": "OK",
    "intent_hash": "00000000000000000000000000000000"
  }
}
Response fields:
  • status - "OK" or "FAILED"
  • reason - Error reason (if failed)
  • intent_hash - Intent identifier

get_status

Check the status of an intent’s execution.
intent_hash
string
required
Intent identifier
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "get_status",
  "params": [
    {
      "intent_hash": "00000000000000000000000000000000"
    }
  ]
}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "intent_hash": "00000000000000000000000000000000",
    "status": "SETTLED",
    "data": {
      "hash": "8yFNEk7GmRcM3NMJihwCKXt8ZANLpL2koVFWWH1MEEj"
    }
  }
}
Response fields:
  • intent_hash - Intent identifier
  • status - Execution status (see status values below)
  • data.hash - NEAR transaction hash (if available)
StatusDescription
PENDINGIntent received, awaiting execution
TX_BROADCASTEDTransaction sent to the Verifier contract
SETTLEDSuccessfully settled on-chain
NOT_FOUND_OR_NOT_VALIDIntent not received, expired, or execution error