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,
"graph": 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,
"graph": 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,
graph: 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,
'graph' => 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 \"graph\": 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 \"graph\": 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 \"graph\": 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,
"graph": 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,
"graph": 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,
graph: 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,
'graph' => 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 \"graph\": 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 \"graph\": 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 \"graph\": 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 an image URL on api.sixtyfour.ai/v1/media, hosted by Sixtyfour; embed it directly. It works until the investigation that saved the image, or the organization, is permanently deleted.
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.
Only with tier "scout": set true to run Scout as an Atlas run. The run is saved as an Atlas investigation you can open in the Sixtyfour app, export, and continue later with investigation_id; the async response returns it under investigation. It takes the Atlas run options (max_credits, max_minutes, relentless, investigation_id, investigation_name, include_workspace), and struct becomes optional. It is billed per unit of research instead of Scout's standard price: 50 credits a unit. It must be enabled for your organization, and true with any other tier is rejected. Omitted or false, Scout runs as usual.
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 /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 struct: research until the budget runs out. By default a run may stop once every requested field is answered, and is then charged for the research it used (at least one unit).
For Atlas runs, how much research to buy, in credits: one unit of the tier price by default, up to 10 units. A unit is 250 credits on xhigh and 50 on scout with graph. Research scales with the credits bought, and the whole budget is used and charged unless the run stops early; see relentless and max_minutes.
For Atlas runs, the longest the run may research, in minutes of working time: time spent waiting to retry after a temporary failure does not count. When it is reached the run writes up what it found and completes, and is charged for the research it used, rounded up to the next 50 credits, 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?