curl --request POST \
--url https://api.extole.io/v1/components \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"campaign_id": "campaign_id",
"component_ids": [
"component_id"
],
"component_references": [
{
"component_id": "component_id",
"socket_names": [
"socket_name"
]
}
],
"description": "description",
"display_name": "display_name",
"facets": [
{
"name": "name",
"value": "value"
}
],
"install": {},
"installed_into_socket": "installed_into_socket",
"name": "name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": [
"tag"
],
"type": "ADMIN_ICON",
"values": {
"values_key": {}
}
}
],
"tags": [
"tag"
],
"types": [
"type"
],
"upload_version": "upload_version"
}
'import requests
url = "https://api.extole.io/v1/components"
payload = {
"campaign_id": "campaign_id",
"component_ids": ["component_id"],
"component_references": [
{
"component_id": "component_id",
"socket_names": ["socket_name"]
}
],
"description": "description",
"display_name": "display_name",
"facets": [
{
"name": "name",
"value": "value"
}
],
"install": {},
"installed_into_socket": "installed_into_socket",
"name": "name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": ["tag"],
"type": "ADMIN_ICON",
"values": { "values_key": {} }
}
],
"tags": ["tag"],
"types": ["type"],
"upload_version": "upload_version"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
campaign_id: 'campaign_id',
component_ids: ['component_id'],
component_references: [{component_id: 'component_id', socket_names: ['socket_name']}],
description: 'description',
display_name: 'display_name',
facets: [{name: 'name', value: 'value'}],
install: {},
installed_into_socket: 'installed_into_socket',
name: 'name',
settings: [
{
description: 'description',
display_name: 'display_name',
name: 'name',
priority: '10',
source: 'INHERITED',
tags: ['tag'],
type: 'ADMIN_ICON',
values: {values_key: {}}
}
],
tags: ['tag'],
types: ['type'],
upload_version: 'upload_version'
})
};
fetch('https://api.extole.io/v1/components', 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.extole.io/v1/components",
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([
'campaign_id' => 'campaign_id',
'component_ids' => [
'component_id'
],
'component_references' => [
[
'component_id' => 'component_id',
'socket_names' => [
'socket_name'
]
]
],
'description' => 'description',
'display_name' => 'display_name',
'facets' => [
[
'name' => 'name',
'value' => 'value'
]
],
'install' => [
],
'installed_into_socket' => 'installed_into_socket',
'name' => 'name',
'settings' => [
[
'description' => 'description',
'display_name' => 'display_name',
'name' => 'name',
'priority' => '10',
'source' => 'INHERITED',
'tags' => [
'tag'
],
'type' => 'ADMIN_ICON',
'values' => [
'values_key' => [
]
]
]
],
'tags' => [
'tag'
],
'types' => [
'type'
],
'upload_version' => 'upload_version'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.extole.io/v1/components"
payload := strings.NewReader("{\n \"campaign_id\": \"campaign_id\",\n \"component_ids\": [\n \"component_id\"\n ],\n \"component_references\": [\n {\n \"component_id\": \"component_id\",\n \"socket_names\": [\n \"socket_name\"\n ]\n }\n ],\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"facets\": [\n {\n \"name\": \"name\",\n \"value\": \"value\"\n }\n ],\n \"install\": {},\n \"installed_into_socket\": \"installed_into_socket\",\n \"name\": \"name\",\n \"settings\": [\n {\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"name\": \"name\",\n \"priority\": \"10\",\n \"source\": \"INHERITED\",\n \"tags\": [\n \"tag\"\n ],\n \"type\": \"ADMIN_ICON\",\n \"values\": {\n \"values_key\": {}\n }\n }\n ],\n \"tags\": [\n \"tag\"\n ],\n \"types\": [\n \"type\"\n ],\n \"upload_version\": \"upload_version\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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.extole.io/v1/components")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"campaign_id\": \"campaign_id\",\n \"component_ids\": [\n \"component_id\"\n ],\n \"component_references\": [\n {\n \"component_id\": \"component_id\",\n \"socket_names\": [\n \"socket_name\"\n ]\n }\n ],\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"facets\": [\n {\n \"name\": \"name\",\n \"value\": \"value\"\n }\n ],\n \"install\": {},\n \"installed_into_socket\": \"installed_into_socket\",\n \"name\": \"name\",\n \"settings\": [\n {\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"name\": \"name\",\n \"priority\": \"10\",\n \"source\": \"INHERITED\",\n \"tags\": [\n \"tag\"\n ],\n \"type\": \"ADMIN_ICON\",\n \"values\": {\n \"values_key\": {}\n }\n }\n ],\n \"tags\": [\n \"tag\"\n ],\n \"types\": [\n \"type\"\n ],\n \"upload_version\": \"upload_version\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v1/components")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"campaign_id\": \"campaign_id\",\n \"component_ids\": [\n \"component_id\"\n ],\n \"component_references\": [\n {\n \"component_id\": \"component_id\",\n \"socket_names\": [\n \"socket_name\"\n ]\n }\n ],\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"facets\": [\n {\n \"name\": \"name\",\n \"value\": \"value\"\n }\n ],\n \"install\": {},\n \"installed_into_socket\": \"installed_into_socket\",\n \"name\": \"name\",\n \"settings\": [\n {\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"name\": \"name\",\n \"priority\": \"10\",\n \"source\": \"INHERITED\",\n \"tags\": [\n \"tag\"\n ],\n \"type\": \"ADMIN_ICON\",\n \"values\": {\n \"values_key\": {}\n }\n }\n ],\n \"tags\": [\n \"tag\"\n ],\n \"types\": [\n \"type\"\n ],\n \"upload_version\": \"upload_version\"\n}"
response = http.request(request)
puts response.read_bodyCreate a component
Creates a component. name is the only required field; settings, types and tags may be supplied here or added later with PUT /v1/components/{component_id}.
curl --request POST \
--url https://api.extole.io/v1/components \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"campaign_id": "campaign_id",
"component_ids": [
"component_id"
],
"component_references": [
{
"component_id": "component_id",
"socket_names": [
"socket_name"
]
}
],
"description": "description",
"display_name": "display_name",
"facets": [
{
"name": "name",
"value": "value"
}
],
"install": {},
"installed_into_socket": "installed_into_socket",
"name": "name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": [
"tag"
],
"type": "ADMIN_ICON",
"values": {
"values_key": {}
}
}
],
"tags": [
"tag"
],
"types": [
"type"
],
"upload_version": "upload_version"
}
'import requests
url = "https://api.extole.io/v1/components"
payload = {
"campaign_id": "campaign_id",
"component_ids": ["component_id"],
"component_references": [
{
"component_id": "component_id",
"socket_names": ["socket_name"]
}
],
"description": "description",
"display_name": "display_name",
"facets": [
{
"name": "name",
"value": "value"
}
],
"install": {},
"installed_into_socket": "installed_into_socket",
"name": "name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": ["tag"],
"type": "ADMIN_ICON",
"values": { "values_key": {} }
}
],
"tags": ["tag"],
"types": ["type"],
"upload_version": "upload_version"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
campaign_id: 'campaign_id',
component_ids: ['component_id'],
component_references: [{component_id: 'component_id', socket_names: ['socket_name']}],
description: 'description',
display_name: 'display_name',
facets: [{name: 'name', value: 'value'}],
install: {},
installed_into_socket: 'installed_into_socket',
name: 'name',
settings: [
{
description: 'description',
display_name: 'display_name',
name: 'name',
priority: '10',
source: 'INHERITED',
tags: ['tag'],
type: 'ADMIN_ICON',
values: {values_key: {}}
}
],
tags: ['tag'],
types: ['type'],
upload_version: 'upload_version'
})
};
fetch('https://api.extole.io/v1/components', 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.extole.io/v1/components",
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([
'campaign_id' => 'campaign_id',
'component_ids' => [
'component_id'
],
'component_references' => [
[
'component_id' => 'component_id',
'socket_names' => [
'socket_name'
]
]
],
'description' => 'description',
'display_name' => 'display_name',
'facets' => [
[
'name' => 'name',
'value' => 'value'
]
],
'install' => [
],
'installed_into_socket' => 'installed_into_socket',
'name' => 'name',
'settings' => [
[
'description' => 'description',
'display_name' => 'display_name',
'name' => 'name',
'priority' => '10',
'source' => 'INHERITED',
'tags' => [
'tag'
],
'type' => 'ADMIN_ICON',
'values' => [
'values_key' => [
]
]
]
],
'tags' => [
'tag'
],
'types' => [
'type'
],
'upload_version' => 'upload_version'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.extole.io/v1/components"
payload := strings.NewReader("{\n \"campaign_id\": \"campaign_id\",\n \"component_ids\": [\n \"component_id\"\n ],\n \"component_references\": [\n {\n \"component_id\": \"component_id\",\n \"socket_names\": [\n \"socket_name\"\n ]\n }\n ],\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"facets\": [\n {\n \"name\": \"name\",\n \"value\": \"value\"\n }\n ],\n \"install\": {},\n \"installed_into_socket\": \"installed_into_socket\",\n \"name\": \"name\",\n \"settings\": [\n {\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"name\": \"name\",\n \"priority\": \"10\",\n \"source\": \"INHERITED\",\n \"tags\": [\n \"tag\"\n ],\n \"type\": \"ADMIN_ICON\",\n \"values\": {\n \"values_key\": {}\n }\n }\n ],\n \"tags\": [\n \"tag\"\n ],\n \"types\": [\n \"type\"\n ],\n \"upload_version\": \"upload_version\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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.extole.io/v1/components")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"campaign_id\": \"campaign_id\",\n \"component_ids\": [\n \"component_id\"\n ],\n \"component_references\": [\n {\n \"component_id\": \"component_id\",\n \"socket_names\": [\n \"socket_name\"\n ]\n }\n ],\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"facets\": [\n {\n \"name\": \"name\",\n \"value\": \"value\"\n }\n ],\n \"install\": {},\n \"installed_into_socket\": \"installed_into_socket\",\n \"name\": \"name\",\n \"settings\": [\n {\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"name\": \"name\",\n \"priority\": \"10\",\n \"source\": \"INHERITED\",\n \"tags\": [\n \"tag\"\n ],\n \"type\": \"ADMIN_ICON\",\n \"values\": {\n \"values_key\": {}\n }\n }\n ],\n \"tags\": [\n \"tag\"\n ],\n \"types\": [\n \"type\"\n ],\n \"upload_version\": \"upload_version\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v1/components")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"campaign_id\": \"campaign_id\",\n \"component_ids\": [\n \"component_id\"\n ],\n \"component_references\": [\n {\n \"component_id\": \"component_id\",\n \"socket_names\": [\n \"socket_name\"\n ]\n }\n ],\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"facets\": [\n {\n \"name\": \"name\",\n \"value\": \"value\"\n }\n ],\n \"install\": {},\n \"installed_into_socket\": \"installed_into_socket\",\n \"name\": \"name\",\n \"settings\": [\n {\n \"description\": \"description\",\n \"display_name\": \"display_name\",\n \"name\": \"name\",\n \"priority\": \"10\",\n \"source\": \"INHERITED\",\n \"tags\": [\n \"tag\"\n ],\n \"type\": \"ADMIN_ICON\",\n \"values\": {\n \"values_key\": {}\n }\n }\n ],\n \"tags\": [\n \"tag\"\n ],\n \"types\": [\n \"type\"\n ],\n \"upload_version\": \"upload_version\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Body
Body of a POST /v1/components request.
Show child attributes
Show child attributes
Choose between static or dynamic display name. Buildtime expressions use CampaignBuildtimeContext.
Show child attributes
Show child attributes
Choose between static or dynamic install. Installtime expressions use ComponentInstalltimeContext.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
- Option 14
Show child attributes
Show child attributes
Response
Successful response
Stored component definition. Field display_name is unevaluated and appears in buildtime-evaluatable form.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
RFC 3339 or RFC 9557 date-time with a numeric UTC offset and an optional IANA time-zone suffix in square brackets. Precision up to milliseconds.
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$"2025-10-24T02:00:00-07:00"
The display name as configured: a literal value, or an expression (type:string) when defined dynamically. Buildtime expressions use CampaignBuildtimeContext.
Show child attributes
Show child attributes
The install as configured: a literal value, or an expression (type:string) when defined dynamically. Installtime expressions use ComponentInstalltimeContext.
Show child attributes
Show child attributes
CLIENT, EXTOLE, EXTOLE_BETA RFC 3339 or RFC 9557 date-time with a numeric UTC offset and an optional IANA time-zone suffix in square brackets. Precision up to milliseconds.
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$"2025-10-24T02:00:00-07:00"
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
- Option 14
Show child attributes
Show child attributes
Was this page helpful?
