Overview
Retrieves the full configuration and current state of a single stream by its unique ID. Use this endpoint to inspect a specific stream's settings including its network, dataset, filter function, block range, destination attributes, reorg handling configuration, and current processing position.
Key use cases:
- Monitor a stream's progress during backfills
- Debug delivery issues by checking configuration
- Verify configuration changes after an update
- Check the current sequence number and processing status
Endpoint
Send a GET request to retrieve a specific stream by its ID.
GET https://api.quicknode.com/streams/rest/v1/streams/{id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | The unique identifier (UUID) of the stream to retrieve |
Example Request
- cURL
- CLI
- JavaScript
Python
- Ruby
- SDK (JS)
SDK (Python)
- SDK (Ruby)
- SDK (Rust)
curl -X GET "https://api.quicknode.com/streams/rest/v1/streams/f6ad6459-b5ad-4183-b370-1c1388e47e83" \
-H "accept: application/json" \
-H "x-api-key: YOUR_API_KEY"
qn stream show f6ad6459-b5ad-4183-b370-1c1388e47e83 -o json
const headers = new Headers()
headers.append('accept', 'application/json')
headers.append('x-api-key', 'YOUR_API_KEY')
fetch('https://api.quicknode.com/streams/rest/v1/streams/f6ad6459-b5ad-4183-b370-1c1388e47e83', {
method: 'GET',
headers: headers
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error))
import requests
url = "https://api.quicknode.com/streams/rest/v1/streams/f6ad6459-b5ad-4183-b370-1c1388e47e83"
headers = {
"accept": "application/json",
"x-api-key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
require "uri"
require "net/http"
url = URI("https://api.quicknode.com/streams/rest/v1/streams/f6ad6459-b5ad-4183-b370-1c1388e47e83")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["accept"] = "application/json"
request["x-api-key"] = "YOUR_API_KEY"
response = https.request(request)
puts response.body
import { QuicknodeSdk } from "@quicknode/sdk"
const qn = new QuicknodeSdk({ apiKey: "YOUR_API_KEY" })
const stream = await qn.streams.getStream("f6ad6459-b5ad-4183-b370-1c1388e47e83")
console.log(stream.id, stream.name, stream.status)
import asyncio
from quicknode_sdk import QuicknodeSdk, SdkFullConfig
async def main():
qn = QuicknodeSdk(SdkFullConfig(api_key="YOUR_API_KEY"))
stream = await qn.streams.get_stream("f6ad6459-b5ad-4183-b370-1c1388e47e83")
print(stream.id, stream.name, stream.status)
asyncio.run(main())
require "quicknode_sdk"
qn = QuicknodeSdk::SDK.from_config(api_key: "YOUR_API_KEY")
stream = qn.streams.get_stream(id: "f6ad6459-b5ad-4183-b370-1c1388e47e83")
puts "#{stream["id"]} #{stream["name"]} #{stream["status"]}"
use quicknode_sdk::{QuicknodeSdk, SdkFullConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let qn = QuicknodeSdk::new(&SdkFullConfig::builder().api_key("YOUR_API_KEY").build())?;
let stream = qn.streams.get_stream("f6ad6459-b5ad-4183-b370-1c1388e47e83").await?;
println!("{} {} {}", stream.id, stream.name, stream.status);
Ok(())
}
Response
On success, the API returns the stream object with all configuration and status information.
{
"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,
"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-15T12:45:00Z"
}
Response Fields
| Field | Type | Description |
|---|---|---|
| id | string | Unique stream identifier (UUID) |
| name | string | Stream name |
| network | string | Blockchain network |
| dataset | string | Dataset type |
| region | string | Deployment region |
| filter_function | string | Base64-encoded filter function (if configured) |
| start_range | integer | Starting block number |
| end_range | integer | Ending block number (null for continuous) |
| dataset_batch_size | integer | Number of blocks per batch |
| elastic_batch_enabled | boolean | Whether elastic batching is enabled |
| fix_block_reorgs | integer | Reorg detection setting (1 = enabled) |
| keep_distance_from_tip | integer | Blocks to stay behind chain tip |
| destination | string | Destination type (webhook, s3, azure, postgres) |
| destination_attributes | object | Destination configuration (varies by type) |
| status | string | Stream status (active or paused) |
| sequence | integer | Last delivered block from the data range |
| current_hash | string | Hash of the current block being processed |
| notification_email | string | Email for stream termination alerts |
| extra_destinations | array | Additional destinations (if configured) |
| created_at | string | Stream creation timestamp (ISO 8601) |
| updated_at | string | Last update timestamp (ISO 8601) |
Response Destination Attributes
The destination_attributes object in the response varies based on the destination type. Select a tab below to view the fields returned for each destination.
- Webhook
- S3
- Azure
- PostgreSQL
| Field | Type | Description |
|---|---|---|
| url | string | Webhook endpoint URL |
| compression | string | Compression type (none or gzip) |
| headers | object | Custom headers (if configured) |
| max_retry | integer | Maximum retry attempts |
| retry_interval_sec | integer | Seconds between retries |
| post_timeout_sec | integer | Request timeout in seconds |
| security_token | string | Auto-generated token for validating webhook authenticity |
| Field | Type | Description |
|---|---|---|
| endpoint | string | S3 endpoint |
| bucket | string | Bucket name |
| access_key | string | S3 access key |
| object_prefix | string | Prefix for object keys |
| file_compression_type | string | Compression type (none or gzip) |
| file_type | string | File format (.json) |
| max_retry | integer | Maximum retry attempts |
| retry_interval_sec | integer | Seconds between retries |
| use_ssl | boolean | SSL enabled status |
| Field | Type | Description |
|---|---|---|
| storage_account | string | Azure storage account name |
| container | string | Container name |
| blob_prefix | string | Prefix for blob names |
| file_compression_type | string | Compression type (none or gzip) |
| file_type | string | File format (.json) |
| max_retry | integer | Maximum retry attempts |
| retry_interval_sec | integer | Seconds between retries |
| Field | Type | Description |
|---|---|---|
| host | string | Database host |
| port | integer | Database port |
| username | string | Database username |
| table_name | string | Target table name |
| sslmode | string | SSL mode (require or disable) |
| max_retry | integer | Maximum retry attempts |
| retry_interval_sec | integer | Seconds between retries |
Sensitive fields like secret_key (S3), sas_token (Azure), and password (PostgreSQL) are not returned in the response for security reasons.