Get your API key
All requests require an API key. See Authentication for details on how to obtain one. Send your first query
Query wallet positions for a single protocol against https://api.definitiv.io/graphql:curl -X POST https://api.definitiv.io/graphql \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"query": "{ walletPositions(inputs: [{ protocol: \"morpho\", chainId: 1, walletAddress: \"0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6\" }]) { data { ... on MorphoWalletPositions { protocol walletAddress chainId vaultV2Positions { vaultName assetsUsd apy } } } errors { protocol error { code message retryable } } } }"
}'
Read the response
The response contains a data array with successfully resolved positions and an errors array for any failures:{
"data": {
"walletPositions": {
"data": [
{
"protocol": "morpho",
"walletAddress": "0x742d35cc6634c0532925a3b8d4c9db96c4b4d8b6",
"chainId": 1,
"vaultV2Positions": [
{
"vaultName": "Morpho Blue USDC",
"assetsUsd": 10250.0,
"apy": 0.0685
}
]
}
],
"errors": []
}
}
}
Each protocol returns a different type. Use GraphQL inline fragments (... on MorphoWalletPositions, ... on AaveWalletPositions, etc.) to select protocol-specific fields.
Rate limit: 100 requests per 60-second window. Maximum 5 inputs per request. Exceeding the limit returns HTTP 429.
Query multiple protocols in a single request by passing multiple inputs. See walletPositions for examples.