Skip to main content

Overview

The Monitoring API (https://kapi.cashmere.exchange) exposes unauthenticated endpoints backed by the relayer’s PostgreSQL replicas. Use them to power dashboards, points trackers, and internal monitoring in production.

/transactionsmainnet

Production transaction feed with cursor pagination.
GET https://kapi.cashmere.exchange/transactionsmainnet?limit=100&cursor=<prev_cursor>
QueryTypeDescription
sendersstringComma-separated sender addresses.
addr_or_tx_hashstringAddress, ENS (.eth), SNS (.sol), or transaction hash.
source_domainnumberFilter by origin Circle domain.
destination_domainnumberFilter by destination domain.
limitnumberPage size (max 100).
cursorstringPagination cursor returned by the previous page.
start_timenumber(Optional) Unix timestamp lower bound.
end_timenumber(Optional) Unix timestamp upper bound.
{
  "transactions": [
    {
      "id": 12345,
      "source_tx_hash": "0xabc...",
      "destination_tx_hash": "0xdef...",
      "gas_drop_tx_hash": null,
      "source_domain": 0,
      "destination_domain": 3,
      "sender": "0xSender",
      "recipient": "0xRecipient",
      "deposit_amount": 100000000,
      "receive_amount": 99500000,
      "relayer_fee": 1500000,
      "gas_drop_amount": 5000000,
      "is_gas_drop_in_native": false,
      "max_fee": 2000000,
      "version": 2,
      "confirmed": true,
      "has_source_tx_error": false,
      "has_attestation_error": false,
      "has_destination_tx_error": false,
      "destination_tx_status": "success",
      "created_at": "2024-09-18T12:34:56Z"
    }
  ],
  "next_cursor": "1726666496_12345",
  "has_more": true
}
All numeric amounts use the bridge asset’s base unit (USDC = 6 decimals). destination_tx_status values: pending, success, or failed.

/users/leaderboard

GET https://kapi.cashmere.exchange/users/leaderboard?network=mainnet&limit=50&offset=0&search=fan
QueryDefaultNotes
networkmainnetUse devnet for the testnet leaderboard.
limit50Maximum of 100.
offset0Pagination offset.
searchemptyOptional case-insensitive username filter (truncated to 100 chars).
{
  "leaderboard": [
    {
      "user_id": 42,
      "username": "cashmerefan",
      "ref_code": "CASHFAN",
      "total_base_points": 5320.5,
      "domain_multiplier": 2.5,
      "domain_total_multiplied_points": 13301.25,
      "referral_points": 1200,
      "total_points_with_referrals": 14501.25,
      "staked_op_nfts": 3,
      "staked_eth_nfts": 1,
      "wallet_count": 4,
      "domain_rank": 128
    }
  ],
  "total_count": 4827,
  "limit": 50,
  "offset": 0,
  "has_more": true
}

/users

Two query patterns are active in production:
  1. GET /users?wallets=0xabc_evm,So111_solana – wallet-level points and multipliers.
  2. GET /users?domains=username.csm – domain aggregates and per-chain breakdowns.

Wallet query

{
  "username": "cashmerefan",
  "ref_code": "CASHFAN",
  "users": [
    {
      "user_id": 42,
      "username": "cashmerefan",
      "ref_code": "CASHFAN",
      "wallets": [
        {
          "address": "0xabc...",
          "chain_type": "evm",
          "swap_points": 1200,
          "swap_points_mainnet": 400,
          "points_multiplier": 2.5,
          "total_points_multiplied": 3500,
          "total_points_multiplied_mainnet": 2600
        }
      ],
      "max_multiplier": 2.5,
      "testnet_points": 800,
      "nft_points": 120,
      "swap_points": 1200
    }
  ]
}

Domain query

{
  "username": "builder.csm",
  "ref_code": "BUILD",
  "binded_wallets": {
    "evm": "0xabc...",
    "sol": "So111...",
    "apt": "",
    "sui": ""
  },
  "leaderboard_rank_mainnet": 128,
  "leaderboard_rank_devnet": 54,
  "domain_total_multiplied_points_mainnet": 4600,
  "domain_total_multiplied_points": 13301.25,
  "evm": {
    "address": "0xabc...",
    "chain_type": "evm",
    "swap_points": 1200,
    "swap_points_mainnet": 400,
    "testnet_points": 800,
    "points_multiplier": 2.5,
    "total_points_multiplied": 3500,
    "total_points_multiplied_mainnet": 2600,
    "staked_eth_nfts": 1,
    "staked_op_nfts": 3,
    "nft_points": 120
  },
  "sol": {
    "address": "So111...",
    "chain_type": "solana",
    "swap_points": 210,
    "points_multiplier": 1.8,
    "testnet_points": 420,
    "total_points_multiplied": 378
  }
}
All payloads retain snake_case keys.

/users/messages

One-time message nonce for wallet binding flows. Call this endpoint immediately before POST /users/verify.
GET https://kapi.cashmere.exchange/users/messages?username=builder.csm&address=0xabc...&chain_type=evm
QueryTypeNotes
usernamestringCashmere username (include .csm).
addressstringWallet address being bound or unbound.
chain_typestringOne of evm, solana, sui, aptos.
{
  "nonce": "1700000000",
  "expires_at": "2024-09-18T12:35:56Z"
}
Sign the canonical message the frontend displays (Please sign this message… nonce: <nonce>).

POST /users/verify

Bind or unbind a wallet to a Cashmere username. The backend expects a signed message proving wallet control.
POST https://kapi.cashmere.exchange/users/verify
Content-Type: application/json
{
  "username": "builder.csm",
  "address": "0xabc...",
  "chain_type": "evm",
  "type": "bind",
  "signature": "base64-or-hex-signature",
  "public_key": "optional-base64-public-key",
  "message": "Wallet binding request: builder.csm
Nonce: 1700000000"
}
  • chain_type accepts evm, solana, sui, or aptos.
  • type is either bind or unbind.
  • public_key is only required for Aptos bindings.
  • message must exactly match the prompt used for signing (including newline + nonce).
  • Always fetch a fresh nonce via GET /users/messages before submitting this request.
{
  "success": true,
  "username": "builder.csm"
}

/stats/mainnet/volumes

Provides transfer volumes. Raw amounts (without _usd) are returned as 6-decimal USDC integers.
  • GET /stats/mainnet/volumes – cumulative lifetime volume (total_volume).
  • GET /stats/mainnet/volumes?senders=0xabc...,So111... – cumulative volume for specific wallets (user_volume).
  • GET /stats/mainnet/volumes/hourly?limit=24 – last N hourly buckets (total_volume_usd floats).
  • GET /stats/mainnet/volumes/daily?limit=30 – last N daily buckets (total_volume_usd floats).
{
  "total_volume": 315000000000,
  "user_volume": null,
  "volumes": null
}
{
  "user_volume": 843127000000,
  "volumes": null
}
{
  "volumes": [
    {
      "bucket_start": "2024-09-18T12:00:00Z",
      "total_volume_usd": 12500.42
    }
  ]
}

/stats/mainnet/fees

Returns relayer fee totals in USD.
GET https://kapi.cashmere.exchange/stats/mainnet/fees?period=daily&limit=7
  • periodhourly (default) or daily.
  • limit – number of buckets to return.
{
  "fees": [
    {
      "bucket_start": "2024-09-18T00:00:00Z",
      "total_fee_usd": 532.17,
      "total_relayer_fee_usd": 418.03
    }
  ],
  "period_type": "daily",
  "limit": 7,
  "offset": 0
}

/stats/mainnet/transactions

Returns the total number of transactions processed by Cashmere relayers.
{
  "total_transactions": 48271
}

/stats/mainnet/chain-shares

Breaks down volume share per Circle domain (see CCTP domain ID table for mappings).
{
  "chain_shares": [
    {
      "domain": 0,
      "amount": 2750000,
      "total_amount": 5500000
    }
  ]
}
Divide amount by total_amount to derive the percentage for each domain.

/stats/mainnet/wallets

Distinct sender count on mainnet (cached in Redis).
{
  "unique_senders_count": 18342
}

/stats/wallets

Distinct sender count on devnet/testnet (cached).
{
  "unique_senders_count": 5120
}

Caching & Rate Limits

  • Several endpoints (/stats/mainnet/volumes, /stats/mainnet/fees, /stats/mainnet/wallets, /stats/wallets) cache responses in Redis for short TTLs.
  • No formal rate limit headers are emitted; stay below ~120 requests per minute or contact the team for higher throughput.
These APIs are read-only. All write operations (transfers, approvals, configuration) occur on-chain.