Skip to main content

Update a Stream – Streams REST API

Updated on
Sep 15, 2026

Overview​

Updates the configuration of an existing stream. Use this endpoint to modify a stream's name, filter function, destination, destination attributes, extra destinations, batch size, metadata settings, reorg handling, distance-from-tip, notification email, and other configuration options without needing to delete and recreate the stream.

Key capabilities:

  • Change webhook URL or destination credentials
  • Update filter functions on-the-fly
  • Switch compression settings
  • Adjust retry parameters
  • Add or modify extra destinations
  • Update batch size and elastic batching settings

note

The network, dataset, and region fields cannot be changed after stream creation. To change these, create a new stream instead.

Endpoint​

Send a PATCH request to update an existing stream.

PATCH https://api.quicknode.com/streams/rest/v1/streams/{id}

Path Parameters​

ParameterTypeRequiredDescription
idstringYesThe unique identifier (UUID) of the stream to update

Request Parameters​

All body parameters are optional. Only include the fields you want to update.

ParameterTypeRequiredDescription
namestringNoA new name for your stream
filter_functionstringNoBase64-encoded JavaScript filter function
start_rangeintegerNoStarting block number
end_rangeintegerNoEnding block number
dataset_batch_sizeintegerNoNumber of blocks to batch per delivery. Tip Streams on networks with sub-second block times require at least 5, see Batch Size and Elastic Batch
statusstringNoactive or paused
elastic_batch_enabledbooleanNoDeliver whatever blocks are available at the chain tip without waiting for the batch to fill
fix_block_reorgsintegerNo1 to enable reorg detection
keep_distance_from_tipintegerNoBlocks to stay behind chain tip
notification_emailstringNoEmail for stream termination alerts
destinationstringNowebhook, s3, azure, or postgres
destination_attributesobjectNoConfiguration for selected destination
extra_destinationsarrayNoAdditional destinations

Destination Attributes​

When updating destination attributes, the configuration options vary based on the selected destination type. Select a tab below to view the attributes for each destination.

ParameterTypeRequiredDescription
urlstringYesWebhook endpoint URL
compressionstringYesnone or gzip
max_retryintegerYesMax retry attempts
retry_interval_secintegerYesSeconds between retries
post_timeout_secintegerYesRequest timeout in seconds
headersobjectNoCustom headers as key-value pairs
mtlsbooleanNoEnable mutual TLS: Quicknode authenticates to your endpoint with its client certificate. Requires an HTTPS URL. Send false explicitly to disable. See the Webhook destination page for server setup.
ssl_ca_pemstringNoCA certificate (PEM) used to verify your endpoint's server certificate when it is signed by a private CA. Send an empty string to clear.

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

Example Request​

curl -X PATCH "https://api.quicknode.com/streams/rest/v1/streams/f6ad6459-b5ad-4183-b370-1c1388e47e83" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"name": "Updated Stream Name",
"destination_attributes": {
"url": "https://new-webhook.site",
"compression": "gzip",
"max_retry": 5,
"retry_interval_sec": 2,
"post_timeout_sec": 15,
"mtls": true
}
}'

Response​

On success, the API returns the updated stream object with all configuration and status information.

{
"id": "f6ad6459-b5ad-4183-b370-1c1388e47e83",
"name": "Updated Stream Name",
"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://new-webhook.site",
"compression": "gzip",
"max_retry": 5,
"retry_interval_sec": 2,
"post_timeout_sec": 15,
"mtls": true,
"security_token": "qn_xxxxxxxxxxxxxx"
},
"status": "active",
"sequence": 150,
"current_hash": "0x1234567890abcdef...",
"notification_email": null,
"extra_destinations": [],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T14:00:00Z"
}

Response Fields​

FieldTypeDescription
idstringUnique stream identifier (UUID)
namestringStream name
networkstringBlockchain network
datasetstringDataset type
regionstringDeployment region
filter_functionstringBase64-encoded filter function (if configured)
start_rangeintegerStarting block number
end_rangeintegerEnding block number (null for continuous)
dataset_batch_sizeintegerNumber of blocks per batch
elastic_batch_enabledbooleanWhether elastic batching is enabled
fix_block_reorgsintegerReorg detection setting (1 = enabled)
keep_distance_from_tipintegerBlocks to stay behind chain tip
destinationstringDestination type (webhook, s3, azure, postgres)
destination_attributesobjectDestination configuration (varies by type)
statusstringStream status (active or paused)
sequenceintegerLast delivered block from the data range
current_hashstringHash of the current block being processed
notification_emailstringEmail for stream termination alerts
extra_destinationsarrayAdditional destinations (if configured)
created_atstringStream creation timestamp (ISO 8601)
updated_atstringLast update timestamp (ISO 8601)
note

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