Batch Create Contact Entries
Add entries to existing contact lists in batch (up to 100 items per request).
Unlike single-resource POST endpoints, the body wraps the payloads in
items and the response reports a per-item status.
Requires the contact_lists:write scope on the API key.
curl --request POST \
--url https://api.topo.io/v1/contact-entries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"contact_list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"linkedin_url": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"job_title": "<string>",
"phone": "<string>",
"external_contact_id": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
contact_list_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
first_name: '<string>',
last_name: '<string>',
email: '<string>',
linkedin_url: '<string>',
company_name: '<string>',
company_domain: '<string>',
job_title: '<string>',
phone: '<string>',
external_contact_id: '<string>'
}
]
})
};
fetch('https://api.topo.io/v1/contact-entries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.topo.io/v1/contact-entries"
payload = { "items": [
{
"contact_list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"linkedin_url": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"job_title": "<string>",
"phone": "<string>",
"external_contact_id": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"items": [
{
"index": 123,
"resource": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact_list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"external_contact_id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"linkedin_url": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"job_title": "<string>",
"phone": "<string>",
"description": "<string>",
"location": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"error": {
"type": "<string>",
"message": "<string>"
}
}
],
"summary": {
"total": 123,
"succeeded": 123,
"failed": 123
}
}Authorizations
Bearer API key issued from Settings → Developers.
Body
Batch Create Contact Entries payload
Contact entries to create.
1 - 100 elementsHide child attributes
Hide child attributes
ID of the contact list to add this entry to.
First name.
Last name.
Email. At least one of email or linkedin_url is required.
LinkedIn profile URL. At least one of email or linkedin_url is required.
Employer name.
Employer's primary domain.
Job title.
Phone number.
External CRM contact identifier for CRM-backed list entries.
Response
Successful Response
Hide child attributes
Hide child attributes
CREATED, UPDATED, FAILED Hide child attributes
Hide child attributes
Unique identifier.
ID of the list this entry belongs to.
ID of the contact this entry resolved to, once matched.
External CRM contact identifier when supplied at import.
First name.
Last name.
Email.
LinkedIn URL.
Employer name.
Employer domain.
Job title.
Phone number.
Free-form notes.
Person's location.
When the entry was created.
When the entry last changed.
Was this page helpful?
curl --request POST \
--url https://api.topo.io/v1/contact-entries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"contact_list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"linkedin_url": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"job_title": "<string>",
"phone": "<string>",
"external_contact_id": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
contact_list_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
first_name: '<string>',
last_name: '<string>',
email: '<string>',
linkedin_url: '<string>',
company_name: '<string>',
company_domain: '<string>',
job_title: '<string>',
phone: '<string>',
external_contact_id: '<string>'
}
]
})
};
fetch('https://api.topo.io/v1/contact-entries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.topo.io/v1/contact-entries"
payload = { "items": [
{
"contact_list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"linkedin_url": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"job_title": "<string>",
"phone": "<string>",
"external_contact_id": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"items": [
{
"index": 123,
"resource": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact_list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"external_contact_id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"linkedin_url": "<string>",
"company_name": "<string>",
"company_domain": "<string>",
"job_title": "<string>",
"phone": "<string>",
"description": "<string>",
"location": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"error": {
"type": "<string>",
"message": "<string>"
}
}
],
"summary": {
"total": 123,
"succeeded": 123,
"failed": 123
}
}