curl --request GET \
--url https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}', 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-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}",
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-api-key: <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-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "f0000040-0000-4000-8000-000000000040",
"language": "es",
"name": "order_shipped_promo",
"variables": [
{
"callerMustSupply": false,
"key": "first_name",
"label": "Contact first name"
},
{
"callerMustSupply": false,
"key": "order_code",
"label": "Order code"
},
{
"callerMustSupply": false,
"key": "shipment_id",
"label": "Shipment ID"
},
{
"callerMustSupply": true,
"key": "promo_code",
"label": "Promo code"
}
]
}{
"title": "Forbidden",
"status": 403,
"code": "BRIDGE_CORE_0301"
}{
"title": "Provider Template Not Found",
"status": 404,
"code": "BRIDGE_TEMPLATE_0001"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"title": "Too Many Requests",
"status": 429,
"code": "BRIDGE_RATE_LIMIT_0001"
}Discover a template's agnostic variable inventory
Return a template’s variables — agnostic key/label/callerMustSupply, never a Meta slot address or index.
templateId accepts either the template’s id or its name — the send contract
(POST .../leadscout/outbound) identifies a template by name; this discovery endpoint
also accepts id, so a caller who only has one of the two can still look it up.
A variable with callerMustSupply: true has no declared source — the caller must include
its key in parameters when sending, or the send fails with a 422 naming that same key.
A variable with callerMustSupply: false is either resolved by Bridge on its own (e.g. the
recipient’s first name) or already has a value the caller may optionally override.
Error codes:
- BRIDGE_CORE_0301: workspace in the path does not match the caller’s own workspace (403)
- BRIDGE_TEMPLATE_0001: no PROVIDER_TEMPLATE found for this workspace and identifier — covers an unknown id/name, a template that belongs to another workspace, and a template that is not a PROVIDER_TEMPLATE, identically (404); this endpoint never confirms the existence of a template outside the caller’s own workspace
curl --request GET \
--url https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}', 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-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}",
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-api-key: <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-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-connect-us.bridge.new/bridge/api/v1/workspaces/{workspaceId}/templates/{templateId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "f0000040-0000-4000-8000-000000000040",
"language": "es",
"name": "order_shipped_promo",
"variables": [
{
"callerMustSupply": false,
"key": "first_name",
"label": "Contact first name"
},
{
"callerMustSupply": false,
"key": "order_code",
"label": "Order code"
},
{
"callerMustSupply": false,
"key": "shipment_id",
"label": "Shipment ID"
},
{
"callerMustSupply": true,
"key": "promo_code",
"label": "Promo code"
}
]
}{
"title": "Forbidden",
"status": 403,
"code": "BRIDGE_CORE_0301"
}{
"title": "Provider Template Not Found",
"status": 404,
"code": "BRIDGE_TEMPLATE_0001"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"title": "Too Many Requests",
"status": 429,
"code": "BRIDGE_RATE_LIMIT_0001"
}Authorizations
Copy the API key as provided by the Bridge Console.
Path Parameters
Unique identifier of the workspace (UUID v4).
"b6cf1c4a-2b1e-4e63-8f3e-0f9d1a2a1234"
Template id or name — either identifies the same template.
"order_shipped_promo"
"f0000040-0000-4000-8000-000000000040"
Response
Successful Response
Agnostic inventory of a template's variables, for a caller that must send it without knowing Meta's model.
Unique identifier of the template.
"f0000040-0000-4000-8000-000000000040"
Name of the template, used to identify it when sending.
"order_shipped_promo"
Language of the resolved pivot (the template's default language).
"es"
Diagnostic-only declaration-vs-snapshot mismatch. Never blocks a send.
Show child attributes
Show child attributes
Agnostic inventory of this template's variables.
Show child attributes
Show child attributes
Was this page helpful?

