Skip to main content
The Programmable Addresses API provides REST endpoints for generating programmable addresses and retrieving their details. Base URL: https://deposit-addresses-preproduction.eco.com

Endpoints

Generate Programmable Address

Generate or retrieve a programmable address for a destination.
POST /api/v1/depositAddresses
Returns HTTP 201 Created on success.

Request Body

{
  "chainId": 8453,
  "solanaAddress": "2ECrxAiyVBszAjok5isDdTJu4kwwhq9d7kgJqDvEStMq",
  "depositor": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}
FieldTypeDescription
chainIdnumberSource chain ID. Currently only Base (8453) is supported. More chains coming soon
solanaAddressstringDestination Solana wallet (base58 encoded, 32-44 characters)
depositorstringEVM address authorized to claim refunds if the intent expires unfulfilled

Response

{
  "data": {
    "chainId": 8453,
    "evmDepositAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "solanaAddress": "0x2ecr...",
    "depositor": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "factoryAddress": "0x3614A42e1C2C0A172f2B136d5A07c18e14Ca71aF",
    "isDeployed": false,
    "lastCheckedBalance": "0",
    "deploymentTxHash": null,
    "createdAt": "2026-01-29T12:00:00.000Z"
  }
}
FieldTypeDescription
chainIdnumberSource chain ID
evmDepositAddressstringProgrammable address to send tokens to
solanaAddressstringSolana destination (hex format)
depositorstringAuthorized refund address
factoryAddressstringFactory that manages this address
isDeployedbooleanWhether contract is deployed
lastCheckedBalancestringLast known balance
deploymentTxHashstring | nullDeployment transaction hash
createdAtstringCreation timestamp (ISO 8601)

Error Response

{
  "error": "Factory address not configured for chain 8453"
}

Get Programmable Address

Retrieve details for an existing programmable address.
GET /api/v1/depositAddresses/evmAddress/:evmAddress

Path Parameters

ParameterTypeDescription
evmAddressstringEVM programmable address

Response

{
  "data": {
    "chainId": 8453,
    "evmDepositAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "solanaAddress": "0x2ecr...",
    "depositor": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "factoryAddress": "0x3614A42e1C2C0A172f2B136d5A07c18e14Ca71aF",
    "isDeployed": true,
    "lastCheckedBalance": "1000000",
    "deploymentTxHash": "0x...",
    "deploymentBlockNumber": "12345678",
    "lastBalanceCheckAt": "2026-01-29T12:00:00.000Z",
    "createdAt": "2026-01-29T12:00:00.000Z",
    "updatedAt": "2026-01-29T12:30:00.000Z"
  }
}

Error Response

{
  "error": "Deposit address not found"
}

Query Programmable Addresses

Query programmable addresses with optional filters.
GET /api/v1/depositAddresses/query

Query Parameters

ParameterTypeDescription
chainIdnumberFilter by chain ID
factoryAddressstringFilter by factory address
solanaAddressstringFilter by Solana address (hex format)
depositorstringFilter by depositor address
evmDepositAddressstringFilter by EVM deposit address
isDeployedbooleanFilter by deployment status
All parameters are optional.

Response

{
  "data": [
    {
      "chainId": 8453,
      "evmDepositAddress": "0x...",
      "solanaAddress": "0x...",
      "depositor": "0x...",
      "factoryAddress": "0x...",
      "isDeployed": true,
      "lastCheckedBalance": "1000000",
      "createdAt": "2026-01-29T12:00:00.000Z",
      "updatedAt": "2026-01-29T12:30:00.000Z"
    }
  ]
}

Validation

solanaAddress

  • Must be a valid base58 Solana address
  • Length: 32-44 characters
  • Pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$

depositor

  • Must be a valid Ethereum address

chainId

  • Must be a number >= 1