Get pipeline execution status
curl --request GET \
--url https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status \
--header 'X-Dune-Api-Key: <x-dune-api-key>'import requests
url = "https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status"
headers = {"X-Dune-Api-Key": "<x-dune-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Dune-Api-Key': '<x-dune-api-key>'}};
fetch('https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Dune-Api-Key: <x-dune-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Dune-Api-Key", "<x-dune-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status")
.header("X-Dune-Api-Key", "<x-dune-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Dune-Api-Key"] = '<x-dune-api-key>'
response = http.request(request)
puts response.read_body{
"error": "<string>",
"node_executions": [
{
"id": 123,
"materialized_view_refresh_status": {
"error": "<string>",
"execution_id": "<string>",
"name": "<string>",
"status": "<string>"
},
"query_execution_status": {
"error": "<string>",
"execution_id": "<string>",
"query_id": 123,
"status": "<string>"
}
}
],
"status": "<string>"
}{
"error": "Bad Request"
}{
"error": "Invalid API Key"
}{
"error": "Object not found"
}{
"error": "Internal error"
}Pipelines
Get Pipeline Execution Status
Retrieves the status of a pipeline execution, including the status of each node in the pipeline.
GET
/
v1
/
pipelines
/
executions
/
{pipeline_execution_id}
/
status
Get pipeline execution status
curl --request GET \
--url https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status \
--header 'X-Dune-Api-Key: <x-dune-api-key>'import requests
url = "https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status"
headers = {"X-Dune-Api-Key": "<x-dune-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Dune-Api-Key': '<x-dune-api-key>'}};
fetch('https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Dune-Api-Key: <x-dune-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Dune-Api-Key", "<x-dune-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status")
.header("X-Dune-Api-Key", "<x-dune-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dune.com/api/v1/pipelines/executions/{pipeline_execution_id}/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Dune-Api-Key"] = '<x-dune-api-key>'
response = http.request(request)
puts response.read_body{
"error": "<string>",
"node_executions": [
{
"id": 123,
"materialized_view_refresh_status": {
"error": "<string>",
"execution_id": "<string>",
"name": "<string>",
"status": "<string>"
},
"query_execution_status": {
"error": "<string>",
"execution_id": "<string>",
"query_id": 123,
"status": "<string>"
}
}
],
"status": "<string>"
}{
"error": "Bad Request"
}{
"error": "Invalid API Key"
}{
"error": "Object not found"
}{
"error": "Internal error"
}Minimum required API key scope:
ReadUnderstanding Pipeline Status
A pipeline execution contains multiple nodes, each representing either:- Query Execution: A query that’s part of the pipeline
- Materialized View Refresh: A materialized view that’s refreshed as part of the pipeline
Pipeline States
The overall pipeline can be in one of the following states:pending: Pipeline execution has been queued but not yet startedexecuting: Pipeline is currently runningcompleted: All nodes in the pipeline have completed successfully
Node Status
Each node in the pipeline includes:node_id: Unique identifier for the nodestatus: Current state of the node executionquery_execution_statusormaterialized_view_refresh_status: Detailed status information
Response Structure
The 200 response includes:status: Overall pipeline execution status (pending, executing, or completed)node_executions: Array of individual node executions with their status and results
Example Usage
# Check pipeline status
curl "https://api.dune.com/api/v1/pipelines/executions/01HZABC123.../status" \
-H "X-Dune-Api-Key: YOUR_API_KEY"
Poll this endpoint periodically to monitor pipeline execution progress. Each node’s status will update as the pipeline progresses through its execution.
Monitoring Pipeline Progress
You can use this endpoint to:- Track which nodes have completed and which are still running
- Identify any nodes that have failed
- Retrieve execution IDs for individual queries to fetch their results
- Monitor overall pipeline health
Once a pipeline execution completes, you can retrieve the results of individual queries using their respective execution IDs from the node status.
Headers
API Key for the service
Path Parameters
Unique identifier of the pipeline execution
Query Parameters
Alternative to using the X-Dune-Api-Key header
Was this page helpful?