curl --request POST \
--url https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"component_display_name": "component_display_name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": [
"tag"
],
"type": "ADMIN_ICON",
"values": {
"values_key": {}
}
}
],
"source_component_id": "source_component_id"
}
'import requests
url = "https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component"
payload = {
"component_display_name": "component_display_name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": ["tag"],
"type": "ADMIN_ICON",
"values": { "values_key": {} }
}
],
"source_component_id": "source_component_id"
}
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({
component_display_name: 'component_display_name',
settings: [
{
description: 'description',
display_name: 'display_name',
name: 'name',
priority: '10',
source: 'INHERITED',
tags: ['tag'],
type: 'ADMIN_ICON',
values: {values_key: {}}
}
],
source_component_id: 'source_component_id'
})
};
fetch('https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component', 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/{component_id}/settings/{setting_name}/add-component",
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([
'component_display_name' => 'component_display_name',
'settings' => [
[
'description' => 'description',
'display_name' => 'display_name',
'name' => 'name',
'priority' => '10',
'source' => 'INHERITED',
'tags' => [
'tag'
],
'type' => 'ADMIN_ICON',
'values' => [
'values_key' => [
]
]
]
],
'source_component_id' => 'source_component_id'
]),
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/{component_id}/settings/{setting_name}/add-component"
payload := strings.NewReader("{\n \"component_display_name\": \"component_display_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 \"source_component_id\": \"source_component_id\"\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/{component_id}/settings/{setting_name}/add-component")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"component_display_name\": \"component_display_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 \"source_component_id\": \"source_component_id\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component")
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 \"component_display_name\": \"component_display_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 \"source_component_id\": \"source_component_id\"\n}"
response = http.request(request)
puts response.read_body{
"assets": [
{
"description": "<string>",
"filename": "<string>",
"id": "<string>",
"name": "<string>",
"tags": [
"<string>"
]
}
],
"component_ids": [
"<string>"
],
"component_references": [
{
"component_id": "<string>",
"socket_names": [
"<string>"
]
}
],
"created_date": "2025-10-24T02:00:00-07:00",
"description": "<string>",
"display_name": "<string>",
"facets": [
{
"name": "<string>",
"value": "<string>"
}
],
"id": "<string>",
"install": {},
"installed_into_socket": "<string>",
"name": "<string>",
"origin": {
"client_id": "<string>",
"component_id": "<string>",
"component_version": 123
},
"tags": [
"<string>"
],
"type": "<string>",
"types": [
"<string>"
],
"updated_date": "2025-10-24T02:00:00-07:00",
"upload_version": "<string>",
"variables": [
{
"description": "<string>",
"display_name": "<string>",
"name": "<string>",
"priority": "10",
"tags": [
"<string>"
],
"type": "ADMIN_ICON",
"source": "INHERITED",
"values": {
"default": {},
"en": {}
}
}
],
"version": 123
}Add component to setting
Creates a distinct duplicate of the component identified by source_component_id and installs it into the specified SOCKET or MULTI_SOCKET setting. The source component is not referenced or modified. Optional settings entries override settings on the duplicate.
curl --request POST \
--url https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"component_display_name": "component_display_name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": [
"tag"
],
"type": "ADMIN_ICON",
"values": {
"values_key": {}
}
}
],
"source_component_id": "source_component_id"
}
'import requests
url = "https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component"
payload = {
"component_display_name": "component_display_name",
"settings": [
{
"description": "description",
"display_name": "display_name",
"name": "name",
"priority": "10",
"source": "INHERITED",
"tags": ["tag"],
"type": "ADMIN_ICON",
"values": { "values_key": {} }
}
],
"source_component_id": "source_component_id"
}
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({
component_display_name: 'component_display_name',
settings: [
{
description: 'description',
display_name: 'display_name',
name: 'name',
priority: '10',
source: 'INHERITED',
tags: ['tag'],
type: 'ADMIN_ICON',
values: {values_key: {}}
}
],
source_component_id: 'source_component_id'
})
};
fetch('https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component', 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/{component_id}/settings/{setting_name}/add-component",
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([
'component_display_name' => 'component_display_name',
'settings' => [
[
'description' => 'description',
'display_name' => 'display_name',
'name' => 'name',
'priority' => '10',
'source' => 'INHERITED',
'tags' => [
'tag'
],
'type' => 'ADMIN_ICON',
'values' => [
'values_key' => [
]
]
]
],
'source_component_id' => 'source_component_id'
]),
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/{component_id}/settings/{setting_name}/add-component"
payload := strings.NewReader("{\n \"component_display_name\": \"component_display_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 \"source_component_id\": \"source_component_id\"\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/{component_id}/settings/{setting_name}/add-component")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"component_display_name\": \"component_display_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 \"source_component_id\": \"source_component_id\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v1/components/{component_id}/settings/{setting_name}/add-component")
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 \"component_display_name\": \"component_display_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 \"source_component_id\": \"source_component_id\"\n}"
response = http.request(request)
puts response.read_body{
"assets": [
{
"description": "<string>",
"filename": "<string>",
"id": "<string>",
"name": "<string>",
"tags": [
"<string>"
]
}
],
"component_ids": [
"<string>"
],
"component_references": [
{
"component_id": "<string>",
"socket_names": [
"<string>"
]
}
],
"created_date": "2025-10-24T02:00:00-07:00",
"description": "<string>",
"display_name": "<string>",
"facets": [
{
"name": "<string>",
"value": "<string>"
}
],
"id": "<string>",
"install": {},
"installed_into_socket": "<string>",
"name": "<string>",
"origin": {
"client_id": "<string>",
"component_id": "<string>",
"component_version": 123
},
"tags": [
"<string>"
],
"type": "<string>",
"types": [
"<string>"
],
"updated_date": "2025-10-24T02:00:00-07:00",
"upload_version": "<string>",
"variables": [
{
"description": "<string>",
"display_name": "<string>",
"name": "<string>",
"priority": "10",
"tags": [
"<string>"
],
"type": "ADMIN_ICON",
"source": "INHERITED",
"values": {
"default": {},
"en": {}
}
}
],
"version": 123
}Authorizations
Path Parameters
Name of the target setting. The setting must have type SOCKET or MULTI_SOCKET.
Body
Identifier of the source component to duplicate. The endpoint installs a distinct duplicate and does not reference or modify the source component.
Display name to assign to the duplicated component. Buildtime expressions use CampaignBuildtimeContext.
Overrides to apply to settings on the duplicated component. Each entry identifies an existing source setting by name and supplies values to apply to the duplicate.
- 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 campaign 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
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
