Aller directement au contenu principal

Create a Stream – Streams REST API

Mis à jour le
Jul 31, 2026

Présentation générale

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

Paramètres de requête

ParamètreTypeObligatoireDescription
nomchaîne de caractèresOuiA name for your stream
networkchaîne de caractèresOuiBlockchain network (see Supported Chains)
datasetchaîne de caractèresOuiDataset type (see Data Sources)
regionchaîne de caractèresOuiusa_east
dataset_batch_sizeentierOuiNumber of blocks to batch per delivery
elastic_batch_enabledbooléenOuiAuto-adjust batch size to 1 near chain tip
destinationchaîne de caractèresOuiwebhook, s3, azure, or postgres
destination_attributesobjetOuiConfiguration for selected destination
statutchaîne de caractèresOuiactive or paused
filter_functionchaîne de caractèresNonBase64-encoded JavaScript filter function
start_rangeentierNonStarting block number (omit for latest)
end_rangeentierNonEnding block number (omit for continuous)
fix_block_reorgsentierNon1 to enable reorg detection and re-streaming
keep_distance_from_tipentierNonBlocks to stay behind chain tip
notification_emailchaîne de caractèresNonEmail for stream termination alerts
extra_destinationstableauNonAdditional destinations (same structure as primary)

Destination Attributes

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

ParamètreTypeObligatoireDescription
urlchaîne de caractèresOuiWebhook endpoint URL
compressionchaîne de caractèresOuinone or gzip
max_retryentierOuiMax retry attempts
retry_interval_secentierOuiSeconds between retries
post_timeout_secentierOuiRequest timeout in seconds
headersobjetNonCustom headers as key-value pairs
mtlsbooléenNonEnable 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_pemchaîne de caractèresNonCA 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"
}'

Réponse

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"
}

Champs de réponse

ChampTypeDescription
idchaîne de caractèresUnique stream identifier (UUID)
nomchaîne de caractèresStream name
networkchaîne de caractèresBlockchain network
datasetchaîne de caractèresDataset type
regionchaîne de caractèresDeployment region
filter_functionchaîne de caractèresBase64-encoded filter function (if configured)
start_rangeentierStarting block number
end_rangeentierEnding block number (null for continuous)
dataset_batch_sizeentierNumber of blocks per batch
elastic_batch_enabledbooléenWhether elastic batching is enabled
fix_block_reorgsentierReorg detection setting (1 = enabled)
keep_distance_from_tipentierBlocks to stay behind chain tip
destinationchaîne de caractèresDestination type (webhook, s3, azure, postgres)
destination_attributesobjetDestination configuration (varies by type)
statutchaîne de caractèresStream status (active or paused)
séquenceentierLast delivered block from the data range
current_hashchaîne de caractèresHash of the current block being processed
notification_emailchaîne de caractèresEmail for stream termination alerts
extra_destinationstableauAdditional destinations (if configured)
created_atchaîne de caractèresStream creation timestamp (ISO 8601)
date_de_mise_à_jourchaîne de caractèresLast update timestamp (ISO 8601)

Response Destination Attributes

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

ChampTypeDescription
urlchaîne de caractèresWebhook endpoint URL
compressionchaîne de caractèresCompression type (none or gzip)
headersobjetCustom headers (if configured)
max_retryentierMaximum retry attempts
retry_interval_secentierSeconds between retries
post_timeout_secentierRequest timeout in seconds
security_tokenchaîne de caractèresAuto-generated token for validating webhook authenticity
remarque

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