Tether Token Transfers API
Query token transfer history for addresses
Query token transfer history for addresses
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/tether-token-transfers-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Tether Token Transfers API
version: 1.0.0
description: 'Operations tagged Token Transfers across 2 of this provider''s published API definitions: tether-token-transfers-api-openapi.yml, tether-wdk-indexer-openapi-original.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://wdk-api.tether.io
description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Token Transfers
description: Query token transfer history for addresses
paths:
/api/v1/{blockchain}/{token}/{address}/token-transfers:
get:
summary: Get token transfers for an address
tags:
- Token Transfers
description: Retrieve the token transfer history for a specific wallet address on a given blockchain. Returns incoming and outgoing transfers sorted by block number.
parameters:
- schema:
type: integer
minimum: 1
maximum: 1000
default: 10
in: query
name: limit
required: false
description: Maximum number of transfers to return.
- schema:
type: integer
minimum: 0
default: 0
in: query
name: fromTs
required: false
description: Start timestamp in milliseconds (inclusive). Use 0 to query from the beginning.
- schema:
type: integer
minimum: 0
in: query
name: toTs
required: false
description: End timestamp in milliseconds (inclusive). Omit to query up to the latest available data.
- schema:
type: string
enum:
- ethereum
- arbitrum
- avalanche
- polygon
- sepolia
- tron
- ton
- bitcoin
- spark
in: path
name: blockchain
required: true
description: Blockchain network identifier. Use GET /api/v1/chains to see all available options.
- schema:
type: string
enum:
- usdt
- xaut
- usat
- btc
in: path
name: token
required: true
description: Token identifier. Must be a valid token for the specified blockchain.
- schema:
type: string
minLength: 1
in: path
name: address
required: true
description: Wallet address to query. Format varies by blockchain (e.g. 0x... for EVM, bc1... for Bitcoin, T... for Tron).
security:
- ApiKeyAuth: []
responses:
'200':
description: Token transfer history for the queried address
content:
application/json:
schema:
description: Token transfer history for the queried address
type: object
properties:
transfers:
type: array
description: List of token transfers sorted by block number.
items:
type: object
properties:
blockchain:
type: string
description: Blockchain where the transfer occurred.
blockNumber:
type: integer
description: Block number containing the transfer.
transactionHash:
type: string
description: Hash of the transaction.
transferIndex:
type: integer
description: Index of the transfer within the transaction.
token:
type: string
description: Token identifier.
amount:
type: string
description: Transfer amount as a decimal string.
timestamp:
type: integer
description: Block timestamp in milliseconds since Unix epoch.
transactionIndex:
oneOf:
- type: integer
- type: 'null'
description: Position of the transaction within the block.
logIndex:
oneOf:
- type: integer
- type: 'null'
description: Event log index for EVM chains. null for non-EVM chains like Bitcoin.
from:
oneOf:
- type: string
- type: 'null'
description: Sender wallet address.
to:
oneOf:
- type: string
- type: 'null'
description: The recipient's address
label:
type: string
description: A label associated with the transfer, if any
additionalProperties: true
additionalProperties: false
'400':
description: Bad Request - invalid parameters, address format, blockchain, or token
content:
application/json:
schema:
description: Bad Request - invalid parameters, address format, blockchain, or token
type: object
properties:
error:
type: string
description: Error type
message:
type: string
description: Human-readable error description
status:
type: number
description: HTTP status code
additionalProperties: false
'401':
description: Unauthorized - expired API key
content:
application/json:
schema:
description: Unauthorized - expired API key
type: object
properties:
error:
type: string
description: Authentication error type
message:
type: string
description: Authentication error details
status:
type: number
description: HTTP status code
additionalProperties: false
'403':
description: Forbidden - missing or invalid API key
content:
application/json:
schema:
description: Forbidden - missing or invalid API key
type: object
properties:
error:
type: string
description: Authorization error type
message:
type: string
description: Authorization error details
status:
type: number
description: HTTP status code
additionalProperties: false
'429':
description: Too Many Requests - rate limit exceeded
content:
application/json:
schema:
description: Too Many Requests - rate limit exceeded
type: object
properties:
error:
type: string
description: Rate limit error type
message:
type: string
description: Rate limit error details
status:
type: number
description: HTTP status code
additionalProperties: false
'500':
description: Internal Server Error - indexer service unavailable or unexpected failure
content:
application/json:
schema:
description: Internal Server Error - indexer service unavailable or unexpected failure
type: object
properties:
error:
type: string
description: Error type
message:
type: string
description: Error details
status:
type: number
description: HTTP status code
additionalProperties: false
servers:
- url: https://wdk-api.tether.io
description: Base URL declared by the provider in apis.yml (roadmap#122).
/api/v1/batch/token-transfers:
post:
summary: Get token transfers for multiple addresses
tags:
- Token Transfers
description: Retrieve token transfer history for multiple addresses in a single request. Each item in the batch is processed independently - if one item fails (e.g. invalid address), the others still return results. The response array maintains the same order as the request. Maximum 10 items per batch.
requestBody:
required: true
content:
application/json:
schema:
type: array
description: Array of transfer query objects. Maximum 10 items.
minItems: 1
maxItems: 10
items:
type: object
properties:
blockchain:
type: string
enum:
- ethereum
- arbitrum
- avalanche
- polygon
- sepolia
- tron
- ton
- bitcoin
- spark
description: Blockchain network identifier.
token:
type: string
enum:
- usdt
- xaut
- usat
- btc
description: Token identifier.
address:
type: string
minLength: 1
description: Wallet address to query.
limit:
type: integer
minimum: 1
maximum: 1000
default: 10
description: Maximum number of transfers to return for this address.
fromTs:
type: integer
minimum: 0
default: 0
description: Start timestamp in milliseconds (inclusive).
toTs:
type: integer
minimum: 0
description: End timestamp in milliseconds (inclusive).
required:
- blockchain
- token
- address
additionalProperties: false
description: Array of transfer query objects. Maximum 10 items.
security:
- ApiKeyAuth: []
responses:
'200':
description: Array of results in the same order as the request. Each element is either a transfer result or an error object.
content:
application/json:
schema:
description: Array of results in the same order as the request. Each element is either a transfer result or an error object.
type: array
items:
oneOf:
- description: Token transfer history for the queried address
type: object
properties:
transfers:
type: array
description: List of token transfers sorted by block number.
items:
type: object
properties:
blockchain:
type: string
description: Blockchain where the transfer occurred.
blockNumber:
type: integer
description: Block number containing the transfer.
transactionHash:
type: string
description: Hash of the transaction.
transferIndex:
type: integer
description: Index of the transfer within the transaction.
token:
type: string
description: Token identifier.
amount:
type: string
description: Transfer amount as a decimal string.
timestamp:
type: integer
description: Block timestamp in milliseconds since Unix epoch.
transactionIndex:
oneOf:
- type: integer
- type: 'null'
description: Position of the transaction within the block.
logIndex:
oneOf:
- type: integer
- type: 'null'
description: Event log index for EVM chains. null for non-EVM chains like Bitcoin.
from:
oneOf:
- type: string
- type: 'null'
description: Sender wallet address.
to:
oneOf:
- type: string
- type: 'null'
description: The recipient's address
label:
type: string
description: A label associated with the transfer, if any
additionalProperties: true
additionalProperties: false
- type: object
properties:
error:
type: string
message:
type: string
status:
type: number
additionalProperties: false
minItems: 1
'400':
description: Bad Request - invalid parameters, address format, blockchain, or token
content:
application/json:
schema:
description: Bad Request - invalid parameters, address format, blockchain, or token
type: object
properties:
error:
type: string
description: Error type
message:
type: string
description: Human-readable error description
status:
type: number
description: HTTP status code
additionalProperties: false
'401':
description: Unauthorized - expired API key
content:
application/json:
schema:
description: Unauthorized - expired API key
type: object
properties:
error:
type: string
description: Authentication error type
message:
type: string
description: Authentication error details
status:
type: number
description: HTTP status code
additionalProperties: false
'403':
description: Forbidden - missing or invalid API key
content:
application/json:
schema:
description: Forbidden - missing or invalid API key
type: object
properties:
error:
type: string
description: Authorization error type
message:
type: string
description: Authorization error details
status:
type: number
description: HTTP status code
additionalProperties: false
'429':
description: Too Many Requests - rate limit exceeded
content:
application/json:
schema:
description: Too Many Requests - rate limit exceeded
type: object
properties:
error:
type: string
description: Rate limit error type
message:
type: string
description: Rate limit error details
status:
type: number
description: HTTP status code
additionalProperties: false
'500':
description: Internal Server Error - indexer service unavailable or unexpected failure
content:
application/json:
schema:
description: Internal Server Error - indexer service unavailable or unexpected failure
type: object
properties:
error:
type: string
description: Error type
message:
type: string
description: Error details
status:
type: number
description: HTTP status code
additionalProperties: false
servers:
- url: https://wdk-api.tether.io
description: Base URL declared by the provider in apis.yml (roadmap#122).
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-KEY
description: API key obtained via the registration form. Include in the X-API-KEY header for all authenticated requests.
x-refined-from:
- tether-token-transfers-api-openapi.yml
- tether-wdk-indexer-openapi-original.yml