Ga naar de hoofdinhoud

Create a Stream – Streams REST API

Bijgewerkt op
Jul 31, 2026

Overzicht

Creates a new stream with a specified blockchain network, dataset type, destination, and optional filter function. Use this endpoint to programmatically set up real-time or historical blockchain data pipelines.

Key capabilities:

  • Start from a specific block (backfills) or latest block (real-time streaming)
  • Choose destination: webhook, S3, Azure Blob Storage, or PostgreSQL
  • Attach a base64-encoded JavaScript filter to transform data before delivery
  • Configure batch sizes, reorg detection, distance-from-tip, and elastic batching
  • Set up multi-destination delivery with extra_destinations
  • Receive email alerts on stream termination

Endpoint

Send a POST request to the following URL with your stream configuration in the request body.

POST https://api.quicknode.com/streams/rest/v1/streams

Request Parameters

ParameterTypeRequiredBeschrijving
naamtekenreeksJaA name for your stream
networktekenreeksJaBlockchain network (see Supported Chains)
datasettekenreeksJaDataset type (see Data Sources)
regiontekenreeksJausa_east
dataset_batch_sizegeheel getalJaNumber of blocks to batch per delivery
elastic_batch_enabledbooleaanse waardeJaAuto-adjust batch size to 1 near chain tip
destinationtekenreeksJawebhook, s3, azure, or postgres
destination_attributesobjectJaConfiguration for selected destination
statustekenreeksJaactive or paused
filter_functiontekenreeksNeeBase64-encoded JavaScript filter function
start_rangegeheel getalNeeStarting block number (omit for latest)
end_rangegeheel getalNeeEnding block number (omit for continuous)
fix_block_reorgsgeheel getalNee1 to enable reorg detection and re-streaming
keep_distance_from_tipgeheel getalNeeBlocks to stay behind chain tip
notification_emailtekenreeksNeeEmail for stream termination alerts
extra_destinationsarrayNeeAdditional destinations (same structure as primary)

Bestemmingskenmerken

Configuration options vary based on the selected destination type. Select a tab below to view the required and optional attributes for each destination.

ParameterTypeRequiredBeschrijving
urltekenreeksJaWebhook endpoint URL
compressiontekenreeksJanone or gzip
max_retrygeheel getalJaMax retry attempts
retry_interval_secgeheel getalJaSeconds between retries
post_timeout_secgeheel getalJaRequest timeout in seconds
headersobjectNeeCustom headers as key-value pairs
mtlsbooleaanse waardeNeeEnable mutual TLS: Quicknode authenticates to your endpoint with its client certificate. Requires an HTTPS URL. See the Webhook destination page for server setup.
ssl_ca_pemtekenreeksNeeCA certificate (PEM) used to verify your endpoint's server certificate when it is signed by a private CA instead of a public one

For mTLS server configuration and how to download the Quicknode CA certificate, see Mutual TLS on the Webhook destination page.

Example Request

curl -X POST "https://api.quicknode.com/streams/rest/v1/streams" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"name": "My Stream",
"network": "ethereum-mainnet",
"dataset": "block",
"filter_function": "ZnVuY3Rpb24gbWFpbihkYXRhKSB7Li4ufQ==",
"region": "usa_east",
"start_range": 100,
"end_range": 200,
"dataset_batch_size": 1,
"destination": "webhook",
"fix_block_reorgs": 0,
"keep_distance_from_tip": 0,
"elastic_batch_enabled": true,
"destination_attributes": {
"url": "https://webhook.site",
"compression": "none",
"headers": { "Authorization": "Bearer token" },
"max_retry": 3,
"retry_interval_sec": 1,
"post_timeout_sec": 10,
"mtls": true
},
"status": "active"
}'

Antwoord

On success, the API returns the created stream object with a unique ID, timestamps, and all configured parameters.

{
"id": "f6ad6459-b5ad-4183-b370-1c1388e47e83",
"name": "My Stream",
"network": "ethereum-mainnet",
"dataset": "block",
"region": "usa_east",
"filter_function": "ZnVuY3Rpb24gbWFpbihkYXRhKSB7Li4ufQ==",
"start_range": 100,
"end_range": 200,
"dataset_batch_size": 1,
"elastic_batch_enabled": true,
"fix_block_reorgs": 0,
"keep_distance_from_tip": 0,
"destination": "webhook",
"destination_attributes": {
"url": "https://webhook.site",
"compression": "none",
"headers": { "Authorization": "Bearer token" },
"max_retry": 3,
"retry_interval_sec": 1,
"post_timeout_sec": 10,
"mtls": true,
"security_token": "qn_xxxxxxxxxxxxxx"
},
"status": "active",
"sequence": 0,
"current_hash": null,
"notification_email": null,
"extra_destinations": [],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}

Response Fields

FieldTypeBeschrijving
idtekenreeksUnique stream identifier (UUID)
naamtekenreeksStream name
networktekenreeksBlockchain network
datasettekenreeksDataset type
regiontekenreeksDeployment region
filter_functiontekenreeksBase64-encoded filter function (if configured)
start_rangegeheel getalStarting block number
end_rangegeheel getalEnding block number (null for continuous)
dataset_batch_sizegeheel getalNumber of blocks per batch
elastic_batch_enabledbooleaanse waardeWhether elastic batching is enabled
fix_block_reorgsgeheel getalReorg detection setting (1 = enabled)
keep_distance_from_tipgeheel getalBlocks to stay behind chain tip
destinationtekenreeksDestination type (webhook, s3, azure, postgres)
destination_attributesobjectDestination configuration (varies by type)
statustekenreeksStream status (active or paused)
reeksgeheel getalLast delivered block from the data range
current_hashtekenreeksHash of the current block being processed
notification_emailtekenreeksEmail for stream termination alerts
extra_destinationsarrayAdditional destinations (if configured)
created_attekenreeksStream creation timestamp (ISO 8601)
bijgewerkt_optekenreeksLast update timestamp (ISO 8601)

Response Destination Attributes

De destination_attributes object in the response varies based on the destination type. Select a tab below to view the fields returned for each destination.

FieldTypeBeschrijving
urltekenreeksWebhook endpoint URL
compressiontekenreeksCompression type (none or gzip)
headersobjectCustom headers (if configured)
max_retrygeheel getalMaximum retry attempts
retry_interval_secgeheel getalSeconds between retries
post_timeout_secgeheel getalRequest timeout in seconds
security_tokentekenreeksAuto-generated token for validating webhook authenticity
note

Sensitive fields like secret_key (S3), sas_token (Azure), and password (PostgreSQL) are not returned in the response for security reasons.