Skip to main content
REST reference for Solana deposit addresses — a static EVM address on Base that auto-bridges USDC to a Solana wallet.

Environments

EnvironmentBase URL
Mainnethttps://deposit-addresses.eco.com
Preproduction (testnet)https://deposit-addresses-preproduction.eco.com
All responses are wrapped as { "data": ... } unless otherwise noted.

Endpoint summary

MethodPathPurpose
POST/api/v1/depositAddresses/solanaGenerate a Solana deposit address
POST/api/v1/depositAddressesLegacy alias for /solana (deprecated)
GET/api/v1/depositAddresses/evmAddress/{evmAddress}Get deposit address record
GET/api/v1/depositAddresses/queryQuery deposit addresses
POST/api/v1/intents/intentStatusGet intent status
GET/api/v1/intents/queryQuery intents with filters
GET/api/v1/intents/intentExistsRace-safe existence check for an intent

Generate Solana deposit address

POST /api/v1/depositAddresses/solana
Returns 201 Created. Same inputs always return the same evmDepositAddress.
{
  "chainId": 8453,
  "solanaAddress": "2ECrxAiyVBszAjok5isDdTJu4kwwhq9d7kgJqDvEStMq",
  "depositor": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}
FieldTypeDescription
chainIdnumberSource chain ID (Base 8453 today)
solanaAddressstringSolana destination (base58, 32-44 chars)
depositorstringEVM address authorized for refunds if the intent expires
Response:
{
  "data": {
    "chainId": 8453,
    "evmDepositAddress": "0x...",
    "solanaAddress": "0x...",
    "depositor": "0x...",
    "factoryAddress": "0x...",
    "isDeployed": false,
    "lastCheckedBalance": "0",
    "createdAt": "2026-01-29T12:00:00.000Z"
  }
}

Legacy endpoint (deprecated)

POST /api/v1/depositAddresses
Alias for /solana. New integrations should use /solana.

Get deposit address

GET /api/v1/depositAddresses/evmAddress/{evmAddress}
Returns the deposit address record, including isDeployed, lastCheckedBalance, lastBlockNumber, and deploymentTxHash once the contract has been deployed.

Query deposit addresses

GET /api/v1/depositAddresses/query
Optional filters: chainId, factoryAddress, solanaAddress (hex), depositor, evmDepositAddress, isDeployed.

Intents

Get intent status

POST /api/v1/intents/intentStatus
Proxied to the Routes quotes service. Provide one of intentHash, intentCreatedHash, or fulfillmentHash. Limited to 100 results.
{
  "intentHash": "0x...",
  "intentCreatedHash": "0x...",
  "fulfillmentHash": "0x..."
}
Response (abridged):
{
  "data": [
    {
      "intentHash": "0x...",
      "status": { "status": "fulfilled", "subStatus": "settled" },
      "intentData": { "...": "..." },
      "sendingTxs": [],
      "receivingTxs": []
    }
  ]
}

Query intents

GET /api/v1/intents/query
Optional filters: chainId, depositAddress, solanaAddress, intentHash, txHash, fulfilledTxHash, status.

Intent exists

GET /api/v1/intents/intentExists?intentHash=0x...&txHash=0x...
Returns true/false. Supplying txHash enables a race-safe lookup.

Validation rules

  • solanaAddress: base58, 32-44 chars, matching ^[1-9A-HJ-NP-Za-km-z]{32,44}$
  • EVM addresses: must pass isEthereumAddress (EIP-55 / lowercase hex)
  • chainId: integer >= 1