curl -X POST "https://api.blockdb.io/v1/evm/raw/internal-transactions" \
-H "Authorization: Bearer $BLOCKDB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"call_types": ["CALL", "DELEGATECALL"],
"tx_success": true,
"limit": 250,
"cursor": null
}'
#include <curl/curl.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
CURL *curl = curl_easy_init();
if (!curl) return 1;
const char *token = getenv("BLOCKDB_API_KEY");
char auth_header[256];
snprintf(auth_header, sizeof(auth_header), "Authorization: Bearer %s", token ? token : "");
const char *payload = "{\"chain_id\":1,\"from_block\":12345678,\"to_block\":12345999,\"limit\":250,\"cursor\":null}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, auth_header);
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.blockdb.io/v1/evm/raw/internal-transactions");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
CURLcode res = curl_easy_perform(curl);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
return res == CURLE_OK ? 0 : 1;
}
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("BLOCKDB_API_KEY"));
var payload = new StringContent(
"{\"chain_id\":1,\"from_block\":12345678,\"to_block\":12345999,\"limit\":250,\"cursor\":null}",
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync("https://api.blockdb.io/v1/evm/raw/internal-transactions", payload);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
}
import os
import requests
response = requests.post(
"https://api.blockdb.io/v1/evm/raw/internal-transactions",
headers={
"Authorization": f"Bearer {os.getenv('BLOCKDB_API_KEY')}",
"Content-Type": "application/json"
},
json={
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"tx_hashes": ["7b5c0972efb6a0b5be4a4d4a0de5d1abd922478a53f32b2c717a800c862ba9e0"],
"call_types": ["CALL", "DELEGATECALL"],
"limit": 250,
"cursor": None
}
)
data = response.json()
print(data)
const response = await fetch("https://api.blockdb.io/v1/evm/raw/internal-transactions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.BLOCKDB_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
chain_id: 1,
from_block: 12345678,
to_block: 12345999,
tx_hashes: ["7b5c0972efb6a0b5be4a4d4a0de5d1abd922478a53f32b2c717a800c862ba9e0"],
call_types: ["CALL", "DELEGATECALL"],
limit: 250,
cursor: null
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"os"
"strings"
)
func main() {
payload := strings.NewReader(`{
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"limit": 250,
"cursor": null
}`)
req, _ := http.NewRequest("POST", "https://api.blockdb.io/v1/evm/raw/internal-transactions", payload)
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", os.Getenv("BLOCKDB_API_KEY")))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
// Handle response
}
{
"meta": {
"chain_id": 1,
"request_window": {
"from_block": 12345678,
"to_block": 12345999,
"from_timestamp": null,
"to_timestamp": null
},
"resolved_window": {
"from_block": 12345678,
"to_block": 12345999,
"from_timestamp": null,
"to_timestamp": null
},
"filters": {
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"call_types": [
"CALL",
"DELEGATECALL"
],
"tx_success": true,
"limit": 250,
"cursor": null
}
},
"data": [
{
"block_number": 12345680,
"block_time": "2025-10-29T00:01:23Z",
"tx_index": 5,
"trace_address": "0",
"call_type": "CALL",
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"value_wei": "1000000000000000000",
"gas": null,
"gas_used": null,
"input": null,
"output": null,
"error": null,
"tx_success": true,
"_tracing_id": "011100000000000000000000000000000001",
"_created_at": "2025-11-11T18:42:15.123Z",
"_updated_at": "2025-11-11T18:42:15.123Z"
},
{
"block_number": 12345680,
"block_time": "2025-10-29T00:01:23Z",
"tx_index": 5,
"trace_address": "0.1",
"call_type": "DELEGATECALL",
"from_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"to_address": "0000000000000000000000000000000000000001",
"value_wei": "0",
"gas": null,
"gas_used": null,
"input": null,
"output": null,
"error": null,
"tx_success": true,
"_tracing_id": "011100000000000000000000000000000002",
"_created_at": "2025-11-11T18:42:15.123Z",
"_updated_at": "2025-11-11T18:42:15.123Z"
}
],
"cursor": "next_page_cursor",
"page_count": 2
}
{
"error": {
"code": "BAD_REQUEST",
"http_status": 400,
"message": "The request contains invalid or missing parameters.",
"hint": "Validate all required parameters against the endpoint specification before retrying.",
"severity": "error",
"retryable": false,
"details": {
"invalid_parameters": [
{
"name": "chain_id",
"location": "body",
"reason": "missing",
"expected": "positive integer, e.g. 1"
},
{
"name": "from_block",
"location": "body",
"reason": "required_with",
"expected": "provide either block range (from_block + to_block), time range (from_timestamp + to_timestamp), or tx_hashes / block_numbers"
}
]
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/home"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"http_status": 401,
"message": "Invalid or missing API key.",
"hint": "Ensure you send 'Authorization: Bearer <API_KEY>' in every request to this endpoint.",
"severity": "error",
"retryable": false,
"details": {
"auth_scheme": "bearer",
"expected_header": "Authorization: Bearer <API_KEY>",
"provided_header": "Authorization: <REDACTED_OR_MISSING>",
"token_status": "invalid_or_missing",
"recommendation": "Regenerate the API key if you suspect it is expired or compromised."
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/authorization"
}
}
{
"error": {
"code": "FORBIDDEN",
"http_status": 403,
"message": "Your API key does not have permission to access this endpoint.",
"hint": "Upgrade your subscription tier or request additional access.",
"severity": "warning",
"retryable": false,
"details": {
"required_plan": "production",
"your_plan": null,
"contact": "support@blockdb.io",
"recommendation": "Contact BlockDB Support Team via email support@blockdb.io."
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "NOT_FOUND",
"http_status": 404,
"message": "The requested resource does not exist.",
"hint": "Verify the API endpoint",
"severity": "warning",
"retryable": false,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "PAYLOAD_TOO_LARGE",
"http_status": 413,
"message": "The requested response exceeds the maximum allowed size of 10 MB.",
"hint": "Reduce the limit, narrow the block or time window, or apply additional filters before retrying.",
"details": {
"max_allowed_bytes": 10485760,
"estimated_response_bytes": 15360000,
"recommended_actions": [
"Decrease the 'limit' parameter value",
"Shorten the block range or time window",
"Filter by from_address, to_address, call_types, or tx_hashes"
]
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/pagination-and-limits"
}
}
{
"error": {
"code": "CHAIN_NOT_SUPPORTED",
"http_status": 422,
"message": "chain_id=137 is not supported.",
"hint": "Use a supported chain_id. Consult the documentation for the list of available chains.",
"severity": "error",
"retryable": false,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"http_status": 429,
"message": "You have exceeded the allowed request rate.",
"hint": "Introduce client-side throttling or exponential backoff and respect the retry_after_seconds value.",
"details": {
"limit_rps": 1000,
"current_estimated_rps": 73,
"retry_after_seconds": 2,
"limit_scope": "api_key",
"limit_window_seconds": 1
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/rate-limiting"
}
}
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"http_status": 500,
"message": "An unexpected server error occurred.",
"hint": "This error is not caused by your request. You may retry after a short delay.",
"severity": "critical",
"retryable": true,
"details": {
"incident_id": "INC-2025-11-11-123456",
"temporary_issue": true,
"expected_recovery_seconds": 5
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "SERVICE_UNAVAILABLE",
"http_status": 503,
"message": "The service is temporarily unable to handle the request.",
"hint": "The database connection pool is briefly saturated. Retry after a short delay.",
"severity": "warning",
"retryable": true,
"details": null,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
Primitives
Internal Transactions
Query internal transactions (call traces) from debug_traceTransaction with call type, value, gas, and revert data.
POST
/
v1
/
evm
/
raw
/
internal-transactions
curl -X POST "https://api.blockdb.io/v1/evm/raw/internal-transactions" \
-H "Authorization: Bearer $BLOCKDB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"call_types": ["CALL", "DELEGATECALL"],
"tx_success": true,
"limit": 250,
"cursor": null
}'
#include <curl/curl.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
CURL *curl = curl_easy_init();
if (!curl) return 1;
const char *token = getenv("BLOCKDB_API_KEY");
char auth_header[256];
snprintf(auth_header, sizeof(auth_header), "Authorization: Bearer %s", token ? token : "");
const char *payload = "{\"chain_id\":1,\"from_block\":12345678,\"to_block\":12345999,\"limit\":250,\"cursor\":null}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, auth_header);
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.blockdb.io/v1/evm/raw/internal-transactions");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
CURLcode res = curl_easy_perform(curl);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
return res == CURLE_OK ? 0 : 1;
}
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("BLOCKDB_API_KEY"));
var payload = new StringContent(
"{\"chain_id\":1,\"from_block\":12345678,\"to_block\":12345999,\"limit\":250,\"cursor\":null}",
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync("https://api.blockdb.io/v1/evm/raw/internal-transactions", payload);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
}
import os
import requests
response = requests.post(
"https://api.blockdb.io/v1/evm/raw/internal-transactions",
headers={
"Authorization": f"Bearer {os.getenv('BLOCKDB_API_KEY')}",
"Content-Type": "application/json"
},
json={
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"tx_hashes": ["7b5c0972efb6a0b5be4a4d4a0de5d1abd922478a53f32b2c717a800c862ba9e0"],
"call_types": ["CALL", "DELEGATECALL"],
"limit": 250,
"cursor": None
}
)
data = response.json()
print(data)
const response = await fetch("https://api.blockdb.io/v1/evm/raw/internal-transactions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.BLOCKDB_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
chain_id: 1,
from_block: 12345678,
to_block: 12345999,
tx_hashes: ["7b5c0972efb6a0b5be4a4d4a0de5d1abd922478a53f32b2c717a800c862ba9e0"],
call_types: ["CALL", "DELEGATECALL"],
limit: 250,
cursor: null
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"os"
"strings"
)
func main() {
payload := strings.NewReader(`{
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"limit": 250,
"cursor": null
}`)
req, _ := http.NewRequest("POST", "https://api.blockdb.io/v1/evm/raw/internal-transactions", payload)
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", os.Getenv("BLOCKDB_API_KEY")))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
// Handle response
}
{
"meta": {
"chain_id": 1,
"request_window": {
"from_block": 12345678,
"to_block": 12345999,
"from_timestamp": null,
"to_timestamp": null
},
"resolved_window": {
"from_block": 12345678,
"to_block": 12345999,
"from_timestamp": null,
"to_timestamp": null
},
"filters": {
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"call_types": [
"CALL",
"DELEGATECALL"
],
"tx_success": true,
"limit": 250,
"cursor": null
}
},
"data": [
{
"block_number": 12345680,
"block_time": "2025-10-29T00:01:23Z",
"tx_index": 5,
"trace_address": "0",
"call_type": "CALL",
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"value_wei": "1000000000000000000",
"gas": null,
"gas_used": null,
"input": null,
"output": null,
"error": null,
"tx_success": true,
"_tracing_id": "011100000000000000000000000000000001",
"_created_at": "2025-11-11T18:42:15.123Z",
"_updated_at": "2025-11-11T18:42:15.123Z"
},
{
"block_number": 12345680,
"block_time": "2025-10-29T00:01:23Z",
"tx_index": 5,
"trace_address": "0.1",
"call_type": "DELEGATECALL",
"from_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"to_address": "0000000000000000000000000000000000000001",
"value_wei": "0",
"gas": null,
"gas_used": null,
"input": null,
"output": null,
"error": null,
"tx_success": true,
"_tracing_id": "011100000000000000000000000000000002",
"_created_at": "2025-11-11T18:42:15.123Z",
"_updated_at": "2025-11-11T18:42:15.123Z"
}
],
"cursor": "next_page_cursor",
"page_count": 2
}
{
"error": {
"code": "BAD_REQUEST",
"http_status": 400,
"message": "The request contains invalid or missing parameters.",
"hint": "Validate all required parameters against the endpoint specification before retrying.",
"severity": "error",
"retryable": false,
"details": {
"invalid_parameters": [
{
"name": "chain_id",
"location": "body",
"reason": "missing",
"expected": "positive integer, e.g. 1"
},
{
"name": "from_block",
"location": "body",
"reason": "required_with",
"expected": "provide either block range (from_block + to_block), time range (from_timestamp + to_timestamp), or tx_hashes / block_numbers"
}
]
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/home"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"http_status": 401,
"message": "Invalid or missing API key.",
"hint": "Ensure you send 'Authorization: Bearer <API_KEY>' in every request to this endpoint.",
"severity": "error",
"retryable": false,
"details": {
"auth_scheme": "bearer",
"expected_header": "Authorization: Bearer <API_KEY>",
"provided_header": "Authorization: <REDACTED_OR_MISSING>",
"token_status": "invalid_or_missing",
"recommendation": "Regenerate the API key if you suspect it is expired or compromised."
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/authorization"
}
}
{
"error": {
"code": "FORBIDDEN",
"http_status": 403,
"message": "Your API key does not have permission to access this endpoint.",
"hint": "Upgrade your subscription tier or request additional access.",
"severity": "warning",
"retryable": false,
"details": {
"required_plan": "production",
"your_plan": null,
"contact": "support@blockdb.io",
"recommendation": "Contact BlockDB Support Team via email support@blockdb.io."
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "NOT_FOUND",
"http_status": 404,
"message": "The requested resource does not exist.",
"hint": "Verify the API endpoint",
"severity": "warning",
"retryable": false,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "PAYLOAD_TOO_LARGE",
"http_status": 413,
"message": "The requested response exceeds the maximum allowed size of 10 MB.",
"hint": "Reduce the limit, narrow the block or time window, or apply additional filters before retrying.",
"details": {
"max_allowed_bytes": 10485760,
"estimated_response_bytes": 15360000,
"recommended_actions": [
"Decrease the 'limit' parameter value",
"Shorten the block range or time window",
"Filter by from_address, to_address, call_types, or tx_hashes"
]
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/pagination-and-limits"
}
}
{
"error": {
"code": "CHAIN_NOT_SUPPORTED",
"http_status": 422,
"message": "chain_id=137 is not supported.",
"hint": "Use a supported chain_id. Consult the documentation for the list of available chains.",
"severity": "error",
"retryable": false,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"http_status": 429,
"message": "You have exceeded the allowed request rate.",
"hint": "Introduce client-side throttling or exponential backoff and respect the retry_after_seconds value.",
"details": {
"limit_rps": 1000,
"current_estimated_rps": 73,
"retry_after_seconds": 2,
"limit_scope": "api_key",
"limit_window_seconds": 1
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/rate-limiting"
}
}
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"http_status": 500,
"message": "An unexpected server error occurred.",
"hint": "This error is not caused by your request. You may retry after a short delay.",
"severity": "critical",
"retryable": true,
"details": {
"incident_id": "INC-2025-11-11-123456",
"temporary_issue": true,
"expected_recovery_seconds": 5
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "SERVICE_UNAVAILABLE",
"http_status": 503,
"message": "The service is temporarily unable to handle the request.",
"hint": "The database connection pool is briefly saturated. Retry after a short delay.",
"severity": "warning",
"retryable": true,
"details": null,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
Not publicly available: This dataset is not included in the standard public API. Request access via a custom plan — contact support@blockdb.io.
Overview
- Dataset ID:
0111 - Internal Transactions - Description: Internal transactions (call traces) from
debug_traceTransaction. Response rows mirrorblockdb_evm.b0111_internal_transactions_v1(hex strings without0xforBYTEAfields in JSON). - CSV Sample: Download
- JSON Sample: Download
Parameters
Range Filters (mutually exclusive)
number
Starting block number (inclusive) for the query. Use with
to_block.number
Ending block number (inclusive) for the query. Use with
from_block.string
Starting timestamp (ISO-8601). If it falls between blocks, the next block after this timestamp is used. Use with
to_timestamp.string
Ending timestamp (ISO-8601). If it falls between blocks, the last block before this timestamp is used. Use with
from_timestamp.Scoping rule: Provide exactly one of:
- Block range —
from_blockandto_block - Time range —
from_timestampandto_timestamp - Direct selectors — presented below
Direct Selectors
number[]
Explicit set of block numbers. Mutually exclusive with
tx_hashes.string[]
Filter by parent transaction hash (hex string, 32 bytes, no
0x prefix). Returns all call traces for those transactions. Mutually exclusive with block_numbers.Address & Type Filters
string
Filter by caller address (hex string, 20 bytes, no
0x prefix).string
Filter by callee address (hex string, 20 bytes, no
0x prefix). Failed CREATE/CREATE2 may have null to_address and are excluded when this filter is present.string[]
Filter by call type:
CALL, DELEGATECALL, STATICCALL, CREATE, CREATE2. Omit to return all types.boolean
Filter by underlying transaction success (
true = success, false = reverted). Omit to return traces for both.Pagination Controls
number
default:"250"
Recommended default
250; maximum 1000 to stay under ~10 MB responses.string
Pagination cursor from a prior call.
Response Fields
Meta
object
Echo of request metadata applied to the response.
number
EVM chain ID echoed from the request.
object
Pure echo of the window you sent (
from_block/to_block/from_timestamp/to_timestamp); unset bounds are null.object | null
The concrete window the query actually executed against, after resolving the request. For a block range on a time-bucketed endpoint (OHLC/VWAP/VWAP-aggregate/fiat VWAP),
from_timestamp/to_timestamp hold the resolved timestamp window (and from_block/to_block echo your request). For a time range on a block-keyed endpoint, from_block/to_block hold the resolved block range (and the timestamps echo your request). null for selector-only requests (no window). No extra database work is done — these are the values the query already computed.number | null
Resolved/echoed start block of the executed window.
number | null
Resolved/echoed end block of the executed window.
string | null
Resolved/echoed start timestamp (ISO-8601) of the executed window.
string | null
Resolved/echoed end timestamp (ISO-8601) of the executed window.
object
Filter parameters echoed from the request (addresses, call_types, tx_success, pagination state, etc.).
Data
object[]
Array of internal transaction (call trace) records, ordered by block, tx index, and trace address.
number
Block number of the parent transaction.
string
UTC timestamp of the block (ISO-8601).
number
Zero-based index of the parent transaction within the block.
string
Position in the call tree (e.g.
"0", "0.0", "0.1").string
One of:
CALL, DELEGATECALL, STATICCALL, CREATE, CREATE2.string
Caller address (hex string, 20 bytes, no
0x prefix).string | null
Callee address (hex string, 20 bytes); null for failed CREATE/CREATE2.
string
Native value transferred in this call, in wei (string to preserve precision).
string | null
Gas allocated for this call (string to preserve precision); null when disabled from indexing.
string | null
Gas consumed by this call (string to preserve precision); null when disabled from indexing.
string | null
Calldata for this call (hex string, no
0x prefix); null when disabled from indexing.string | null
Return data from the call (hex string, no
0x prefix when present); null when disabled from indexing or if the call reverted or return data is absent in the source trace.string | null
Error message if the call reverted; null otherwise.
boolean
Success of the underlying parent transaction that produced this internal call.
string
Internal tracing ID for observability (hex string, no
0x prefix); unique per row.string
Record creation timestamp, e.g.
"2025-11-11T18:42:15.123Z".string
Last update timestamp in the same format.
Envelope Fields
string | null
Cursor token for pagination.
number
Number of records returned in
data.curl -X POST "https://api.blockdb.io/v1/evm/raw/internal-transactions" \
-H "Authorization: Bearer $BLOCKDB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"call_types": ["CALL", "DELEGATECALL"],
"tx_success": true,
"limit": 250,
"cursor": null
}'
#include <curl/curl.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
CURL *curl = curl_easy_init();
if (!curl) return 1;
const char *token = getenv("BLOCKDB_API_KEY");
char auth_header[256];
snprintf(auth_header, sizeof(auth_header), "Authorization: Bearer %s", token ? token : "");
const char *payload = "{\"chain_id\":1,\"from_block\":12345678,\"to_block\":12345999,\"limit\":250,\"cursor\":null}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, auth_header);
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.blockdb.io/v1/evm/raw/internal-transactions");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
CURLcode res = curl_easy_perform(curl);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
return res == CURLE_OK ? 0 : 1;
}
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("BLOCKDB_API_KEY"));
var payload = new StringContent(
"{\"chain_id\":1,\"from_block\":12345678,\"to_block\":12345999,\"limit\":250,\"cursor\":null}",
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync("https://api.blockdb.io/v1/evm/raw/internal-transactions", payload);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
}
import os
import requests
response = requests.post(
"https://api.blockdb.io/v1/evm/raw/internal-transactions",
headers={
"Authorization": f"Bearer {os.getenv('BLOCKDB_API_KEY')}",
"Content-Type": "application/json"
},
json={
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"tx_hashes": ["7b5c0972efb6a0b5be4a4d4a0de5d1abd922478a53f32b2c717a800c862ba9e0"],
"call_types": ["CALL", "DELEGATECALL"],
"limit": 250,
"cursor": None
}
)
data = response.json()
print(data)
const response = await fetch("https://api.blockdb.io/v1/evm/raw/internal-transactions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.BLOCKDB_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
chain_id: 1,
from_block: 12345678,
to_block: 12345999,
tx_hashes: ["7b5c0972efb6a0b5be4a4d4a0de5d1abd922478a53f32b2c717a800c862ba9e0"],
call_types: ["CALL", "DELEGATECALL"],
limit: 250,
cursor: null
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"os"
"strings"
)
func main() {
payload := strings.NewReader(`{
"chain_id": 1,
"from_block": 12345678,
"to_block": 12345999,
"limit": 250,
"cursor": null
}`)
req, _ := http.NewRequest("POST", "https://api.blockdb.io/v1/evm/raw/internal-transactions", payload)
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", os.Getenv("BLOCKDB_API_KEY")))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
// Handle response
}
{
"meta": {
"chain_id": 1,
"request_window": {
"from_block": 12345678,
"to_block": 12345999,
"from_timestamp": null,
"to_timestamp": null
},
"resolved_window": {
"from_block": 12345678,
"to_block": 12345999,
"from_timestamp": null,
"to_timestamp": null
},
"filters": {
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"call_types": [
"CALL",
"DELEGATECALL"
],
"tx_success": true,
"limit": 250,
"cursor": null
}
},
"data": [
{
"block_number": 12345680,
"block_time": "2025-10-29T00:01:23Z",
"tx_index": 5,
"trace_address": "0",
"call_type": "CALL",
"from_address": "0000000000000000000000000000000000000000",
"to_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"value_wei": "1000000000000000000",
"gas": null,
"gas_used": null,
"input": null,
"output": null,
"error": null,
"tx_success": true,
"_tracing_id": "011100000000000000000000000000000001",
"_created_at": "2025-11-11T18:42:15.123Z",
"_updated_at": "2025-11-11T18:42:15.123Z"
},
{
"block_number": 12345680,
"block_time": "2025-10-29T00:01:23Z",
"tx_index": 5,
"trace_address": "0.1",
"call_type": "DELEGATECALL",
"from_address": "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"to_address": "0000000000000000000000000000000000000001",
"value_wei": "0",
"gas": null,
"gas_used": null,
"input": null,
"output": null,
"error": null,
"tx_success": true,
"_tracing_id": "011100000000000000000000000000000002",
"_created_at": "2025-11-11T18:42:15.123Z",
"_updated_at": "2025-11-11T18:42:15.123Z"
}
],
"cursor": "next_page_cursor",
"page_count": 2
}
{
"error": {
"code": "BAD_REQUEST",
"http_status": 400,
"message": "The request contains invalid or missing parameters.",
"hint": "Validate all required parameters against the endpoint specification before retrying.",
"severity": "error",
"retryable": false,
"details": {
"invalid_parameters": [
{
"name": "chain_id",
"location": "body",
"reason": "missing",
"expected": "positive integer, e.g. 1"
},
{
"name": "from_block",
"location": "body",
"reason": "required_with",
"expected": "provide either block range (from_block + to_block), time range (from_timestamp + to_timestamp), or tx_hashes / block_numbers"
}
]
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/home"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"http_status": 401,
"message": "Invalid or missing API key.",
"hint": "Ensure you send 'Authorization: Bearer <API_KEY>' in every request to this endpoint.",
"severity": "error",
"retryable": false,
"details": {
"auth_scheme": "bearer",
"expected_header": "Authorization: Bearer <API_KEY>",
"provided_header": "Authorization: <REDACTED_OR_MISSING>",
"token_status": "invalid_or_missing",
"recommendation": "Regenerate the API key if you suspect it is expired or compromised."
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/authorization"
}
}
{
"error": {
"code": "FORBIDDEN",
"http_status": 403,
"message": "Your API key does not have permission to access this endpoint.",
"hint": "Upgrade your subscription tier or request additional access.",
"severity": "warning",
"retryable": false,
"details": {
"required_plan": "production",
"your_plan": null,
"contact": "support@blockdb.io",
"recommendation": "Contact BlockDB Support Team via email support@blockdb.io."
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "NOT_FOUND",
"http_status": 404,
"message": "The requested resource does not exist.",
"hint": "Verify the API endpoint",
"severity": "warning",
"retryable": false,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "PAYLOAD_TOO_LARGE",
"http_status": 413,
"message": "The requested response exceeds the maximum allowed size of 10 MB.",
"hint": "Reduce the limit, narrow the block or time window, or apply additional filters before retrying.",
"details": {
"max_allowed_bytes": 10485760,
"estimated_response_bytes": 15360000,
"recommended_actions": [
"Decrease the 'limit' parameter value",
"Shorten the block range or time window",
"Filter by from_address, to_address, call_types, or tx_hashes"
]
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/pagination-and-limits"
}
}
{
"error": {
"code": "CHAIN_NOT_SUPPORTED",
"http_status": 422,
"message": "chain_id=137 is not supported.",
"hint": "Use a supported chain_id. Consult the documentation for the list of available chains.",
"severity": "error",
"retryable": false,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"http_status": 429,
"message": "You have exceeded the allowed request rate.",
"hint": "Introduce client-side throttling or exponential backoff and respect the retry_after_seconds value.",
"details": {
"limit_rps": 1000,
"current_estimated_rps": 73,
"retry_after_seconds": 2,
"limit_scope": "api_key",
"limit_window_seconds": 1
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/rate-limiting"
}
}
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"http_status": 500,
"message": "An unexpected server error occurred.",
"hint": "This error is not caused by your request. You may retry after a short delay.",
"severity": "critical",
"retryable": true,
"details": {
"incident_id": "INC-2025-11-11-123456",
"temporary_issue": true,
"expected_recovery_seconds": 5
},
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
{
"error": {
"code": "SERVICE_UNAVAILABLE",
"http_status": 503,
"message": "The service is temporarily unable to handle the request.",
"hint": "The database connection pool is briefly saturated. Retry after a short delay.",
"severity": "warning",
"retryable": true,
"details": null,
"docs_url": "https://docs.blockdb.io/api-reference/overview/error-codes"
}
}
Last modified on July 19, 2026
Was this page helpful?
⌘I