Skip to main content
All requests require an API key via the X-API-Key header. See Authentication for details.

Overview

GET /v1/streams/tokens returns the active tokens supported for stream creation on a specific chain. Use this endpoint in two different ways:
  • To resolve the tokens that can be used as targetTokenId inside stream customArgs.
  • To resolve the tokens that can be used as rewardTokenId for token-based streams.
For reward-token selection, use the tokens where isAllowedRewardToken is true.
The chainId query parameter for this endpoint is the decimal EVM chain ID.

Supported Chains by Use Case

targetTokenId chains

For targetTokenId, this endpoint can be queried with any of the following decimal chain IDs.

Mainnet

ChainDecimal chainId
Abstract2741
Arbitrum42161
Avalanche43114
Base8453
BeraChain80094
Blast81457
BSC56
Ethereum1
Fraxtal238
Gnosis100
HyperEVM999
Ink57073
Katana747474
Linea59144
Linea-Sepolia59141
Manta169
Mantle5000
Metis1088
Mezo31612
Mode Network34443
Monad143
Optimism10
Peaq3338
Plasma9745
Polygon137
Polygon zkEVM1101
Scroll534352
Sonic146
Swell1923
TAC239
Unichain130
Worldchain480
XLayer196
Zircuit48900
ZkSync324

Testnet

ChainDecimal chainId
Sepolia11155111
Linea-Sepolia59141

rewardToken chains

This same endpoint is also used for rewardToken, but stream creation currently supports rewardToken only on these 5 networks:

Mainnet

ChainDecimal chainId
Ethereum1
Base8453
Avalanche43114
BSC56

Testnet

ChainDecimal chainId
Sepolia11155111
Sepolia is included here specifically so you can test stream creation with rewardToken before moving to mainnet. If you need TURTLE test tokens on Sepolia (0xa78559593289728719bc46e7559ebdee5bc5ef7a) for testing, please contact the Turtle team to request them. On any of those supported networks, a stream can use both values on the same chain: a rewardToken for the reward asset and a targetTokenId inside customArgs for the tracked target token. The difference is not that they must belong to different chains. The difference is that rewardToken is currently limited to this smaller subset, while targetTokenId supports the broader list above.

Endpoint

curl -X GET "https://earn.turtle.xyz/v1/streams/tokens?chainId=1" \
  -H "X-API-Key: sk_live_xxxxx"
Query Parameters
chainId
integer
required
Decimal EVM chain ID. This is required. Use the decimal chainId values listed above.

Response Example

{
  "tokens": [
    {
      "id": "56b0fab0-5c3e-49f6-a0a7-57e38d5ea999",
      "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "name": "USD Coin",
      "symbol": "USDC",
      "decimals": 6,
      "chainId": 1,
      "logoUrl": "https://cdn.example.com/tokens/usdc.png",
      "isAllowedRewardToken": true
    },
    {
      "id": "9f6ef77b-3ea5-4d2c-8d64-91e9e4c8b123",
      "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "name": "Tether USD",
      "symbol": "USDT",
      "decimals": 6,
      "chainId": 1,
      "logoUrl": "https://cdn.example.com/tokens/usdt.png",
      "isAllowedRewardToken": false
    }
  ]
}

Response Fields

tokens: SupportedToken[]
tokens
SupportedToken[]
List of active tokens that can be used for streams on the requested chain.

SupportedToken fields

id
uuid
Unique token identifier in Turtle’s config catalog.
address
string
Token contract address.
name
string
Token name.
symbol
string
Token symbol.
decimals
integer
Decimal precision used by the token.
chainId
integer
Decimal EVM chain ID for the token.
logoUrl
string
Token logo URL.
isAllowedRewardToken
boolean
Whether the token can be used as rewardTokenId for token-based stream creation on that chain.

Important Notes

Requests without chainId, or with chainId = 0, are rejected with 400 Invalid Argument.
The handler excludes inactive tokens and filters out native assets, so this endpoint returns the currently usable non-native token set for stream creation.
A stream can use both a rewardToken and a targetTokenId on the same supported network. The distinction here is support scope, not mutual exclusion: rewardToken is currently limited to the 5-chain subset listed above, while targetTokenId supports the broader chain list documented on this page.
When selecting a rewardTokenId for POST /v1/streams/, choose one of the returned tokens where isAllowedRewardToken is true. Tokens with isAllowedRewardToken = false can still be valid for other use cases such as targetTokenId, but not as the stream reward token.
When calling this endpoint, send the decimal EVM chainId shown in the tables above.

Error Handling

Status Code: 401 Unauthorized
{
  "error": "Invalid API key"
}
Solution: Pass a valid X-API-Key header.
Status Code: 400 Bad Request
{
  "error": {
    "status": "INVALID_ARGUMENT",
    "error": "chainId is required"
  }
}
Solution: Send a valid decimal EVM chain ID in the chainId query parameter.
Status Code: 500 Internal Server ErrorSolution: Retry the request and contact Turtle if the issue persists.