curl --request POST \
--url https://api.example.com/api/public/tools/start_contact_discovery_audience_import \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"audienceName": "<string>",
"targetCount": 123,
"filters": null,
"confirmedMaxCredits": null,
"initialProspectIds": null,
"nextToken": null,
"audienceAiContext": null,
"audienceFlowPlanId": null
}
'import requests
url = "https://api.example.com/api/public/tools/start_contact_discovery_audience_import"
payload = {
"audienceName": "<string>",
"targetCount": 123,
"filters": None,
"confirmedMaxCredits": None,
"initialProspectIds": None,
"nextToken": None,
"audienceAiContext": None,
"audienceFlowPlanId": 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({
audienceName: '<string>',
targetCount: 123,
filters: null,
confirmedMaxCredits: null,
initialProspectIds: null,
nextToken: null,
audienceAiContext: null,
audienceFlowPlanId: null
})
};
fetch('https://api.example.com/api/public/tools/start_contact_discovery_audience_import', 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/start_contact_discovery_audience_import",
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([
'audienceName' => '<string>',
'targetCount' => 123,
'filters' => null,
'confirmedMaxCredits' => null,
'initialProspectIds' => null,
'nextToken' => null,
'audienceAiContext' => null,
'audienceFlowPlanId' => 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/start_contact_discovery_audience_import"
payload := strings.NewReader("{\n \"audienceName\": \"<string>\",\n \"targetCount\": 123,\n \"filters\": null,\n \"confirmedMaxCredits\": null,\n \"initialProspectIds\": null,\n \"nextToken\": null,\n \"audienceAiContext\": null,\n \"audienceFlowPlanId\": 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/start_contact_discovery_audience_import")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"audienceName\": \"<string>\",\n \"targetCount\": 123,\n \"filters\": null,\n \"confirmedMaxCredits\": null,\n \"initialProspectIds\": null,\n \"nextToken\": null,\n \"audienceAiContext\": null,\n \"audienceFlowPlanId\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/start_contact_discovery_audience_import")
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 \"audienceName\": \"<string>\",\n \"targetCount\": 123,\n \"filters\": null,\n \"confirmedMaxCredits\": null,\n \"initialProspectIds\": null,\n \"nextToken\": null,\n \"audienceAiContext\": null,\n \"audienceFlowPlanId\": 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>"
}Start Contact Discovery Audience Import
Call get_guide with topic=contact_discovery before starting an async contact discovery import.
Usage notes
- Fetches up to 100 total profiles and creates a manual audience when complete.
- Costs 1 credit per additional profile row requested beyond initialProspectIds.
curl --request POST \
--url https://api.example.com/api/public/tools/start_contact_discovery_audience_import \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"audienceName": "<string>",
"targetCount": 123,
"filters": null,
"confirmedMaxCredits": null,
"initialProspectIds": null,
"nextToken": null,
"audienceAiContext": null,
"audienceFlowPlanId": null
}
'import requests
url = "https://api.example.com/api/public/tools/start_contact_discovery_audience_import"
payload = {
"audienceName": "<string>",
"targetCount": 123,
"filters": None,
"confirmedMaxCredits": None,
"initialProspectIds": None,
"nextToken": None,
"audienceAiContext": None,
"audienceFlowPlanId": 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({
audienceName: '<string>',
targetCount: 123,
filters: null,
confirmedMaxCredits: null,
initialProspectIds: null,
nextToken: null,
audienceAiContext: null,
audienceFlowPlanId: null
})
};
fetch('https://api.example.com/api/public/tools/start_contact_discovery_audience_import', 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/start_contact_discovery_audience_import",
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([
'audienceName' => '<string>',
'targetCount' => 123,
'filters' => null,
'confirmedMaxCredits' => null,
'initialProspectIds' => null,
'nextToken' => null,
'audienceAiContext' => null,
'audienceFlowPlanId' => 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/start_contact_discovery_audience_import"
payload := strings.NewReader("{\n \"audienceName\": \"<string>\",\n \"targetCount\": 123,\n \"filters\": null,\n \"confirmedMaxCredits\": null,\n \"initialProspectIds\": null,\n \"nextToken\": null,\n \"audienceAiContext\": null,\n \"audienceFlowPlanId\": 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/start_contact_discovery_audience_import")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"audienceName\": \"<string>\",\n \"targetCount\": 123,\n \"filters\": null,\n \"confirmedMaxCredits\": null,\n \"initialProspectIds\": null,\n \"nextToken\": null,\n \"audienceAiContext\": null,\n \"audienceFlowPlanId\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/start_contact_discovery_audience_import")
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 \"audienceName\": \"<string>\",\n \"targetCount\": 123,\n \"filters\": null,\n \"confirmedMaxCredits\": null,\n \"initialProspectIds\": null,\n \"nextToken\": null,\n \"audienceAiContext\": null,\n \"audienceFlowPlanId\": 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
Audience name to create when the import completes.
Total desired saved profiles, including initialProspectIds. Maximum is 100.
Structured filters assembled directly from the user request. Use only supported fields; do not invent unsupported filters.
Show child attributes
Show child attributes
Customer-confirmed maximum additional discovery credits to spend. Must be at least targetCount - distinct initialProspectIds count.
Persisted prospect ids already returned by discover_contacts and already paid for. Use exact prospectId values from discover_contacts results.
Pagination token returned by discover_contacts. Pass the raw nextPage value to continue after initialProspectIds; do not pass a URL.
Optional AI context to store on the created audience.
Optional existing flow plan id to link to the created audience. Use the exact flowPlanId returned by create_flow_plan, list_flow_plans, or get_flow_workspace.
Response
Tool result.

