curl --request POST \
--url https://api.pubrio.com/channels/templates/create \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"channel_template_name": "<string>",
"channel_node_id": "<string>",
"parameters": {},
"version_name": "<string>"
}
'import requests
url = "https://api.pubrio.com/channels/templates/create"
payload = {
"channel_template_name": "<string>",
"channel_node_id": "<string>",
"parameters": {},
"version_name": "<string>"
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
channel_template_name: '<string>',
channel_node_id: '<string>',
parameters: {},
version_name: '<string>'
})
};
fetch('https://api.pubrio.com/channels/templates/create', 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.pubrio.com/channels/templates/create",
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([
'channel_template_name' => '<string>',
'channel_node_id' => '<string>',
'parameters' => [
],
'version_name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pubrio.com/channels/templates/create"
payload := strings.NewReader("{\n \"channel_template_name\": \"<string>\",\n \"channel_node_id\": \"<string>\",\n \"parameters\": {},\n \"version_name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
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.pubrio.com/channels/templates/create")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"channel_template_name\": \"<string>\",\n \"channel_node_id\": \"<string>\",\n \"parameters\": {},\n \"version_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/channels/templates/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"channel_template_name\": \"<string>\",\n \"channel_node_id\": \"<string>\",\n \"parameters\": {},\n \"version_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"channel_template_id": 248,
"channel_template_identifier": "4c717a78-26e9-49eb-ab2e-e1ce0755674a",
"created_at": "2025-08-07T17:22:11.344Z",
"version_number": 1,
"is_default": true,
"name": "Email Template",
"channel_node_id": "93873c33-2635-4537-928c-6a4f3564164c",
"parameters": {
"content": "<div>hello world</div>",
"subject": "hello world"
},
"version_name": "Default"
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Crear plantilla de canal
Crea una nueva plantilla de canal de outreach con los parámetros especificados.
curl --request POST \
--url https://api.pubrio.com/channels/templates/create \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"channel_template_name": "<string>",
"channel_node_id": "<string>",
"parameters": {},
"version_name": "<string>"
}
'import requests
url = "https://api.pubrio.com/channels/templates/create"
payload = {
"channel_template_name": "<string>",
"channel_node_id": "<string>",
"parameters": {},
"version_name": "<string>"
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
channel_template_name: '<string>',
channel_node_id: '<string>',
parameters: {},
version_name: '<string>'
})
};
fetch('https://api.pubrio.com/channels/templates/create', 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.pubrio.com/channels/templates/create",
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([
'channel_template_name' => '<string>',
'channel_node_id' => '<string>',
'parameters' => [
],
'version_name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pubrio.com/channels/templates/create"
payload := strings.NewReader("{\n \"channel_template_name\": \"<string>\",\n \"channel_node_id\": \"<string>\",\n \"parameters\": {},\n \"version_name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
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.pubrio.com/channels/templates/create")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"channel_template_name\": \"<string>\",\n \"channel_node_id\": \"<string>\",\n \"parameters\": {},\n \"version_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/channels/templates/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"channel_template_name\": \"<string>\",\n \"channel_node_id\": \"<string>\",\n \"parameters\": {},\n \"version_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"channel_template_id": 248,
"channel_template_identifier": "4c717a78-26e9-49eb-ab2e-e1ce0755674a",
"created_at": "2025-08-07T17:22:11.344Z",
"version_number": 1,
"is_default": true,
"name": "Email Template",
"channel_node_id": "93873c33-2635-4537-928c-6a4f3564164c",
"parameters": {
"content": "<div>hello world</div>",
"subject": "hello world"
},
"version_name": "Default"
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Autorizaciones
Un token de API único que representa las acciones que realizas a través de la API, junto con los permisos y operaciones correspondientes. Puedes crearlo en la sección Configuración.
Cuerpo
Nombre para mostrar de la plantilla.
El nodo de canal al que apunta esta plantilla, como UUID. Resuélvelo desde Tipos de plantilla de canal — por ejemplo, el nodo send_email bajo el tipo de canal email. El nodo también define qué claves de parameters son válidas.
El cuerpo de la plantilla. Las claves válidas las define el channel_node_id elegido: send_email toma subject, content y attachments; el chat de LinkedIn toma message y attachments; las invitaciones de LinkedIn toman message; Twilio toma message, from y method.
Etiqueta de esta versión, por ejemplo v1. Cada versión es un registro independiente con su propio channel_template_id.
Respuesta
Respuesta exitosa que contiene la lista de detalles de plantillas de canal.
La información de la respuesta depende del endpoint específico.

