Bulk enrich people
/people/bulk-enrichEnrich up to 100 people in one call. Each record runs the same field-aware waterfall as `/people/enrich`, with a per-record budget cap via `max_cost_cents_per_record`.
Call it over REST
Authenticate with a bearer token against https://api.superagnt.com. Swap the placeholders for your key and parameter values.
curl -s -X POST "https://api.superagnt.com/people/bulk-enrich" \
-H "Authorization: Bearer <YOUR_AGNTDATA_API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "inputs": [] }'Copy-paste prompt
Paste this into a coding agent. It connects the superagnt MCP server, finds the tool data_agnt_people_bulk_enrich, and runs a first call — with the REST fallback if MCP is unavailable.
You are wiring up the superagnt "Lead APIs" API to use this endpoint: Bulk enrich people.
1. CONNECT over MCP (preferred). No token to paste either way.
On Claude (claude.ai, the desktop app, or Claude Code signed in with a Claude
account), the server is a connector: give the user this link, they click Add
and approve:
https://claude.ai/customize/connectors/yours?modal=add-custom-connector&connectorName=superagnt&connectorUrl=https%3A%2F%2Fmcp.superagnt.com%2Fmcp&open_in_browser=1
Any other MCP client (or Claude Code signed in with an API key): add the server
and let the client run the browser sign-in:
claude mcp add --scope user --transport http superagnt https://mcp.superagnt.com/mcp
claude mcp login superagnt
MCP endpoint: https://mcp.superagnt.com/mcp
After connecting, the tool you want is named exactly:
data_agnt_people_bulk_enrich
Call agnt_tools_search or agnt_tools_list_enabled to confirm it is available.
2. REST fallback (if you are not using MCP):
POST https://api.superagnt.com/people/bulk-enrich
Header: Authorization: Bearer <YOUR_AGNTDATA_API_KEY>
Required parameters:
- inputs (array, required)
Optional parameters:
- fields (array, optional) — Fields to fill. The waterfall stops calling providers once all of them are filled. Omit for the core set: email, full_name, job_title, company_name, company_domain, linkedin_url, location. Every other field (work_email, verified_email, twitter_url, first_name, last_name, seniority, department) is looked up only when named here. verified_email is filled only for a valid email: a risky or invalid one ends the search with it unfilled. personal_email is not available here, and a mobile number comes from /people/find-mobile.
- max_cost_cents_per_record (number, optional)
3. COST & KEY. This endpoint is metered — pricing varies by request, from $0.02 per call. Only successful calls are charged.
Get a superagnt API key at https://app.superagnt.com.
4. TEST. Connect the server (or set the key), discover the tool
(data_agnt_people_bulk_enrich), run one minimal call with just the required parameters,
and report back the shape of the JSON response (top-level fields).
Reference (machine-readable variant): https://www.superagnt.com/docs/apis/lead/agnt/endpoints/people_bulk_enrich.md{
"name": "people_bulk_enrich",
"description": "Enrich up to 100 people in one call. Each input record requires `email` and/or `linkedin_url` (either at the top level of the input object or nested under `identifiers`). `first_name`/`last_name`/`domain` are NOT accepted — if you only have name+company, call `/people/email-finder` per record first. Each input runs the same field-aware waterfall as `/people/enrich`. Use `max_cost_cents_per_record` to cap per-record spend.",
"parameters": {
"type": "object",
"properties": {
"inputs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string",
"minLength": 1,
"description": "Optional caller-supplied label echoed back in the response — use it to align results to your input rows."
},
"identifiers": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Work or personal email address."
},
"linkedin_url": {
"type": "string",
"format": "uri",
"description": "Full LinkedIn profile URL (e.g. https://www.linkedin.com/in/satyanadella/)."
}
},
"additionalProperties": false,
"description": "Unique handles used to resolve a person upstream. Provide AT LEAST ONE of `email` or `linkedin_url`. Name + company are NOT accepted here — for that flow, call `/people/email-finder` first to obtain an email. A lookup that matches nothing is not an error: it returns the identifiers you sent with every other field null with `meta.empty: true` and is not charged. Retrying the same input will not find it."
},
"email": {
"type": "string",
"format": "email",
"description": "Shorthand: same as `identifiers.email`. Use either this OR `identifiers`, not both."
},
"linkedin_url": {
"type": "string",
"format": "uri",
"description": "Shorthand: same as `identifiers.linkedin_url`. Use either this OR `identifiers`, not both."
}
},
"additionalProperties": false,
"description": "Each input must resolve to `email` and/or `linkedin_url` (top-level shorthand or nested under `identifiers`). Name + company are NOT accepted."
},
"minItems": 1,
"maxItems": 100
},
"fields": {
"type": "array",
"items": {
"type": "string",
"enum": [
"email",
"work_email",
"personal_email",
"verified_email",
"mobile",
"linkedin_url",
"twitter_url",
"full_name",
"first_name",
"last_name",
"job_title",
"seniority",
"department",
"company_name",
"company_domain",
"location"
]
},
"description": "Fields to fill. The waterfall stops calling providers once all of them are filled. Omit for the core set: email, full_name, job_title, company_name, company_domain, linkedin_url, location. Every other field (work_email, verified_email, twitter_url, first_name, last_name, seniority, department) is looked up only when named here. verified_email is filled only for a valid email: a risky or invalid one ends the search with it unfilled. personal_email is not available here, and a mobile number comes from /people/find-mobile."
},
"max_cost_cents_per_record": {
"type": "number",
"minimum": 0
}
},
"required": [
"inputs"
]
}
}| Name | In | Type | Required | Description |
|---|---|---|---|---|
inputs | body | array | required | |
fields | body | array | optional | Fields to fill. The waterfall stops calling providers once all of them are filled. Omit for the core set: email, full_name, job_title, company_name, company_domain, linkedin_url, location. Every other field (work_email, verified_email, twitter_url, first_name, last_name, seniority, department) is looked up only when named here. verified_email is filled only for a valid email: a risky or invalid one ends the search with it unfilled. personal_email is not available here, and a mobile number comes from /people/find-mobile. |
max_cost_cents_per_record | body | number | optional |
Bulk enrichment results.
{
"type": "object",
"required": [
"success",
"data"
],
"properties": {
"success": {
"type": "boolean",
"enum": [
true
]
},
"data": {
"$ref": "#/components/schemas/PeopleBulkEnrichResponse"
},
"meta": {
"$ref": "#/components/schemas/AgntMeta"
}
}
}Metered endpoint — the exact cost depends on the request. Credits are deducted per successful call; failed requests (4xx/5xx) are not charged.
Get started at app.superagnt.com.
start calling
Point your client at https://mcp.superagnt.com/mcp and your agent has this endpoint, plus every other source on one balance.