Get a published browser-preview package
Requires a studio-owned API account and templates:read. During the compatibility period, print_orders:read is also accepted. Only a published or superseded immutable revision may be resolved; draft editor revisions are unavailable. The package is the output-scoped visual node discovery surface: browser_document contains the published browser nodes and placement data, while input_slots provides authoritative surface/variant/node_id to render slot_key mappings for image nodes. Browser documents and decorative assets are constrained to one published output; assets use same-origin content URLs and never expose storage locators. This visual proof package is not a fulfillment contract and its preview artifacts cannot be submitted for fulfillment.
curl --request GET \
--url https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview', 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.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview",
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://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview"
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://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview")
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{
"assets": [
{
"asset_ref": "<string>",
"content_url": "<string>",
"kind": "public_template_asset"
}
],
"input_slots": [
{
"node_id": "<string>",
"slot_key": "<string>",
"surface_id": "<string>",
"variant_id": "<string>"
}
],
"output": {
"id": "<string>",
"surfaces": [
{
"fulfillment_role": "<string>",
"height_in": 123,
"id": "<string>",
"ordinal": 1,
"variant_id": "<string>",
"width_in": 123
}
]
},
"schema_version": "batchrelay.browser-preview/v1",
"template": {
"browser_document": {},
"browser_document_sha256": "<string>",
"document_sha256": "<string>",
"id": "<string>",
"revision_id": "<string>",
"revision_number": 2
}
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}Authorizations
Batch Relay scoped API key or an anonymous Test Mode session. Scope names document required capabilities. Anonymous sessions are sandbox-only and do not authorize studio, event, billing, or Live Mode operations.
Headers
Untrusted optional analytics hint naming the calling client surface. It never affects authorization, routing, pricing, or behavior.
1 - 100Untrusted optional analytics hint naming the calling client version. It never affects authorization, routing, pricing, or behavior.
1 - 100Untrusted optional analytics hint naming the invocation mode. It never affects authorization, routing, pricing, or behavior.
1 - 100Path Parameters
11Query Parameters
1Response
Published browser-preview package
Published output-scoped visual node and asset package for browser proof. It is derived from an immutable published or superseded revision and never exposes draft editor state or storage locators.
Show child attributes
Show child attributes
Authoritative browser node-to-input bindings for the selected output.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
"batchrelay.browser-preview/v1"Show child attributes
Show child attributes
curl --request GET \
--url https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview', 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.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview",
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://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview"
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://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.batchrelay.com/v1/templates/{template_id}/outputs/{output_id}/browser-preview")
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{
"assets": [
{
"asset_ref": "<string>",
"content_url": "<string>",
"kind": "public_template_asset"
}
],
"input_slots": [
{
"node_id": "<string>",
"slot_key": "<string>",
"surface_id": "<string>",
"variant_id": "<string>"
}
],
"output": {
"id": "<string>",
"surfaces": [
{
"fulfillment_role": "<string>",
"height_in": 123,
"id": "<string>",
"ordinal": 1,
"variant_id": "<string>",
"width_in": 123
}
]
},
"schema_version": "batchrelay.browser-preview/v1",
"template": {
"browser_document": {},
"browser_document_sha256": "<string>",
"document_sha256": "<string>",
"id": "<string>",
"revision_id": "<string>",
"revision_number": 2
}
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}{
"code": "<string>",
"docs_url": "<string>",
"error": "<string>",
"message": "<string>",
"request_id": "<string>"
}