Create a person
curl --request POST \
--url https://api.metal.ai/v1/people \
--header 'Content-Type: application/json' \
--header 'x-metal-api-key: <api-key>' \
--header 'x-metal-client-id: <api-key>' \
--data '
{
"firstName": "Jordan",
"lastName": "Rivera",
"email": "jordan@example.com",
"currentTitle": "<string>",
"currentCompanyName": "<string>",
"company": "<string>",
"linkedinUrl": "<string>",
"phoneNumber": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>"
}
'import requests
url = "https://api.metal.ai/v1/people"
payload = {
"firstName": "Jordan",
"lastName": "Rivera",
"email": "jordan@example.com",
"currentTitle": "<string>",
"currentCompanyName": "<string>",
"company": "<string>",
"linkedinUrl": "<string>",
"phoneNumber": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>"
}
headers = {
"x-metal-client-id": "<api-key>",
"x-metal-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-metal-client-id': '<api-key>',
'x-metal-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
firstName: 'Jordan',
lastName: 'Rivera',
email: 'jordan@example.com',
currentTitle: '<string>',
currentCompanyName: '<string>',
company: '<string>',
linkedinUrl: '<string>',
phoneNumber: '<string>',
location: {city: '<string>', state: '<string>', country: '<string>'},
externalId: '<string>'
})
};
fetch('https://api.metal.ai/v1/people', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.metal.ai/v1/people"
payload := strings.NewReader("{\n \"firstName\": \"Jordan\",\n \"lastName\": \"Rivera\",\n \"email\": \"jordan@example.com\",\n \"currentTitle\": \"<string>\",\n \"currentCompanyName\": \"<string>\",\n \"company\": \"<string>\",\n \"linkedinUrl\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"location\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\"\n },\n \"externalId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-metal-client-id", "<api-key>")
req.Header.Add("x-metal-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))
}{
"data": {
"id": "665f1c2a9b1e4a0012a3b4c5",
"firstName": "Jordan",
"lastName": "Rivera",
"email": "jordan@example.com",
"currentTitle": "Chief Executive Officer",
"currentCompanyName": "<string>",
"company": "<string>",
"linkedinUrl": "<string>",
"phoneNumber": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>",
"externalReference": {
"source": "<string>",
"id": "<string>"
},
"enrichment": {
"subsector": [
{
"value": "Self-Funded Health Insurance / Third Party Administrator (TPA)",
"source": "CIM",
"confidence": 100,
"pinned": true,
"discoveredAt": "2026-02-14T10:00:00Z"
},
{
"value": "Third-Party Administrators (TPAs)",
"source": "Market Report",
"confidence": 57,
"pinned": false,
"discoveredAt": "2026-01-20T10:00:00Z"
}
]
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "Invalid request body"
}{
"error": "invalid api key or clientId"
}Create a person
Creates a person. Provide at least a name; link to a company with company.
POST
/
v1
/
people
Create a person
curl --request POST \
--url https://api.metal.ai/v1/people \
--header 'Content-Type: application/json' \
--header 'x-metal-api-key: <api-key>' \
--header 'x-metal-client-id: <api-key>' \
--data '
{
"firstName": "Jordan",
"lastName": "Rivera",
"email": "jordan@example.com",
"currentTitle": "<string>",
"currentCompanyName": "<string>",
"company": "<string>",
"linkedinUrl": "<string>",
"phoneNumber": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>"
}
'import requests
url = "https://api.metal.ai/v1/people"
payload = {
"firstName": "Jordan",
"lastName": "Rivera",
"email": "jordan@example.com",
"currentTitle": "<string>",
"currentCompanyName": "<string>",
"company": "<string>",
"linkedinUrl": "<string>",
"phoneNumber": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>"
}
headers = {
"x-metal-client-id": "<api-key>",
"x-metal-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-metal-client-id': '<api-key>',
'x-metal-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
firstName: 'Jordan',
lastName: 'Rivera',
email: 'jordan@example.com',
currentTitle: '<string>',
currentCompanyName: '<string>',
company: '<string>',
linkedinUrl: '<string>',
phoneNumber: '<string>',
location: {city: '<string>', state: '<string>', country: '<string>'},
externalId: '<string>'
})
};
fetch('https://api.metal.ai/v1/people', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.metal.ai/v1/people"
payload := strings.NewReader("{\n \"firstName\": \"Jordan\",\n \"lastName\": \"Rivera\",\n \"email\": \"jordan@example.com\",\n \"currentTitle\": \"<string>\",\n \"currentCompanyName\": \"<string>\",\n \"company\": \"<string>\",\n \"linkedinUrl\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"location\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\"\n },\n \"externalId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-metal-client-id", "<api-key>")
req.Header.Add("x-metal-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))
}{
"data": {
"id": "665f1c2a9b1e4a0012a3b4c5",
"firstName": "Jordan",
"lastName": "Rivera",
"email": "jordan@example.com",
"currentTitle": "Chief Executive Officer",
"currentCompanyName": "<string>",
"company": "<string>",
"linkedinUrl": "<string>",
"phoneNumber": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>",
"externalReference": {
"source": "<string>",
"id": "<string>"
},
"enrichment": {
"subsector": [
{
"value": "Self-Funded Health Insurance / Third Party Administrator (TPA)",
"source": "CIM",
"confidence": 100,
"pinned": true,
"discoveredAt": "2026-02-14T10:00:00Z"
},
{
"value": "Third-Party Administrators (TPAs)",
"source": "Market Report",
"confidence": 57,
"pinned": false,
"discoveredAt": "2026-01-20T10:00:00Z"
}
]
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "Invalid request body"
}{
"error": "invalid api key or clientId"
}Authorizations
The Client ID of your API key.
The secret value of your API key.
Body
application/json
Example:
"Jordan"
Example:
"Rivera"
Example:
"jordan@example.com"
The id of the company to link this person to.
Show child attributes
Show child attributes
Response
A person.
A person record. Attributes such as currentTitle, currentCompanyName, and linkedinUrl can be populated by enrichment; the enrichment field exposes the discovered values and citations behind each reconciled attribute. See the Enrichment and Reconciliation & ranking guides.
Show child attributes
Show child attributes
⌘I

