curl --request GET \
--url https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers"
headers = {"X-API-KEY": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<x-api-key>'}};
fetch('https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers")
.header("X-API-KEY", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"completedAt": "2025-10-21T12:34:56.789Z",
"onChain": {
"explorerLink": "https://etherscan.io/tx/0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"txId": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
},
"recipient": {
"address": "0x1234567890123456789012345678901234567890",
"chain": "ethereum",
"locator": "ethereum:0x1234567890123456789012345678901234567890",
"owner": "user-123"
},
"sender": {
"address": "0x1234567890123456789012345678901234567890",
"chain": "ethereum",
"locator": "ethereum:0x1234567890123456789012345678901234567890",
"owner": "user-123"
},
"status": "succeeded",
"token": {
"amount": "18.833423432423",
"chain": "ethereum",
"contractAddress": "0x123",
"decimals": 6,
"locator": "ethereum:0x123",
"rawAmount": "18834161225104097789",
"type": "fungible"
},
"type": "wallets.transfer.in",
"transferId": "93fd7f08-0c63-4d73-808b-6268e665c964"
}
],
"nextCursor": "<string>",
"previousCursor": "<string>"
}{
"error": true,
"message": "<error message>",
"code": "DEVICE_SIGNER_NOT_SUPPORTED"
}List Wallet Transfers
Retrieves activity history for the specified wallet including transactions and other relevant events. This is an unstable API that may change without notice.
API scope required: wallets.read
curl --request GET \
--url https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers \
--header 'X-API-KEY: <x-api-key>'import requests
url = "https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers"
headers = {"X-API-KEY": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<x-api-key>'}};
fetch('https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers")
.header("X-API-KEY", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/unstable/wallets/{walletLocator}/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"completedAt": "2025-10-21T12:34:56.789Z",
"onChain": {
"explorerLink": "https://etherscan.io/tx/0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"txId": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
},
"recipient": {
"address": "0x1234567890123456789012345678901234567890",
"chain": "ethereum",
"locator": "ethereum:0x1234567890123456789012345678901234567890",
"owner": "user-123"
},
"sender": {
"address": "0x1234567890123456789012345678901234567890",
"chain": "ethereum",
"locator": "ethereum:0x1234567890123456789012345678901234567890",
"owner": "user-123"
},
"status": "succeeded",
"token": {
"amount": "18.833423432423",
"chain": "ethereum",
"contractAddress": "0x123",
"decimals": 6,
"locator": "ethereum:0x123",
"rawAmount": "18834161225104097789",
"type": "fungible"
},
"type": "wallets.transfer.in",
"transferId": "93fd7f08-0c63-4d73-808b-6268e665c964"
}
],
"nextCursor": "<string>",
"previousCursor": "<string>"
}{
"error": true,
"message": "<error message>",
"code": "DEVICE_SIGNER_NOT_SUPPORTED"
}unstable prefix indicates that breaking changes may occur in future releases.Headers
API key required for authentication
Path Parameters
A wallet locator can be of the format:
<walletAddress>email:<email>:<chainType>[:<walletType>][:alias:<alias>](walletType defaults to 'smart')userId:<userId>:<chainType>[:<walletType>][:alias:<alias>](white label user example)phoneNumber:<phoneNumber>:<chainType>[:<walletType>][:alias:<alias>]twitter:<handle>:<chainType>[:<walletType>][:alias:<alias>]x:<handle>:<chainType>[:<walletType>][:alias:<alias>]me:<chainType>[:<walletType>][:alias:<alias>](Use when calling from the client side with a client API key)chainType[:<walletType>]:alias:<alias>
Query Parameters
asc, desc The blockchain network to query. Either an EVM chain, Solana, or Stellar.
abstract, abstract-testnet, apechain, arbitrum, arbitrum-sepolia, arbitrumnova, arc, arc-testnet, astar-zkevm, avalanche, avalanche-fuji, base, base-goerli, base-sepolia, bsc, bsc-testnet, celo, celo-sepolia, chiliz, chiliz-spicy-testnet, crossmint-private-testnet-ethereum, crossmint-private-testnet-polygon, curtis, ethereum, ethereum-goerli, ethereum-sepolia, flow, flow-testnet, hedera, hedera-testnet, hypersonic-testnet, lightlink, lightlink-pegasus, mantle, mantle-sepolia, mode, mode-sepolia, optimism, optimism-goerli, optimism-sepolia, plume, plume-testnet, polygon, polygon-amoy, polygon-mumbai, robinhood-chain, robinhood-chain-testnet, scroll, scroll-sepolia, sei-atlantic-2-testnet, sei-pacific-1, shape, shape-sepolia, skale-nebula, skale-nebula-testnet, solana, soneium, soneium-minato-testnet, space, space-testnet, stellar, story, story-testnet, tempo, tempo-testnet, u2u-nebulas, u2u-solaris, verify-testnet, viction, viction-testnet, world-chain, world-chain-sepolia, zenchain-testnet, zkatana, zkyoto, zora, zora-goerli, zora-sepolia The tokens to query. Comma-separated list of either tokens or token locator strings
The status of the transfers to query
failed, successful Filter transfers from this date (inclusive). ISO 8601 format. Supported for EVM and Stellar chains. ISO 8601 in UTC. Fractional seconds are optional.
"2024-01-15T10:30:00.000Z"
Filter transfers until this date (inclusive). ISO 8601 format. Supported for EVM and Stellar chains. ISO 8601 in UTC. Fractional seconds are optional.
"2024-01-15T10:30:00.000Z"
Was this page helpful?

