API

The Everclear API contains endpoints to create new intents, track intent statuses, and more.

Create new intent(s)

post
/intents

Endpoint to generate a TransactionRequest for one or multiple intents. For multiple intents, the transaction will target a fee adapter contract with appropriately formatted calldata.

Body
one ofOptional
or
Responses
200

Successful response with a TransactionRequest object

application/json
post
/intents
POST /intents HTTP/1.1
Host: api.testnet.everclear.org
Content-Type: application/json
Accept: */*
Content-Length: 273

{
  "origin": "text",
  "destinations": [
    "text"
  ],
  "to": "text",
  "from": "text",
  "inputAsset": "text",
  "outputAsset": "text",
  "amount": "text",
  "callData": "text",
  "ttl": 1,
  "max_fee": "text",
  "permit2Params": {
    "nonce": "text",
    "deadline": "text",
    "signature": "text"
  },
  "order_id": "text",
  "isFastPath": true
}
{
  "to": "text",
  "from": "text",
  "nonce": "text",
  "gasLimit": "text",
  "gasPrice": "text",
  "data": "Ynl0ZXM=",
  "value": "text",
  "chainId": 1,
  "type": 1,
  "accessList": [
    {
      "address": "text",
      "storageKeys": [
        "text"
      ]
    }
  ],
  "maxPriorityFeePerGas": "text",
  "maxFeePerGas": "text",
  "customData": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "ccipReadEnabled": true
}

Get intents

get
/batched-intents

Retrieves a paginated list of intents based on query parameters

Query parameters
cursorstringOptional
prevCursorstringOptional
limitintegerOptional
statusesstring[]Optional
originsstring[]Optional
destinationsstring[]Optional
allDestinationsstring[]Optional
txHashstringOptional
userAddressstringOptional
startDatestringOptional
endDatestringOptional
tickerHashstringOptional
isFastPathbooleanOptional

Filter for fast path intents (intents with TTL > 0)

Responses
200

Successful retrieval of intents

application/json
get
/batched-intents
GET /batched-intents HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "items": [
    {
      "type": "batch",
      "batchId": "text",
      "token_fee": "text",
      "native_fee": "text",
      "intents": [
        {
          "intent_id": "text",
          "batch_id": "text",
          "queue_idx": 1,
          "message_id": "text",
          "status": "NONE",
          "receiver": "text",
          "input_asset": "text",
          "output_asset": "text",
          "origin_amount": "text",
          "destination_amount": "text",
          "origin": "text",
          "destinations": [
            "text"
          ],
          "nonce": 1,
          "transaction_hash": "text",
          "receive_tx_hash": "text",
          "intent_created_timestamp": 1,
          "settlement_timestamp": 1,
          "intent_created_block_number": 1,
          "receive_blocknumber": 1,
          "tx_origin": "text",
          "tx_nonce": 1,
          "auto_id": 1,
          "amount_out_min": "text",
          "call_data": "text",
          "filled": true,
          "initiator": "text",
          "native_fee": "text",
          "token_fee": "text",
          "fee_adapter_initiator": "text",
          "origin_gas_fees": "text",
          "destination_gas_fees": "text",
          "hub_settlement_domain": "text",
          "ttl": 1,
          "is_fast_path": true,
          "fill_solver": "text",
          "fill_domain": "text",
          "fill_destinations": [
            "text"
          ],
          "fill_transaction_hash": "text",
          "fill_timestamp": 1,
          "fill_amount": "text",
          "fill_fee_token": "text",
          "fill_fee_dbps": "text",
          "fill_input_asset": "text",
          "fill_output_asset": "text",
          "fill_sender": "text",
          "fill_status": "text",
          "fill_initiator": "text",
          "fill_receiver": "text",
          "max_fee": "text"
        }
      ]
    }
  ],
  "nextCursor": "text"
}

Get batched intents

get
/batched-intents/{batchId}

Retrieves a list of intents for a given batch ID

Path parameters
batchIdstringRequired
Responses
200

Successful retrieval of intents

application/json
get
/batched-intents/{batchId}
GET /batched-intents/{batchId} HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "batchId": "text",
  "token_fee": "text",
  "native_fee": "text",
  "intents": [
    {
      "intent_id": "text",
      "batch_id": "text",
      "queue_idx": 1,
      "message_id": "text",
      "status": "NONE",
      "receiver": "text",
      "input_asset": "text",
      "output_asset": "text",
      "origin_amount": "text",
      "destination_amount": "text",
      "origin": "text",
      "destinations": [
        "text"
      ],
      "nonce": 1,
      "transaction_hash": "text",
      "receive_tx_hash": "text",
      "intent_created_timestamp": 1,
      "settlement_timestamp": 1,
      "intent_created_block_number": 1,
      "receive_blocknumber": 1,
      "tx_origin": "text",
      "tx_nonce": 1,
      "auto_id": 1,
      "amount_out_min": "text",
      "call_data": "text",
      "filled": true,
      "initiator": "text",
      "native_fee": "text",
      "token_fee": "text",
      "fee_adapter_initiator": "text",
      "origin_gas_fees": "text",
      "destination_gas_fees": "text",
      "hub_settlement_domain": "text",
      "ttl": 1,
      "is_fast_path": true,
      "fill_solver": "text",
      "fill_domain": "text",
      "fill_destinations": [
        "text"
      ],
      "fill_transaction_hash": "text",
      "fill_timestamp": 1,
      "fill_amount": "text",
      "fill_fee_token": "text",
      "fill_fee_dbps": "text",
      "fill_input_asset": "text",
      "fill_output_asset": "text",
      "fill_sender": "text",
      "fill_status": "text",
      "fill_initiator": "text",
      "fill_receiver": "text",
      "max_fee": "text"
    }
  ]
}

Create a new intent on Solana

post
/solana/intents

Submits a new intent transaction to the Solana blockchain using the specified parameters and configuration.

Body
originstringRequired
destinationsstring[]Required
tostringRequired
fromstringOptional

intent creator address

inputAssetstringRequired
amountstring · bigintRequired

Token amount, denominated in the asset's decimal units on the origin chain

callDatastringRequired
maxFeestring · bigintRequired

Maximum fee amount, denominated in the asset's decimal units on the origin chain

userstringRequired
userTokenAccountPublicKeystringOptional
programVaultAccountPublicKeystringOptional
order_idstringOptional

Order ID for newOrder requests

Responses
200

Successfully created intent transaction

application/json
post
/solana/intents
POST /solana/intents HTTP/1.1
Host: api.testnet.everclear.org
Content-Type: application/json
Accept: */*
Content-Length: 312

