curl --request POST \
--url https://client-api.salesfinity.co/v1/contact-lists/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"account": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"linkedin": "<string>",
"email": "<string>",
"website": "<string>",
"notes": "<string>",
"phone_numbers": [
{
"number": "<string>",
"country_code": "<string>",
"extension": "<string>"
}
],
"company": "<string>",
"title": "<string>",
"priority": 123,
"timezone": "<string>",
"external_relations": {},
"custom_fields": [
{
"label": "<string>",
"value": "<unknown>"
}
]
}
'import requests
url = "https://client-api.salesfinity.co/v1/contact-lists/{id}"
payload = {
"account": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"linkedin": "<string>",
"email": "<string>",
"website": "<string>",
"notes": "<string>",
"phone_numbers": [
{
"number": "<string>",
"country_code": "<string>",
"extension": "<string>"
}
],
"company": "<string>",
"title": "<string>",
"priority": 123,
"timezone": "<string>",
"external_relations": {},
"custom_fields": [
{
"label": "<string>",
"value": "<unknown>"
}
]
}
headers = {
"x-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-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account: '<string>',
first_name: '<string>',
last_name: '<string>',
linkedin: '<string>',
email: '<string>',
website: '<string>',
notes: '<string>',
phone_numbers: [{number: '<string>', country_code: '<string>', extension: '<string>'}],
company: '<string>',
title: '<string>',
priority: 123,
timezone: '<string>',
external_relations: {},
custom_fields: [{label: '<string>', value: '<unknown>'}]
})
};
fetch('https://client-api.salesfinity.co/v1/contact-lists/{id}', 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://client-api.salesfinity.co/v1/contact-lists/{id}",
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([
'account' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'linkedin' => '<string>',
'email' => '<string>',
'website' => '<string>',
'notes' => '<string>',
'phone_numbers' => [
[
'number' => '<string>',
'country_code' => '<string>',
'extension' => '<string>'
]
],
'company' => '<string>',
'title' => '<string>',
'priority' => 123,
'timezone' => '<string>',
'external_relations' => [
],
'custom_fields' => [
[
'label' => '<string>',
'value' => '<unknown>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://client-api.salesfinity.co/v1/contact-lists/{id}"
payload := strings.NewReader("{\n \"account\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"linkedin\": \"<string>\",\n \"email\": \"<string>\",\n \"website\": \"<string>\",\n \"notes\": \"<string>\",\n \"phone_numbers\": [\n {\n \"number\": \"<string>\",\n \"country_code\": \"<string>\",\n \"extension\": \"<string>\"\n }\n ],\n \"company\": \"<string>\",\n \"title\": \"<string>\",\n \"priority\": 123,\n \"timezone\": \"<string>\",\n \"external_relations\": {},\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-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))
}HttpResponse<String> response = Unirest.post("https://client-api.salesfinity.co/v1/contact-lists/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"linkedin\": \"<string>\",\n \"email\": \"<string>\",\n \"website\": \"<string>\",\n \"notes\": \"<string>\",\n \"phone_numbers\": [\n {\n \"number\": \"<string>\",\n \"country_code\": \"<string>\",\n \"extension\": \"<string>\"\n }\n ],\n \"company\": \"<string>\",\n \"title\": \"<string>\",\n \"priority\": 123,\n \"timezone\": \"<string>\",\n \"external_relations\": {},\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v1/contact-lists/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"linkedin\": \"<string>\",\n \"email\": \"<string>\",\n \"website\": \"<string>\",\n \"notes\": \"<string>\",\n \"phone_numbers\": [\n {\n \"number\": \"<string>\",\n \"country_code\": \"<string>\",\n \"extension\": \"<string>\"\n }\n ],\n \"company\": \"<string>\",\n \"title\": \"<string>\",\n \"priority\": 123,\n \"timezone\": \"<string>\",\n \"external_relations\": {},\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body"507f1f77bcf86cd799439011"{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Add a Contact to a List
Add a contact to an existing list
curl --request POST \
--url https://client-api.salesfinity.co/v1/contact-lists/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"account": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"linkedin": "<string>",
"email": "<string>",
"website": "<string>",
"notes": "<string>",
"phone_numbers": [
{
"number": "<string>",
"country_code": "<string>",
"extension": "<string>"
}
],
"company": "<string>",
"title": "<string>",
"priority": 123,
"timezone": "<string>",
"external_relations": {},
"custom_fields": [
{
"label": "<string>",
"value": "<unknown>"
}
]
}
'import requests
url = "https://client-api.salesfinity.co/v1/contact-lists/{id}"
payload = {
"account": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"linkedin": "<string>",
"email": "<string>",
"website": "<string>",
"notes": "<string>",
"phone_numbers": [
{
"number": "<string>",
"country_code": "<string>",
"extension": "<string>"
}
],
"company": "<string>",
"title": "<string>",
"priority": 123,
"timezone": "<string>",
"external_relations": {},
"custom_fields": [
{
"label": "<string>",
"value": "<unknown>"
}
]
}
headers = {
"x-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-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account: '<string>',
first_name: '<string>',
last_name: '<string>',
linkedin: '<string>',
email: '<string>',
website: '<string>',
notes: '<string>',
phone_numbers: [{number: '<string>', country_code: '<string>', extension: '<string>'}],
company: '<string>',
title: '<string>',
priority: 123,
timezone: '<string>',
external_relations: {},
custom_fields: [{label: '<string>', value: '<unknown>'}]
})
};
fetch('https://client-api.salesfinity.co/v1/contact-lists/{id}', 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://client-api.salesfinity.co/v1/contact-lists/{id}",
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([
'account' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'linkedin' => '<string>',
'email' => '<string>',
'website' => '<string>',
'notes' => '<string>',
'phone_numbers' => [
[
'number' => '<string>',
'country_code' => '<string>',
'extension' => '<string>'
]
],
'company' => '<string>',
'title' => '<string>',
'priority' => 123,
'timezone' => '<string>',
'external_relations' => [
],
'custom_fields' => [
[
'label' => '<string>',
'value' => '<unknown>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://client-api.salesfinity.co/v1/contact-lists/{id}"
payload := strings.NewReader("{\n \"account\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"linkedin\": \"<string>\",\n \"email\": \"<string>\",\n \"website\": \"<string>\",\n \"notes\": \"<string>\",\n \"phone_numbers\": [\n {\n \"number\": \"<string>\",\n \"country_code\": \"<string>\",\n \"extension\": \"<string>\"\n }\n ],\n \"company\": \"<string>\",\n \"title\": \"<string>\",\n \"priority\": 123,\n \"timezone\": \"<string>\",\n \"external_relations\": {},\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-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))
}HttpResponse<String> response = Unirest.post("https://client-api.salesfinity.co/v1/contact-lists/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"linkedin\": \"<string>\",\n \"email\": \"<string>\",\n \"website\": \"<string>\",\n \"notes\": \"<string>\",\n \"phone_numbers\": [\n {\n \"number\": \"<string>\",\n \"country_code\": \"<string>\",\n \"extension\": \"<string>\"\n }\n ],\n \"company\": \"<string>\",\n \"title\": \"<string>\",\n \"priority\": 123,\n \"timezone\": \"<string>\",\n \"external_relations\": {},\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v1/contact-lists/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"linkedin\": \"<string>\",\n \"email\": \"<string>\",\n \"website\": \"<string>\",\n \"notes\": \"<string>\",\n \"phone_numbers\": [\n {\n \"number\": \"<string>\",\n \"country_code\": \"<string>\",\n \"extension\": \"<string>\"\n }\n ],\n \"company\": \"<string>\",\n \"title\": \"<string>\",\n \"priority\": 123,\n \"timezone\": \"<string>\",\n \"external_relations\": {},\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<unknown>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body"507f1f77bcf86cd799439011"{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Path Parameters
- id (required, string): Contact list ID returned from Create a List or Get All Contact Lists.
Request Body
| Field | Type | Required | Max Length | Description |
|---|---|---|---|---|
first_name | string | No | 200 | Contact’s first name |
last_name | string | No | 200 | Contact’s last name |
email | string | No | 320 | Contact’s email address |
phone_numbers | array | No | 10 items | Array of phone number objects |
company | string | No | 300 | Company name |
title | string | No | 300 | Job title |
linkedin | string | No | 500 | LinkedIn profile URL |
website | string | No | 500 | Website URL |
account | string | No | 500 | Account or organization identifier |
notes | string | No | 2,000 | Free-text notes about the contact |
priority | number | No | — | Contact priority (lower is higher priority) |
timezone | string | No | 100 | IANA timezone identifier (e.g. America/New_York) |
external_relations | object | No | — | External system references (e.g. CRM IDs) |
custom_fields | array | No | 10 items | Array of custom field objects. See Get Custom Fields to retrieve available fields for your team. |
Phone Number Object
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Phone number type: mobile, direct, or office |
number | string | Yes | Phone number in E.164 format (e.g. +14155552671) |
country_code | string | No | ISO 3166-1 alpha-2 country code (e.g. US) |
extension | string | No | Phone extension |
Custom Field Object
| Field | Type | Required | Max Length | Description |
|---|---|---|---|---|
type | string | Yes | — | Field data type: string, number, or boolean |
label | string | Yes | 100 | Display label for the field |
value | any | No | — | Field value (string, number, boolean, or string array) |
Example Request
{
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"company": "Acme Corp",
"title": "VP of Sales",
"phone_numbers": [
{
"type": "direct",
"number": "+14155552671"
}
],
"notes": "Interested in enterprise plan. Follow up after Q2.",
"custom_fields": [
{
"type": "string",
"label": "Industry",
"value": "SaaS"
},
{
"type": "number",
"label": "Employee Count",
"value": 250
},
{
"type": "boolean",
"label": "Decision Maker",
"value": true
}
]
}
Response (201)
Returns the contact list ID.Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings -> Connections & API. A missing or invalid key returns HTTP 403.
Path Parameters
Contact list ID to add the contact to, as returned by Create a List or List contact lists.
Body
Account or organization identifier
500Contact first name
200Contact last name
200LinkedIn profile URL
500Contact email address
320Website URL
500Free-text notes about the contact
2000Phone numbers (max 10 per contact)
10Show child attributes
Show child attributes
Company name
300Job title
300Contact priority (lower is higher priority)
IANA timezone identifier (e.g. America/New_York)
100External system references (e.g. CRM IDs)
Custom fields (max 10 per contact)
10Show child attributes
Show child attributes
Response
Contact added successfully
A 24-character hexadecimal identifier for a Salesfinity resource. Returned on its own by endpoints whose only result is the id of the record they created or affected.
^[0-9a-fA-F]{24}$"507f1f77bcf86cd799439011"