curl --request POST \
--url https://api.extole.io/v5/persons/{person_id}/shareables \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "code",
"content": {
"description": "description",
"image_url": "image_url",
"partner_content_id": "partner_content_id",
"title": "title",
"url": "url"
},
"data": {
"data_key": "data_key"
},
"key": "key",
"label": "label",
"program_url": "program_url"
}
'import requests
url = "https://api.extole.io/v5/persons/{person_id}/shareables"
payload = {
"code": "code",
"content": {
"description": "description",
"image_url": "image_url",
"partner_content_id": "partner_content_id",
"title": "title",
"url": "url"
},
"data": { "data_key": "data_key" },
"key": "key",
"label": "label",
"program_url": "program_url"
}
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({
code: 'code',
content: {
description: 'description',
image_url: 'image_url',
partner_content_id: 'partner_content_id',
title: 'title',
url: 'url'
},
data: {data_key: 'data_key'},
key: 'key',
label: 'label',
program_url: 'program_url'
})
};
fetch('https://api.extole.io/v5/persons/{person_id}/shareables', 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/v5/persons/{person_id}/shareables",
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([
'code' => 'code',
'content' => [
'description' => 'description',
'image_url' => 'image_url',
'partner_content_id' => 'partner_content_id',
'title' => 'title',
'url' => 'url'
],
'data' => [
'data_key' => 'data_key'
],
'key' => 'key',
'label' => 'label',
'program_url' => 'program_url'
]),
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/v5/persons/{person_id}/shareables"
payload := strings.NewReader("{\n \"code\": \"code\",\n \"content\": {\n \"description\": \"description\",\n \"image_url\": \"image_url\",\n \"partner_content_id\": \"partner_content_id\",\n \"title\": \"title\",\n \"url\": \"url\"\n },\n \"data\": {\n \"data_key\": \"data_key\"\n },\n \"key\": \"key\",\n \"label\": \"label\",\n \"program_url\": \"program_url\"\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/v5/persons/{person_id}/shareables")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"code\",\n \"content\": {\n \"description\": \"description\",\n \"image_url\": \"image_url\",\n \"partner_content_id\": \"partner_content_id\",\n \"title\": \"title\",\n \"url\": \"url\"\n },\n \"data\": {\n \"data_key\": \"data_key\"\n },\n \"key\": \"key\",\n \"label\": \"label\",\n \"program_url\": \"program_url\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v5/persons/{person_id}/shareables")
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 \"code\": \"code\",\n \"content\": {\n \"description\": \"description\",\n \"image_url\": \"image_url\",\n \"partner_content_id\": \"partner_content_id\",\n \"title\": \"title\",\n \"url\": \"url\"\n },\n \"data\": {\n \"data_key\": \"data_key\"\n },\n \"key\": \"key\",\n \"label\": \"label\",\n \"program_url\": \"program_url\"\n}"
response = http.request(request)
puts response.read_body{
"code": "<string>",
"content": {
"description": "<string>",
"image_url": "<string>",
"partner_content_id": "<string>",
"title": "<string>",
"url": "<string>"
},
"created_date": "2025-10-24T02:00:00-07:00",
"data": {},
"key": "<string>",
"label": "<string>",
"link": "<string>",
"updated_date": "2025-10-24T02:00:00-07:00"
}Create a person shareable
Creates a new shareable for the specified person. A shareable is a unique referral link or code associated with a campaign that the person can share to invite friends.
curl --request POST \
--url https://api.extole.io/v5/persons/{person_id}/shareables \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "code",
"content": {
"description": "description",
"image_url": "image_url",
"partner_content_id": "partner_content_id",
"title": "title",
"url": "url"
},
"data": {
"data_key": "data_key"
},
"key": "key",
"label": "label",
"program_url": "program_url"
}
'import requests
url = "https://api.extole.io/v5/persons/{person_id}/shareables"
payload = {
"code": "code",
"content": {
"description": "description",
"image_url": "image_url",
"partner_content_id": "partner_content_id",
"title": "title",
"url": "url"
},
"data": { "data_key": "data_key" },
"key": "key",
"label": "label",
"program_url": "program_url"
}
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({
code: 'code',
content: {
description: 'description',
image_url: 'image_url',
partner_content_id: 'partner_content_id',
title: 'title',
url: 'url'
},
data: {data_key: 'data_key'},
key: 'key',
label: 'label',
program_url: 'program_url'
})
};
fetch('https://api.extole.io/v5/persons/{person_id}/shareables', 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/v5/persons/{person_id}/shareables",
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([
'code' => 'code',
'content' => [
'description' => 'description',
'image_url' => 'image_url',
'partner_content_id' => 'partner_content_id',
'title' => 'title',
'url' => 'url'
],
'data' => [
'data_key' => 'data_key'
],
'key' => 'key',
'label' => 'label',
'program_url' => 'program_url'
]),
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/v5/persons/{person_id}/shareables"
payload := strings.NewReader("{\n \"code\": \"code\",\n \"content\": {\n \"description\": \"description\",\n \"image_url\": \"image_url\",\n \"partner_content_id\": \"partner_content_id\",\n \"title\": \"title\",\n \"url\": \"url\"\n },\n \"data\": {\n \"data_key\": \"data_key\"\n },\n \"key\": \"key\",\n \"label\": \"label\",\n \"program_url\": \"program_url\"\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/v5/persons/{person_id}/shareables")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"code\",\n \"content\": {\n \"description\": \"description\",\n \"image_url\": \"image_url\",\n \"partner_content_id\": \"partner_content_id\",\n \"title\": \"title\",\n \"url\": \"url\"\n },\n \"data\": {\n \"data_key\": \"data_key\"\n },\n \"key\": \"key\",\n \"label\": \"label\",\n \"program_url\": \"program_url\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.extole.io/v5/persons/{person_id}/shareables")
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 \"code\": \"code\",\n \"content\": {\n \"description\": \"description\",\n \"image_url\": \"image_url\",\n \"partner_content_id\": \"partner_content_id\",\n \"title\": \"title\",\n \"url\": \"url\"\n },\n \"data\": {\n \"data_key\": \"data_key\"\n },\n \"key\": \"key\",\n \"label\": \"label\",\n \"program_url\": \"program_url\"\n}"
response = http.request(request)
puts response.read_body{
"code": "<string>",
"content": {
"description": "<string>",
"image_url": "<string>",
"partner_content_id": "<string>",
"title": "<string>",
"url": "<string>"
},
"created_date": "2025-10-24T02:00:00-07:00",
"data": {},
"key": "<string>",
"label": "<string>",
"link": "<string>",
"updated_date": "2025-10-24T02:00:00-07:00"
}Authorizations
Path Parameters
The Extole unique profile identifier of this user at Extole.
Body
Response
Successful response
Unique shareable code used to generate this person's referral link.
Rendered content (subject, message, etc.) for this shareable. Absent if no content template is configured.
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"
Named data parameters attached to this shareable.
Show child attributes
Show child attributes
Key identifying the shareable template or program slot.
Human-readable label for this shareable. Absent if no label was set.
Full referral link URL for this shareable.
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"