{
  "origin": "text",
  "destinations": [
    "text"
  ],
  "to": "text",
  "from": "text",
  "inputAsset": "text",
  "amount": "text",
  "callData": "text",
  "maxFee": "text",
  "user": "text",
  "userTokenAccountPublicKey": "text",
  "programVaultAccountPublicKey": "text",
  "permit2Params": {
    "nonce": "text",
    "deadline": "text",
    "signature": "text"
  },
  "order_id": "text"
}
{
  "to": "text",
  "from": "text",
  "nonce": "text",
  "gasLimit": "text",
  "gasPrice": "text",
  "data": "Ynl0ZXM=",
  "value": "text",
  "chainId": 1,
  "type": 1,
  "accessList": [
    {
      "address": "text",
      "storageKeys": [
        "text"
      ]
    }
  ],
  "maxPriorityFeePerGas": "text",
  "maxFeePerGas": "text",
  "customData": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "ccipReadEnabled": true
}

To create lookup tables for new account + asset

post
/solana/create-lookup-table

Creating lookup tables for new users to save account space on chain

Body
inputAssetstringRequired
userstringRequired
userTokenAccountPublicKeystringRequired
programVaultAccountPublicKeystringRequired
Responses
200

Succesfull serialise data fetch transaction data

application/json
post
/solana/create-lookup-table
POST /solana/create-lookup-table HTTP/1.1
Host: api.testnet.everclear.org
Content-Type: application/json
Accept: */*
Content-Length: 108

{
  "inputAsset": "text",
  "user": "text",
  "userTokenAccountPublicKey": "text",
  "programVaultAccountPublicKey": "text"
}
{
  "to": "text",
  "from": "text",
  "nonce": "text",
  "gasLimit": "text",
  "gasPrice": "text",
  "data": "Ynl0ZXM=",
  "value": "text",
  "chainId": 1,
  "type": 1,
  "accessList": [
    {
      "address": "text",
      "storageKeys": [
        "text"
      ]
    }
  ],
  "maxPriorityFeePerGas": "text",
  "maxFeePerGas": "text",
  "customData": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "ccipReadEnabled": true
}

Create a new intent on Tron

post
/tron/intents

Submits a new intent transaction to the Tron blockchain using the specified parameters and configuration.

Body
originstringRequired
destinationsstring[]Required
tostringRequired
fromstringOptional

intent creator address

inputAssetstringRequired
outputAssetstringOptional
amountstring · bigintRequired

Input asset amount, denominated in the asset's decimal units on the origin chain

callDatastringRequired
ttlintegerOptional

Time-to-live in seconds for fast-path execution (optional)

max_feestringOptional

Max Fees used in intent system (depricated after swaps)

order_idstringOptional

Order ID for newOrder requests

isFastPathbooleanOptional

Boolean for sending intent through fast path

Responses
200

Successfully created intent transaction

application/json
post
/tron/intents
POST /tron/intents HTTP/1.1
Host: api.testnet.everclear.org
Content-Type: application/json
Accept: */*
Content-Length: 273

