curl --request POST \
--url https://api.sixtyfour.ai/people-intelligence \
--header 'Content-Type: application/json' \
--data '
{
"lead_info": {},
"struct": {},
"research_plan": "<string>",
"webhook_url": "<string>",
"field_confidence": true,
"include_workspace": true,
"investigation_id": "<string>",
"investigation_name": "<string>",
"relentless": false,
"max_credits": 123,
"max_minutes": 725,
"dispatch_id": "<string>",
"exclusive_run": false
}
'import requests
url = "https://api.sixtyfour.ai/people-intelligence"
payload = {
"lead_info": {},
"struct": {},
"research_plan": "<string>",
"webhook_url": "<string>",
"field_confidence": True,
"include_workspace": True,
"investigation_id": "<string>",
"investigation_name": "<string>",
"relentless": False,
"max_credits": 123,
"max_minutes": 725,
"dispatch_id": "<string>",
"exclusive_run": False
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
lead_info: {},
struct: {},
research_plan: '<string>',
webhook_url: '<string>',
field_confidence: true,
include_workspace: true,
investigation_id: '<string>',
investigation_name: '<string>',
relentless: false,
max_credits: 123,
max_minutes: 725,
dispatch_id: '<string>',
exclusive_run: false
})
};
fetch('https://api.sixtyfour.ai/people-intelligence', 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.sixtyfour.ai/people-intelligence",
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([
'lead_info' => [
],
'struct' => [
],
'research_plan' => '<string>',
'webhook_url' => '<string>',
'field_confidence' => true,
'include_workspace' => true,
'investigation_id' => '<string>',
'investigation_name' => '<string>',
'relentless' => false,
'max_credits' => 123,
'max_minutes' => 725,
'dispatch_id' => '<string>',
'exclusive_run' => false
]),
CURLOPT_HTTPHEADER => [
"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.sixtyfour.ai/people-intelligence"
payload := strings.NewReader("{\n \"lead_info\": {},\n \"struct\": {},\n \"research_plan\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"field_confidence\": true,\n \"include_workspace\": true,\n \"investigation_id\": \"<string>\",\n \"investigation_name\": \"<string>\",\n \"relentless\": false,\n \"max_credits\": 123,\n \"max_minutes\": 725,\n \"dispatch_id\": \"<string>\",\n \"exclusive_run\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
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.sixtyfour.ai/people-intelligence")
.header("Content-Type", "application/json")
.body("{\n \"lead_info\": {},\n \"struct\": {},\n \"research_plan\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"field_confidence\": true,\n \"include_workspace\": true,\n \"investigation_id\": \"<string>\",\n \"investigation_name\": \"<string>\",\n \"relentless\": false,\n \"max_credits\": 123,\n \"max_minutes\": 725,\n \"dispatch_id\": \"<string>\",\n \"exclusive_run\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sixtyfour.ai/people-intelligence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"lead_info\": {},\n \"struct\": {},\n \"research_plan\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"field_confidence\": true,\n \"include_workspace\": true,\n \"investigation_id\": \"<string>\",\n \"investigation_name\": \"<string>\",\n \"relentless\": false,\n \"max_credits\": 123,\n \"max_minutes\": 725,\n \"dispatch_id\": \"<string>\",\n \"exclusive_run\": false\n}"
response = http.request(request)
puts response.read_body{
"detail": "Invalid request body"
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient API credits"
}{
"detail": "High tier company enrichment is not enabled for this org. Contact sales to request access."
}{
"detail": "Job not found"
}{
"detail": [
{
"loc": [
"body",
"target_company",
"domain"
],
"msg": "Field required",
"type": "missing",
"input": null,
"ctx": {}
}
]
}{
"detail": "Rate limit exceeded"
}{
"detail": "Internal server error"
}{
"detail": "Could not verify the API key right now. Retry shortly."
}People Intelligence (Sync)
Find and enrich a single person.
curl --request POST \
--url https://api.sixtyfour.ai/people-intelligence \
--header 'Content-Type: application/json' \
--data '
{
"lead_info": {},
"struct": {},
"research_plan": "<string>",
"webhook_url": "<string>",
"field_confidence": true,
"include_workspace": true,
"investigation_id": "<string>",
"investigation_name": "<string>",
"relentless": false,
"max_credits": 123,
"max_minutes": 725,
"dispatch_id": "<string>",
"exclusive_run": false
}
'import requests
url = "https://api.sixtyfour.ai/people-intelligence"
payload = {
"lead_info": {},
"struct": {},
"research_plan": "<string>",
"webhook_url": "<string>",
"field_confidence": True,
"include_workspace": True,
"investigation_id": "<string>",
"investigation_name": "<string>",
"relentless": False,
"max_credits": 123,
"max_minutes": 725,
"dispatch_id": "<string>",
"exclusive_run": False
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
lead_info: {},
struct: {},
research_plan: '<string>',
webhook_url: '<string>',
field_confidence: true,
include_workspace: true,
investigation_id: '<string>',
investigation_name: '<string>',
relentless: false,
max_credits: 123,
max_minutes: 725,
dispatch_id: '<string>',
exclusive_run: false
})
};
fetch('https://api.sixtyfour.ai/people-intelligence', 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.sixtyfour.ai/people-intelligence",
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([
'lead_info' => [
],
'struct' => [
],
'research_plan' => '<string>',
'webhook_url' => '<string>',
'field_confidence' => true,
'include_workspace' => true,
'investigation_id' => '<string>',
'investigation_name' => '<string>',
'relentless' => false,
'max_credits' => 123,
'max_minutes' => 725,
'dispatch_id' => '<string>',
'exclusive_run' => false
]),
CURLOPT_HTTPHEADER => [
"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.sixtyfour.ai/people-intelligence"
payload := strings.NewReader("{\n \"lead_info\": {},\n \"struct\": {},\n \"research_plan\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"field_confidence\": true,\n \"include_workspace\": true,\n \"investigation_id\": \"<string>\",\n \"investigation_name\": \"<string>\",\n \"relentless\": false,\n \"max_credits\": 123,\n \"max_minutes\": 725,\n \"dispatch_id\": \"<string>\",\n \"exclusive_run\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
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.sixtyfour.ai/people-intelligence")
.header("Content-Type", "application/json")
.body("{\n \"lead_info\": {},\n \"struct\": {},\n \"research_plan\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"field_confidence\": true,\n \"include_workspace\": true,\n \"investigation_id\": \"<string>\",\n \"investigation_name\": \"<string>\",\n \"relentless\": false,\n \"max_credits\": 123,\n \"max_minutes\": 725,\n \"dispatch_id\": \"<string>\",\n \"exclusive_run\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sixtyfour.ai/people-intelligence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"lead_info\": {},\n \"struct\": {},\n \"research_plan\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"field_confidence\": true,\n \"include_workspace\": true,\n \"investigation_id\": \"<string>\",\n \"investigation_name\": \"<string>\",\n \"relentless\": false,\n \"max_credits\": 123,\n \"max_minutes\": 725,\n \"dispatch_id\": \"<string>\",\n \"exclusive_run\": false\n}"
response = http.request(request)
puts response.read_body{
"detail": "Invalid request body"
}{
"detail": "Invalid API key"
}{
"detail": "Insufficient API credits"
}{
"detail": "High tier company enrichment is not enabled for this org. Contact sales to request access."
}{
"detail": "Job not found"
}{
"detail": [
{
"loc": [
"body",
"target_company",
"domain"
],
"msg": "Field required",
"type": "missing",
"input": null,
"ctx": {}
}
]
}{
"detail": "Rate limit exceeded"
}{
"detail": "Internal server error"
}{
"detail": "Could not verify the API key right now. Retry shortly."
}Headers
Body
Single lead to process. Provide any combination of name, email, company, linkedin, etc.
Mapping of output field name to natural-language description of what to extract. A field that asks for an image (a headshot, a logo, a screenshot of a page) is returned as a permanent image URL on api.sixtyfour.ai/v1/media, hosted by Sixtyfour; embed it directly.
Optional natural-language plan that guides the research agent.
Quality and cost tier for the research agent.
low, micro, medium, high, xhigh, scout HTTPS URL that receives the result payload when the async job completes.
1 - 2083If true, return each requested field's confidence (0-100), justification and source URLs, nested like the request.
For Atlas runs (xhigh, or scout with graph), include workspace files alongside structured output (default: true). Set false to omit them. Job status reads them from the investigation, so it shows the investigation's current workspace, including what a later run on it changed. Saved images appear as attachment records; requested image fields carry their permanent /v1/media URL, and the investigation's /v1/atlas file API serves any attachment. Ignored by other tiers.
For Atlas runs (xhigh, or scout with graph), continue an existing investigation instead of creating one. The run reuses that investigation's graph and workspace, so a follow-up builds on the earlier research rather than starting over. Ignored by other tiers.
For Atlas runs, the title of a newly created investigation. Ignored when resuming via investigation_id; when unset the title is derived from lead_info.
For Atlas runs with target fields: research until the budget runs out. By default a run may stop once every requested field is answered, charging the turns it used (at least one unit).
For Atlas runs, how much research to buy, in credits (default: one unit of the tier price, 250 credits on xhigh), up to 10 units. On multi-agent runs every 250 credits buy 800 team turns (every model response by any agent in the run), used in full unless the research stops yielding: 300 buys 960.
For Atlas runs, the longest the run may research, in minutes of working time: waits to retry a model call or an attempt do not count. When it is reached the run writes up what it found and completes, charging the credits its turns used, rounded up to the next 50, instead of the whole budget. Writing up can take a few minutes past the limit. Default: no limit.
10 <= x <= 1440Async endpoints only: a client-generated idempotency key for the dispatch. Reusing the same key for the same organization returns the existing job instead of starting and billing a duplicate.
8 - 128Atlas runs on an existing investigation only: refuse with 409 while that investigation already has a run starting or running, instead of starting and billing a second one.
Response
Successful Response
Was this page helpful?