curl --request POST \
--url https://api.sidenet.ai/v1/prompt-blocks/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"content": "You are a support agent for {{company}}. Answer in {{locale || 'English'}}.",
"rules": {
"operator": "AND",
"conditions": [
{
"variable": "plan",
"operator": "equals",
"value": "enterprise"
}
]
},
"variables": {
"company": "Acme",
"plan": "enterprise"
}
}
EOFimport requests
url = "https://api.sidenet.ai/v1/prompt-blocks/preview"
payload = {
"content": "You are a support agent for {{company}}. Answer in {{locale || 'English'}}.",
"rules": {
"operator": "AND",
"conditions": [
{
"variable": "plan",
"operator": "equals",
"value": "enterprise"
}
]
},
"variables": {
"company": "Acme",
"plan": "enterprise"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
content: 'You are a support agent for {{company}}. Answer in {{locale || \'English\'}}.',
rules: {
operator: 'AND',
conditions: [{variable: 'plan', operator: 'equals', value: 'enterprise'}]
},
variables: {company: 'Acme', plan: 'enterprise'}
})
};
fetch('https://api.sidenet.ai/v1/prompt-blocks/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.sidenet.ai/v1/prompt-blocks/preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'content' => 'You are a support agent for {{company}}. Answer in {{locale || \'English\'}}.',
'rules' => [
'operator' => 'AND',
'conditions' => [
[
'variable' => 'plan',
'operator' => 'equals',
'value' => 'enterprise'
]
]
],
'variables' => [
'company' => 'Acme',
'plan' => 'enterprise'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sidenet.ai/v1/prompt-blocks/preview"
payload := strings.NewReader("{\n \"content\": \"You are a support agent for {{company}}. Answer in {{locale || 'English'}}.\",\n \"rules\": {\n \"operator\": \"AND\",\n \"conditions\": [\n {\n \"variable\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"enterprise\"\n }\n ]\n },\n \"variables\": {\n \"company\": \"Acme\",\n \"plan\": \"enterprise\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sidenet.ai/v1/prompt-blocks/preview")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"You are a support agent for {{company}}. Answer in {{locale || 'English'}}.\",\n \"rules\": {\n \"operator\": \"AND\",\n \"conditions\": [\n {\n \"variable\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"enterprise\"\n }\n ]\n },\n \"variables\": {\n \"company\": \"Acme\",\n \"plan\": \"enterprise\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/prompt-blocks/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"You are a support agent for {{company}}. Answer in {{locale || 'English'}}.\",\n \"rules\": {\n \"operator\": \"AND\",\n \"conditions\": [\n {\n \"variable\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"enterprise\"\n }\n ]\n },\n \"variables\": {\n \"company\": \"Acme\",\n \"plan\": \"enterprise\"\n }\n}"
response = http.request(request)
puts response.read_body{
"rendered": "You are a support agent for Acme. Answer in English.",
"included": true,
"variables": [
"company",
"locale"
],
"missingVariables": [
"locale"
],
"droppedVariables": []
}Preview block content
Renders content with the supplied variables and evaluates rules against them, so the editor can show the result while typing. Returns the rendered text, the variable names found in the template, which of them had no value, whether the display condition includes the block, and any variables dropped by the size/type limits.
curl --request POST \
--url https://api.sidenet.ai/v1/prompt-blocks/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"content": "You are a support agent for {{company}}. Answer in {{locale || 'English'}}.",
"rules": {
"operator": "AND",
"conditions": [
{
"variable": "plan",
"operator": "equals",
"value": "enterprise"
}
]
},
"variables": {
"company": "Acme",
"plan": "enterprise"
}
}
EOFimport requests
url = "https://api.sidenet.ai/v1/prompt-blocks/preview"
payload = {
"content": "You are a support agent for {{company}}. Answer in {{locale || 'English'}}.",
"rules": {
"operator": "AND",
"conditions": [
{
"variable": "plan",
"operator": "equals",
"value": "enterprise"
}
]
},
"variables": {
"company": "Acme",
"plan": "enterprise"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
content: 'You are a support agent for {{company}}. Answer in {{locale || \'English\'}}.',
rules: {
operator: 'AND',
conditions: [{variable: 'plan', operator: 'equals', value: 'enterprise'}]
},
variables: {company: 'Acme', plan: 'enterprise'}
})
};
fetch('https://api.sidenet.ai/v1/prompt-blocks/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.sidenet.ai/v1/prompt-blocks/preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'content' => 'You are a support agent for {{company}}. Answer in {{locale || \'English\'}}.',
'rules' => [
'operator' => 'AND',
'conditions' => [
[
'variable' => 'plan',
'operator' => 'equals',
'value' => 'enterprise'
]
]
],
'variables' => [
'company' => 'Acme',
'plan' => 'enterprise'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sidenet.ai/v1/prompt-blocks/preview"
payload := strings.NewReader("{\n \"content\": \"You are a support agent for {{company}}. Answer in {{locale || 'English'}}.\",\n \"rules\": {\n \"operator\": \"AND\",\n \"conditions\": [\n {\n \"variable\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"enterprise\"\n }\n ]\n },\n \"variables\": {\n \"company\": \"Acme\",\n \"plan\": \"enterprise\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sidenet.ai/v1/prompt-blocks/preview")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"You are a support agent for {{company}}. Answer in {{locale || 'English'}}.\",\n \"rules\": {\n \"operator\": \"AND\",\n \"conditions\": [\n {\n \"variable\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"enterprise\"\n }\n ]\n },\n \"variables\": {\n \"company\": \"Acme\",\n \"plan\": \"enterprise\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/prompt-blocks/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"You are a support agent for {{company}}. Answer in {{locale || 'English'}}.\",\n \"rules\": {\n \"operator\": \"AND\",\n \"conditions\": [\n {\n \"variable\": \"plan\",\n \"operator\": \"equals\",\n \"value\": \"enterprise\"\n }\n ]\n },\n \"variables\": {\n \"company\": \"Acme\",\n \"plan\": \"enterprise\"\n }\n}"
response = http.request(request)
puts response.read_body{
"rendered": "You are a support agent for Acme. Answer in English.",
"included": true,
"variables": [
"company",
"locale"
],
"missingVariables": [
"locale"
],
"droppedVariables": []
}Authorizations
Organization API key, generated in studio.sidenet.ai. Backend only — never in a browser.
Body
"You are a support agent for {{company}}. Answer in {{locale || 'English'}}."
Display condition to evaluate against variables. Null is always-on.
{
"operator": "AND",
"conditions": [
{
"variable": "plan",
"operator": "equals",
"value": "enterprise"
}
]
}
{ "company": "Acme", "plan": "enterprise" }
Response
The rendered text, and what the variables did
The content with variables substituted.
Whether rules evaluated true against these variables — i.e. whether this block would appear in the prompt at all.
Every {{variable}} the content references.
Those that had no value and rendered as their default (or empty).
Variables you sent that the size/type limits rejected.