{
  "origin": "text",
  "destinations": [
    "text"
  ],
  "to": "text",
  "from": "text",
  "inputAsset": "text",
  "outputAsset": "text",
  "amount": "text",
  "callData": "text",
  "ttl": 1,
  "max_fee": "text",
  "permit2Params": {
    "nonce": "text",
    "deadline": "text",
    "signature": "text"
  },
  "order_id": "text",
  "isFastPath": true
}
{
  "to": "text",
  "from": "text",
  "nonce": "text",
  "gasLimit": "text",
  "gasPrice": "text",
  "data": "Ynl0ZXM=",
  "value": "text",
  "chainId": 1,
  "type": 1,
  "accessList": [
    {
      "address": "text",
      "storageKeys": [
        "text"
      ]
    }
  ],
  "maxPriorityFeePerGas": "text",
  "maxFeePerGas": "text",
  "customData": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "ccipReadEnabled": true
}

Get intent details

get
/intents/{intentId}

Fetches detailed information for a specified intent by its ID

Path parameters
intentIdstringRequired

The unique identifier for the intent

Responses
200

Successful retrieval of intent details

application/json
get
/intents/{intentId}
GET /intents/{intentId} HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "intent": {
    "intent_id": "text",
    "batch_id": "text",
    "queue_idx": 1,
    "message_id": "text",
    "status": "NONE",
    "receiver": "text",
    "input_asset": "text",
    "output_asset": "text",
    "origin_amount": "text",
    "destination_amount": "text",
    "origin": "text",
    "destinations": [
      "text"
    ],
    "nonce": 1,
    "transaction_hash": "text",
    "receive_tx_hash": "text",
    "intent_created_timestamp": 1,
    "settlement_timestamp": 1,
    "intent_created_block_number": 1,
    "receive_blocknumber": 1,
    "tx_origin": "text",
    "tx_nonce": 1,
    "auto_id": 1,
    "amount_out_min": "text",
    "call_data": "text",
    "filled": true,
    "initiator": "text",
    "native_fee": "text",
    "token_fee": "text",
    "fee_adapter_initiator": "text",
    "origin_gas_fees": "text",
    "destination_gas_fees": "text",
    "hub_settlement_domain": "text",
    "ttl": 1,
    "is_fast_path": true,
    "fill_solver": "text",
    "fill_domain": "text",
    "fill_destinations": [
      "text"
    ],
    "fill_transaction_hash": "text",
    "fill_timestamp": 1,
    "fill_amount": "text",
    "fill_fee_token": "text",
    "fill_fee_dbps": "text",
    "fill_input_asset": "text",
    "fill_output_asset": "text",
    "fill_sender": "text",
    "fill_status": "text",
    "fill_initiator": "text",
    "fill_receiver": "text",
    "max_fee": "text"
  }
}

Execute calldata

post
/intents/{intentId}/execute

The request object for executeIntentCalldata, used for self-execution

Path parameters
intentIdstringRequired

The unique identifier for the intent

Body
domainstringRequired

The domain for the request

Responses
200

Successful response with a TransactionRequest object

application/json
post
/intents/{intentId}/execute
POST /intents/{intentId}/execute HTTP/1.1
Host: api.testnet.everclear.org
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "domain": "text"
}
{
  "to": "text",
  "from": "text",
  "nonce": "text",
  "gasLimit": "text",
  "gasPrice": "text",
  "data": "Ynl0ZXM=",
  "value": "text",
  "chainId": 1,
  "type": 1,
  "accessList": [
    {
      "address": "text",
      "storageKeys": [
        "text"
      ]
    }
  ],
  "maxPriorityFeePerGas": "text",
  "maxFeePerGas": "text",
  "customData": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "ccipReadEnabled": true
}

