Use Case
Enrich entire company data with additional information and find associated people for sales outreach, CRM enrichment, or lead qualification.
Endpoint
POST https://api.sixtyfour.ai/enrich-company
Request
| Name | Type | Required | Description |
|---|
| x-api-key | string | Yes | Your Sixtyfour API key |
| Content-Type | string | Yes | Must be application/json |
Body
| Field | Type | Required | Description |
|---|
| target_company | object | Yes | Company data to enrich |
| struct | object | Yes | Fields to collect |
| lead_struct | object | No | Custom schema to define the structure of returned lead data |
| find_people | boolean | No | Whether to find people associated with the company |
| full_org_chart | boolean | No | Whether to retrieve the full organizational chart for the company |
| research_plan | string | No | Optional strategy describing how the agent should search for information |
| people_focus_prompt | string | No | Description of people to find, typically includes the roles or responsibilities of the people you’re looking for |
The struct field defines exactly what data you want back. Each key is a field name you want returned in structured_data, and its value is either a plain-English description (e.g., "Instagram url for the photography company") or an object with description and optional type (e.g., {"description": "Approximate employee count", "type": "int"}). The agent uses these descriptions to guide its research.
find_people vs full_org_chart
find_people: Finds specific people associated with the company. Use people_focus_prompt to filter by role or seniority.
full_org_chart: Retrieves the complete organizational chart for the company. Use this when you need comprehensive coverage of all roles and reporting structure rather than targeted lead discovery.
Research Plan vs People Focus Prompt
research_plan: Focuses on the methodology of finding data. Use this to guide the agent on where to look (e.g., “Check the ‘About Us’ page and LinkedIn Company People tab”).
people_focus_prompt: Focuses on the criteria for the people you want to find. Use this to filter by role, department, or seniority (e.g., “Find the VP of Marketing and the CTO”).
Response
Success Response (200)
Returns enriched company data including leads if requested.
{
"notes": "Pacific View Studios is a boutique photography company based in La Jolla, California. They specialize in luxury wedding photography, high-end portrait sessions, and commercial work for local businesses. The company has a strong social media presence and professional website. The business operates with a small, dedicated team of photographers and support staff.",
"structured_data": {
"company_name": "Pacific View Studios",
"address": "1234 Ocean View Dr, La Jolla, CA 92037",
"phone_number": "+16195551234",
"website": "https://pacificview.studio",
"num_employees": "5-10 employees",
"instagram_url": "https://www.instagram.com/pacificview.studio",
"leads": [
{
"name": "Sarah Chen",
"email": "sarah@pacificview.studio",
"title": "Creative Director & Lead Photographer",
"phone": "+16195551234",
"score": 9,
"linkedin": "https://www.linkedin.com/in/sarah-chen-photography"
},
{
"name": "Michael Rodriguez",
"email": "michael@pacificview.studio",
"title": "Office Manager",
"phone": "+16195551234",
"score": 8,
"linkedin": "https://www.linkedin.com/in/michael-rodriguez-pvs"
}
]
},
"findings": [],
"references": {
"https://pacificview.studio": "Official company website with services and portfolio",
"https://www.instagram.com/pacificview.studio": "Company Instagram profile showing recent work",
"https://www.linkedin.com/in/sarah-chen-photography": "LinkedIn profile of the Creative Director",
"https://www.linkedin.com/in/michael-rodriguez-pvs": "LinkedIn profile of the Office Manager"
},
"confidence_score": 9.5
}
The findings field is deprecated. It currently returns an empty list and will be removed in a future update.
Score Definitions
| Field | Description | Range |
|---|
confidence_score | Global Quality Score: Measures the overall quality, consistency, and correctness of the returned data. | 0-10 |
score | Relevance Score: Measures the likelihood of the person to match the prompt or be helpful (returned per lead). | 0-10 |
Error Response (400)
{
"error": "Bad Request",
"message": "Invalid company data"
}
Sync Usage
Make a direct request and wait for the response. This is the simplest approach, but note that enrichment can take several minutes depending on depth of research.
curl -X POST "https://api.sixtyfour.ai/enrich-company" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_company": {
"company_name": "Pacific View Studios",
"address": "1234 Ocean View Dr, La Jolla, CA 92037",
"phone_number": "+16195551234",
"website": "https://pacificview.studio"
},
"struct": {
"instagram_url": "Instagram url for the photography company",
"num_employees": "How many employees work there"
},
"lead_struct": {
"name": "Full name of the person",
"email": "Work email address",
"title": "Job title",
"linkedin": "LinkedIn profile URL"
},
"find_people": true,
"research_plan": "Check their website, online profiles, and linkedin for the people",
"people_focus_prompt": "Find me the owners of the company and the office manager"
}'
Async Usage
For production workflows, use the async endpoint to submit a job and retrieve results later. This avoids long-lived HTTP connections.
Start Async Job
POST https://api.sixtyfour.ai/enrich-company-async
The request body is identical to the sync endpoint.
Response:
{
"task_id": "bdd69815-a1c0-480d-bfa5-d5fbb9745893",
"status": "pending"
}
Check Job Status
GET https://api.sixtyfour.ai/job-status/{task_id}
Pending/Processing:
{
"status": "pending",
"processed_items": 0,
"total_items": 0,
"task_type": "enrich_company"
}
Completed:
{
"status": "completed",
"result": {
"notes": "Pacific View Studios is a boutique photography company based in La Jolla, California...",
"structured_data": {
"company_name": "Pacific View Studios",
"address": "1234 Ocean View Dr, La Jolla, CA 92037",
"phone_number": "+16195551234",
"website": "https://pacificview.studio",
"num_employees": "5-10 employees",
"instagram_url": "https://www.instagram.com/pacificview.studio",
"leads": [
{
"name": "Sarah Chen",
"email": "sarah@pacificview.studio",
"title": "Creative Director & Lead Photographer",
"phone": "+16195551234",
"score": 9,
"linkedin": "https://www.linkedin.com/in/sarah-chen-photography"
},
{
"name": "Michael Rodriguez",
"email": "michael@pacificview.studio",
"title": "Office Manager",
"phone": "+16195551234",
"score": 8,
"linkedin": "https://www.linkedin.com/in/michael-rodriguez-pvs"
}
]
},
"findings": [],
"references": {
"https://pacificview.studio": "Official company website with services and portfolio",
"https://www.instagram.com/pacificview.studio": "Company Instagram profile showing recent work",
"https://www.linkedin.com/in/sarah-chen-photography": "LinkedIn profile of the Creative Director",
"https://www.linkedin.com/in/michael-rodriguez-pvs": "LinkedIn profile of the Office Manager"
},
"confidence_score": 9.5
},
"task_type": "enrich_company"
}
Example Async Usage
import requests
import time
# Start async job
response = requests.post(
"https://api.sixtyfour.ai/enrich-company-async",
headers={
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"target_company": {
"company_name": "Pacific View Studios",
"website": "https://pacificview.studio"
},
"struct": {
"instagram_url": "Instagram url for the photography company",
"num_employees": "How many employees work there"
},
"find_people": True
}
)
response.raise_for_status()
task_info = response.json()
task_id = task_info["task_id"]
# Poll for results
while True:
status_response = requests.get(
f"https://api.sixtyfour.ai/job-status/{task_id}",
headers={"x-api-key": "YOUR_API_KEY"}
)
status_response.raise_for_status()
status_data = status_response.json()
if status_data["status"] == "completed":
results = status_data["result"]
break
elif status_data["status"] == "failed":
print(f"Job failed: {status_data.get('error', 'Unknown error')}")
break
time.sleep(10) # Wait 10 seconds before checking again
Type Casting
The API automatically handles type casting for structured data output with intelligent type preservation and conversion.
Type Priority Order
- Explicit Type Definitions (Highest Priority) - Specified in
struct field definitions
- Original Input Types - Types from
target_company when not explicitly overridden
- Inferred Types - From example values in
struct
- Default to String (Lowest Priority)
Supported Types
| Type | Example Values |
|---|
"str" or "string" | "Pacific View Studios" |
"int" or "integer" | 50, 1000 |
"float" | 95.5, 3.14 |
"bool" or "boolean" | true, false |
"list" | ["item1", "item2"] |
"list[str]" | ["item1", "item2"] |
"list[int]" | [1, 2, 3] |
"list[float]" | [1.5, 2.7, 3.14] |
"dict" | {"key": "value"} |
Examples
Type Override:
{
"target_company": {"num_employees": 25, "is_public": true},
"struct": {
"num_employees": {"type": "str"}, // Overrides original int type
"industry": "Primary business sector" // New field as string
}
}
// Output: {"num_employees": "25", "is_public": true, "industry": "Photography"}
Explicit Type Definition:
{
"struct": {
"employee_count": {"description": "Number of employees", "type": "int"},
"is_verified": {"description": "Verification status", "type": "bool"}
}
}
// Output: {"employee_count": 25, "is_verified": true}
Type Inference from Values:
{
"struct": {
"rating": 4.5, // Inferred as float
"is_remote": false, // Inferred as bool
"founded_year": 2020 // Inferred as int
}
}