Get Blueprint run results
curl --request GET \
--url https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results', 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://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"dataDeliveryMethod": "direct",
"results": {
"customers": {
"totalRecords": 1,
"records": [
{
"data": {
"external_id": "1042",
"name": "Acme Corp"
},
"errors": [],
"isValid": true
}
]
}
},
"executionMetadata": {
"runKey": "550e8400-e29b-41d4-a716-446655440000",
"metadata": {
"source_system": "acme-prod"
},
"timings": {
"executionBeganAt": "2026-07-31T17:10:05.000Z",
"executionCompletedAt": "2026-07-31T17:12:00.000Z"
}
}
}
Blueprint Runs
Get Blueprint run results
Retrieve output records or temporary download URLs from a completed Blueprint run.
GET
/
blueprint-runs
/
{runId}
/
results
Get Blueprint run results
curl --request GET \
--url https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results', 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://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.rubiehq.com/api/v1/blueprint-runs/{runId}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"dataDeliveryMethod": "direct",
"results": {
"customers": {
"totalRecords": 1,
"records": [
{
"data": {
"external_id": "1042",
"name": "Acme Corp"
},
"errors": [],
"isValid": true
}
]
}
},
"executionMetadata": {
"runKey": "550e8400-e29b-41d4-a716-446655440000",
"metadata": {
"source_system": "acme-prod"
},
"timings": {
"executionBeganAt": "2026-07-31T17:10:05.000Z",
"executionCompletedAt": "2026-07-31T17:12:00.000Z"
}
}
}
Returns outputs from a completed Blueprint run using the same result contract as
Blueprint webhooks.
The default is
curl -s "$RUBIE_API_URL/api/v1/blueprint-runs/run_.../results?deliveryMethod=direct" \
-H "Authorization: Bearer $RUBIE_API_KEY"
runId accepts either the opaque run_... id or the UUID run_key from the
trigger response.
Delivery methods
deliveryMethod | Response results values |
|---|---|
direct | Objects containing totalRecords and inline records |
presigned_url | Temporary URLs for Brotli-compressed JSON files |
presigned_url. A direct request automatically switches to
presigned URLs when the estimated payload is 5 MB or larger. Check the returned
dataDeliveryMethod before reading results. Presigned URLs expire after two
hours.
Results are keyed by Blueprint output node reference key. If one node has
multiple output handles, the key includes both values, for example
node_ref.handle_key.
The endpoint returns 409 until the run is complete and 400 if its retained
output data has been purged. See Triggering Blueprint runs
for the complete trigger, poll, and fetch flow.Authorizations
Your Rubie API key as a bearer token.
Path Parameters
Opaque run_... id from the trigger response (UUID run_key also accepted).
Query Parameters
Requested delivery method. Defaults to presigned_url.
Available options:
direct, presigned_url Response
Completed Blueprint outputs
The actual delivery method. Large direct responses automatically use presigned URLs.
Available options:
direct, presigned_url Output values keyed by node reference key, or node_ref.handle_key for multi-output nodes.
Show child attributes
Show child attributes
Show child attributes
Show child attributes