Return unsupported intent

post
/intents/{intentId}/return-unsupported

The request object for returnUnsupportedIntent on hub domain

Path parameters
intentIdstringRequired

The unique identifier for the intent

Responses
200

Successful response with a TransactionRequest object

application/json
post
/intents/{intentId}/return-unsupported
POST /intents/{intentId}/return-unsupported HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "to": "text",
  "from": "text",
  "nonce": "text",
  "gasLimit": "text",
  "gasPrice": "text",
  "data": "Ynl0ZXM=",
  "value": "text",
  "chainId": 1,
  "type": 1,
  "accessList": [
    {
      "address": "text",
      "storageKeys": [
        "text"
      ]
    }
  ],
  "maxPriorityFeePerGas": "text",
  "maxFeePerGas": "text",
  "customData": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "ccipReadEnabled": true
}

Get invoices

get
/invoices

Retrieves a paginated list of invoices in FIFO queue order

Query parameters
cursorstringOptional
prevCursorstringOptional
limitintegerOptional
tickerHashstringOptional
originsstring[]Optional
destinationsstring[]Optional
sortOrderByDiscountstringOptional
Responses
200

Successful retrieval of invoices

application/json
get
/invoices
GET /invoices HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "invoices": [
    {
      "intent_id": "text",
      "owner": "text",
      "entry_epoch": 1,
      "amount": "text",
      "discountBps": 1,
      "origin": "text",
      "destinations": [
        "text"
      ],
      "hub_status": "NONE",
      "ticker_hash": "text",
      "hub_invoice_enqueued_timestamp": "text"
    }
  ],
  "nextCursor": "text",
  "prevCursor": "text",
  "maxCount": 1
}

Return invoice details

get
/invoices/{intentId}

Fetches detailed information for a specified invoice by its intentID

Path parameters
intentIdstringRequired

The unique identifier for the intent

Responses
200

Successful retrieval of invoice details

application/json
get
/invoices/{intentId}
GET /invoices/{intentId} HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "invoice": {
    "intent_id": "text",
    "owner": "text",
    "entry_epoch": 1,
    "amount": "text",
    "discountBps": 1,
    "origin": "text",
    "destinations": [
      "text"
    ],
    "hub_status": "NONE",
    "ticker_hash": "text",
    "hub_invoice_enqueued_timestamp": "text"
  }
}

Calculate minimum amounts needed to settle invoice

get
/invoices/{intentId}/min-amounts

Calculates the minimum amounts per destination domain to settle a specified invoice. This returns a map of destination domain to minimum amount required in standardized 1e18 decimals.

Path parameters
intentIdstringRequired

The unique identifier for the invoice intent

Responses
200

Successful calculation of minimum amounts

application/json
get
/invoices/{intentId}/min-amounts
GET /invoices/{intentId}/min-amounts HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "invoiceAmount": "text",
  "amountAfterDiscounts": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "discountBps": "text",
  "custodiedAmounts": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "minAmounts": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  }
}

Get supported assets

get
/configs/assets

Lists assets supported by the protocol, with pagination and optional filtering by type

Query parameters
pageintegerRequired
limitintegerRequired
typestring · enumOptionalPossible values:
Responses
200

Successful retrieval of assets

application/json
get
/configs/assets
GET /configs/assets?page=1&limit=1 HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "assets": [
    {
      "local": "text",
      "adopted": "text",
      "canonical_id": "text",
      "canonical_domain": "text",
      "domain": "text",
      "key": "text",
      "id": "text",
      "decimal": 1,
      "adopted_decimal": 1
    }
  ]
}

Get quote for a route, including fees and limits

post
/routes/quotes
Body
originstringRequired
destinationsstring[]Required
inputAssetstringRequired
outputAssetstringOptional
amountstringRequired

Token amount, denominated in the asset's decimal units on the origin chain

tostringOptional
fromstringOptional

intent creator address

order_idstringOptional

Order ID for newOrder requests

Responses
200

Successfully retrieved quote.

