Skip to main content
Equivalent to SDK’s getVaultsByConfig() and getSupportedAssets(). The GraphQL API returns all contract addresses needed for direct integration in a single request. This is the same API the Amplify SDK uses internally.

Endpoint

POST https://api.paxoslabs.com/graphql

Headers

HeaderValue
Content-Typeapplication/json
x-api-keyYour Amplify API key

Query

query AmplifySdkConfigs($chainId: Int, $yieldType: YieldType) {
  amplifySdkConfigs(chainId: $chainId, yieldType: $yieldType) {
    id
    chainId
    yieldType
    vault {
      id
      name
      chainId
      boringVaultAddress
      tellerModuleId
      accountantModuleId
      withdrawQueueModuleId
      communityCodeDepositorModuleId
      supportedAssets {
        address
        chainId
        depositable
        withdrawable
        symbol
        tokenName
        decimals
      }
    }
  }
}

Variables (all optional)

VariableTypeDescription
chainIdIntFilter by chain (e.g., 1 for Ethereum, 8453 for Base)
yieldTypeYieldTypeFilter by yield type (CORE, TREASURY, FRONTIER, etc.)

Example Request

curl -s -X POST "https://api.paxoslabs.com/graphql" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $AMPLIFY_API_KEY" \
  -d '{
    "query": "query AmplifySdkConfigs($chainId: Int, $yieldType: YieldType) { amplifySdkConfigs(chainId: $chainId, yieldType: $yieldType) { id chainId yieldType vault { id name chainId boringVaultAddress tellerModuleId accountantModuleId withdrawQueueModuleId communityCodeDepositorModuleId supportedAssets { address chainId depositable withdrawable symbol tokenName decimals } } } }",
    "variables": { "chainId": 1 }
  }' | jq

Response

{
  "data": {
    "amplifySdkConfigs": [
      {
        "id": "config-id",
        "chainId": 1,
        "yieldType": "CORE",
        "vault": {
          "id": "vault-id",
          "name": "Amplify Core",
          "chainId": 1,
          "boringVaultAddress": "0x...",
          "tellerModuleId": "0x...",
          "accountantModuleId": "0x...",
          "withdrawQueueModuleId": "0x...",
          "communityCodeDepositorModuleId": "0x...",
          "supportedAssets": [
            {
              "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
              "chainId": 1,
              "depositable": true,
              "withdrawable": true,
              "symbol": "USDC",
              "tokenName": "USD Coin",
              "decimals": 6
            }
          ]
        }
      }
    ]
  }
}

Response Types

FieldTypeDescription
idstringSDK config identifier
chainIdintBlockchain network ID
yieldTypestringYield strategy (CORE, TREASURY, etc.)
vault.idstringVault identifier (use for deduplication)
vault.namestringHuman-readable vault name
vault.boringVaultAddressaddressBoringVault — ERC-20 share token
vault.communityCodeDepositorModuleIdaddress?DistributorCodeDepositor — deposit entry point
vault.withdrawQueueModuleIdaddress?WithdrawQueue — withdrawal orders
vault.accountantModuleIdaddressAccountant — exchange rate oracle
vault.tellerModuleIdaddressTeller — pause state
vault.supportedAssets[].addressaddressERC-20 token contract address
vault.supportedAssets[].depositablebooleanWhether this token can be deposited
vault.supportedAssets[].withdrawablebooleanWhether this token can be used as want asset
vault.supportedAssets[].symbolstring?Token symbol (e.g., "USDC")
vault.supportedAssets[].decimalsint?Token decimals (e.g., 6)
Multiple configs can reference the same vault (one per deposit token). Deduplicate by vault.id — each vault has a single set of contract addresses and a supportedAssets array listing all tokens.
withdrawQueueModuleId and communityCodeDepositorModuleId can be null for vaults that don’t support external withdrawals or deposits.

Contract Address Mapping

GraphQL FieldContractUsed For
vault.boringVaultAddressBoringVaultVault share token (ERC-20)
vault.communityCodeDepositorModuleIdDistributorCodeDepositordeposit(), depositWithPermit()
vault.withdrawQueueModuleIdWithdrawQueuesubmitOrder(), cancelOrder()
vault.accountantModuleIdAccountantgetRateInQuoteSafe() (exchange rate)
vault.tellerModuleIdTellerisPaused() (pause state)
The GraphQL field communityCodeDepositorModuleId is a legacy name. The contract it points to is the DistributorCodeDepositor. Use this address wherever the documentation refers to the distributorCodeDepositorAddress.

Available Yield Types

ValueSDK Mapping
CORECORE
PRIMECORE
TREASURYTREASURY
TBILLTREASURY
FRONTIERFRONTIER
LENDINGFRONTIER

REST API (Simpler Alternative)

If you only need to list vault–asset pairs without full contract addresses, you can use the REST endpoint.

Endpoint

GET https://api.paxoslabs.com/v2/amplify/vaultAssets

Query Parameters

ParameterTypeRequiredDescription
pageSizeintNoResults per page (default 20, max 100)
pageTokenstringNoPagination token from nextPageToken in previous response
filterstringNoFilter expression (e.g., chainId=1, withdrawable=true)

Example Request

curl -s "https://api.paxoslabs.com/v2/amplify/vaultAssets?pageSize=100" \
  -H "x-api-key: $AMPLIFY_API_KEY" | jq

Response

{
  "vaultAssets": [
    {
      "vaultAddress": "0x...",
      "chainId": 1,
      "assetAddress": "0x...",
      "depositable": true,
      "withdrawable": true
    }
  ],
  "nextPageToken": null,
  "tokenMetadata": {
    "1:0xA0b8...": {
      "address": "0xA0b8...",
      "chain_id": "1",
      "symbol": "USDC",
      "name": "USD Coin",
      "decimals": "6"
    }
  }
}

Response Types

FieldTypeDescription
vaultAssets[].vaultAddressaddressBoringVault address (share token)
vaultAssets[].chainIdintChain ID
vaultAssets[].assetAddressaddressERC-20 token address
vaultAssets[].depositablebooleanWhether this token can be deposited
vaultAssets[].withdrawablebooleanWhether this token can be used as want asset
nextPageTokenstring?Token for next page (null if no more pages)
tokenMetadataobjectMap keyed by chainId:address with token info
tokenMetadata[].symbolstringToken symbol
tokenMetadata[].namestringToken name
tokenMetadata[].decimalsstringToken decimals (as string)
The REST endpoint only returns vaultAddress (the BoringVault). For the full set of contract addresses needed for deposits, withdrawals, and cancellations, use the GraphQL API above.

Withdraw-Eligible Assets

Filter by withdrawable: true in either API:
  • GraphQL: Filter vault.supportedAssets where withdrawable == true
  • REST: GET /v2/amplify/vaultAssets?filter=withdrawable%3Dtrue&pageSize=100