This folder documents the CCIP directory REST API hosted on Chainlink Documentation (/api/ccip/v1/*): supported chains, tokens, and lanes.
The CCIP Directory and configuration REST API (v1) (/api/ccip/v1/* on docs.chain.link) is planned for deprecation soon. Official timelines and migration guidance will be published in the CCIP Tools documentation. For new integrations, prefer the CCIP Tools REST API (v2) and the SDK/CLI where they cover your use case.
| Surface | Use when you need | Where |
|---|---|---|
| CCIP Tools REST API (v2) | Messages, lane latency, intents, tooling | CCIP Tools API (maintained with the CCIP Tools docs site) |
| On-chain contracts and interfaces | Solidity, Move, SVM, TON integration | CCIP contracts and interfaces reference |
The CCIP Tools docs repository should cross-link back here for directory/configuration (v1) and keep page titles distinct (e.g. include "Tools" and "v2" in REST API page metadata) so search engines do not merge intents with this v1 surface.
This HTTP API returns information about supported chains and tokens in CCIP. You can query chain details, token information, supported fee tokens, and contract addresses used for cross-chain operations.
We provide a complete Postman Collection that you can import to quickly test all API endpoints. The collection includes:
To import the collection into Postman:
Before making requests:
baseUrl with:
https://docs.chain.linkhttp://localhost:4321 (for local testing) or https://docs.chain.link (for production)Now you can start making requests to test the API endpoints!
# Chains API
# Get all mainnet chains
curl "https://docs.chain.link/api/ccip/v1/chains?environment=mainnet"
# Get Ethereum mainnet
curl "https://docs.chain.link/api/ccip/v1/chains?environment=mainnet&chainId=1"
# Get multiple chains by chainId
curl "https://docs.chain.link/api/ccip/v1/chains?environment=mainnet&chainId=1,56"
# Get multiple chains by internalId
curl "https://docs.chain.link/api/ccip/v1/chains?environment=mainnet&internalId=ethereum-mainnet,bsc-mainnet"
# Tokens API
# Get all mainnet tokens
curl "https://docs.chain.link/api/ccip/v1/tokens?environment=mainnet"
# Get tokens by symbol
curl "https://docs.chain.link/api/ccip/v1/tokens?environment=mainnet&symbol=LINK"
# Get tokens available on a specific chain
curl "https://docs.chain.link/api/ccip/v1/tokens?environment=mainnet&chainId=1"
Query CCIP chain information.
Query Parameters:
environment (required): Network environment
mainnet, testnetchainId (optional): Filter by chain ID
1 (Ethereum)1,56 (Ethereum and BSC)selector (optional): Filter by CCIP chain selector
50092975507151572695009297550715157269,13264668187771770619internalId (optional): Filter by internal chain identifier
ethereum-mainnetethereum-mainnet,bsc-mainnetoutputKey (optional): Key to use for response organization
chainId, selector, internalIdchainIdResponse Format:
interface ChainApiResponse {
metadata: {
environment: string
timestamp: string
requestId: string
ignoredChainCount: number
validChainCount: number
}
data: {
evm: Record<string, ChainDetails>
}
ignored: ChainConfigError[]
}
interface ChainDetails {
chainId: number
displayName: string
selector: string
internalId: string
feeTokens: string[]
router: string
rmn: string
registryModule: string
tokenAdminRegistry: string
}
Query CCIP token information.
Query Parameters:
environment (required): Network environment
mainnet, testnetsymbol (optional): Filter by token symbol
LINK (Chainlink)LINK,ETH (Chainlink and Ethereum)chainId (optional): Filter by chain ID where the token is available
1 (Ethereum)1,56 (Ethereum and BSC)outputKey (optional): Key to use for response organization
chainId, selector, internalIdchainIdResponse Format:
interface TokenApiResponse {
metadata: {
environment: string
timestamp: string
requestId: string
ignoredTokenCount: number
validTokenCount: number
}
data: Record<string, TokenDetails>
ignored: TokenConfigError[]
}
interface TokenDetails {
symbol: string
lanes: Record<string, string[]> // Source chain -> destination chains
chains: TokenChainInfo[]
}
interface TokenChainInfo {
chainId: number
chainName: string
tokenAddress: string
decimals: number
poolType: string
poolAddress: string
}
The API uses standard HTTP status codes:
200: Success400: Invalid request (e.g., invalid parameters)500: Server errorError responses follow this format:
interface ErrorResponse {
error: string
message: string
}