application/json
post
/routes/quotes
POST /routes/quotes HTTP/1.1
Host: api.testnet.everclear.org
Content-Type: application/json
Accept: */*
Content-Length: 142

{
  "origin": "text",
  "destinations": [
    "text"
  ],
  "inputAsset": "text",
  "outputAsset": "text",
  "amount": "text",
  "to": "text",
  "from": "text",
  "order_id": "text"
}
{
  "fixedFeeUnits": "text",
  "variableFeeBps": 1,
  "totalFeeBps": 1,
  "expectedAmount": "text",
  "currentLimit": "text",
  "splitCount": 1,
  "reqType": "text",
  "fastPathQuote": {
    "fixedFeeUnits": "text",
    "variableFeeBps": 1,
    "totalFeeBps": 1,
    "expectedAmount": "text",
    "expectedFillTime": "text"
  },
  "settlementEstimate": {
    "p25Minutes": 1,
    "p50Minutes": 1,
    "p75Minutes": 1
  }
}

Get current limits for a route

post
/routes/limits
Body
originstringRequired
destinationsstring[]Required
inputAssetstringRequired
Responses
200

Successfully retrieved limits.

application/json
post
/routes/limits
POST /routes/limits HTTP/1.1
Host: api.testnet.everclear.org
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "origin": "text",
  "destinations": [
    "text"
  ],
  "inputAsset": "text"
}
{
  "currentLimit": "text"
}

Get intents

get
/intents

Retrieves a paginated list of intents based on query parameters

Query parameters
cursorstringOptional
prevCursorstringOptional
limitintegerOptional
statusesstring[]Optional
originsstring[]Optional
destinationsstring[]Optional
allDestinationsstring[]Optional
txHashstringOptional
userAddressstringOptional
startDatestringOptional
endDatestringOptional
tickerHashstringOptional
isFastPathbooleanOptional

Filter for fast path intents (intents with TTL > 0)

Responses
200

Successful retrieval of intents

application/json
get
/intents
GET /intents HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "intents": [
    {
      "intent_id": "text",
      "batch_id": "text",
      "queue_idx": 1,
      "message_id": "text",
      "status": "NONE",
      "receiver": "text",
      "input_asset": "text",
      "output_asset": "text",
      "origin_amount": "text",
      "destination_amount": "text",
      "origin": "text",
      "destinations": [
        "text"
      ],
      "nonce": 1,
      "transaction_hash": "text",
      "receive_tx_hash": "text",
      "intent_created_timestamp": 1,
      "settlement_timestamp": 1,
      "intent_created_block_number": 1,
      "receive_blocknumber": 1,
      "tx_origin": "text",
      "tx_nonce": 1,
      "auto_id": 1,
      "amount_out_min": "text",
      "call_data": "text",
      "filled": true,
      "initiator": "text",
      "native_fee": "text",
      "token_fee": "text",
      "fee_adapter_initiator": "text",
      "origin_gas_fees": "text",
      "destination_gas_fees": "text",
      "hub_settlement_domain": "text",
      "ttl": 1,
      "is_fast_path": true,
      "fill_solver": "text",
      "fill_domain": "text",
      "fill_destinations": [
        "text"
      ],
      "fill_transaction_hash": "text",
      "fill_timestamp": 1,
      "fill_amount": "text",
      "fill_fee_token": "text",
      "fill_fee_dbps": "text",
      "fill_input_asset": "text",
      "fill_output_asset": "text",
      "fill_sender": "text",
      "fill_status": "text",
      "fill_initiator": "text",
      "fill_receiver": "text",
      "max_fee": "text"
    }
  ],
  "nextCursor": "text",
  "prevCursor": "text",
  "maxCount": 1
}

Get history of invoice processing

get
/history/{intentId}/invoice-processing

Retrieves detailed history of a specific invoice, including epochs and details of processing as deposit and invoice.

Path parameters
intentIdstringRequired

Unique identifier for the intent.

Query parameters
cursorstringOptional
limitnumberOptional
Responses
200

Successful response with history of invoice processing

application/json
get
/history/{intentId}/invoice-processing
GET /history/{intentId}/invoice-processing HTTP/1.1
Host: api.testnet.everclear.org
Accept: */*
{
  "invoiceProcessingHistory": [
    {
      "epoch": 1,
      "domain": 1,
      "custodiedAssets": 1,
      "amountToBeDiscounted": 1,
      "rewardsForDepositors": 1,
      "amountAfterDiscount": 1,
      "discountdbps": 1,
      "selectedDestinationDomain": 1,
      "selectedDestinationDomainLiquidity": 1,
      "timestamp": "text"
    }
  ],
  "nextCursor": "text"
}

Last updated