Create Audience
curl --request POST \
--url https://api.example.com/api/public/tools/create_audience \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"mode": "manual",
"flowPlanId": null,
"aiContext": null,
"contacts": null,
"hubspotListId": null,
"salesNavigator": null
}
'import requests
url = "https://api.example.com/api/public/tools/create_audience"
payload = {
"name": "<string>",
"mode": "manual",
"flowPlanId": None,
"aiContext": None,
"contacts": None,
"hubspotListId": None,
"salesNavigator": None
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
mode: 'manual',
flowPlanId: null,
aiContext: null,
contacts: null,
hubspotListId: null,
salesNavigator: null
})
};
fetch('https://api.example.com/api/public/tools/create_audience', 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.example.com/api/public/tools/create_audience",
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([
'name' => '<string>',
'mode' => 'manual',
'flowPlanId' => null,
'aiContext' => null,
'contacts' => null,
'hubspotListId' => null,
'salesNavigator' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.example.com/api/public/tools/create_audience"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"mode\": \"manual\",\n \"flowPlanId\": null,\n \"aiContext\": null,\n \"contacts\": null,\n \"hubspotListId\": null,\n \"salesNavigator\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.example.com/api/public/tools/create_audience")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"mode\": \"manual\",\n \"flowPlanId\": null,\n \"aiContext\": null,\n \"contacts\": null,\n \"hubspotListId\": null,\n \"salesNavigator\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/create_audience")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"mode\": \"manual\",\n \"flowPlanId\": null,\n \"aiContext\": null,\n \"contacts\": null,\n \"hubspotListId\": null,\n \"salesNavigator\": null\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}FirstTouch tools
Create Audience
Call get_guide with topic=audience_management before creating or linking an audience.
Usage notes
- Create an audience/source for Flow Plan creation from manual/external contacts, a HubSpot list, or Sales Navigator.
- Can link to an existing flowPlanId during creation.
POST
/
api
/
public
/
tools
/
create_audience
Create Audience
curl --request POST \
--url https://api.example.com/api/public/tools/create_audience \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"mode": "manual",
"flowPlanId": null,
"aiContext": null,
"contacts": null,
"hubspotListId": null,
"salesNavigator": null
}
'import requests
url = "https://api.example.com/api/public/tools/create_audience"
payload = {
"name": "<string>",
"mode": "manual",
"flowPlanId": None,
"aiContext": None,
"contacts": None,
"hubspotListId": None,
"salesNavigator": None
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
mode: 'manual',
flowPlanId: null,
aiContext: null,
contacts: null,
hubspotListId: null,
salesNavigator: null
})
};
fetch('https://api.example.com/api/public/tools/create_audience', 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.example.com/api/public/tools/create_audience",
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([
'name' => '<string>',
'mode' => 'manual',
'flowPlanId' => null,
'aiContext' => null,
'contacts' => null,
'hubspotListId' => null,
'salesNavigator' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.example.com/api/public/tools/create_audience"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"mode\": \"manual\",\n \"flowPlanId\": null,\n \"aiContext\": null,\n \"contacts\": null,\n \"hubspotListId\": null,\n \"salesNavigator\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.example.com/api/public/tools/create_audience")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"mode\": \"manual\",\n \"flowPlanId\": null,\n \"aiContext\": null,\n \"contacts\": null,\n \"hubspotListId\": null,\n \"salesNavigator\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/create_audience")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"mode\": \"manual\",\n \"flowPlanId\": null,\n \"aiContext\": null,\n \"contacts\": null,\n \"hubspotListId\": null,\n \"salesNavigator\": null\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}Authorizations
Body
application/json
Audience name.
Audience source mode: manual, hubspot_list, or sales_navigator. Defaults to manual.
Available options:
manual, hubspot_list, sales_navigator Optional existing flow plan id to link during audience creation. Use the exact flowPlanId returned by create_flow_plan, list_flow_plans, or get_flow_workspace.
Optional AI context to store on the audience.
Optional external contacts to add for manual mode, such as pasted rows, CSV rows, or CRM exports.
Show child attributes
Show child attributes
HubSpot list id for hubspot_list mode. Use the exact listId/id returned by list_hubspot_lists; do not pass an audienceId here.
Sales Navigator source configuration for sales_navigator mode.
Show child attributes
Show child attributes
Response
Tool result.

