You have your Location ID and API key. Let’s make a real call.
This retrieves the first 5 contacts in your account — a simple read operation that confirms everything is working.
curl -X GET "https://services.leadconnectorhq.com/contacts/?locationId=YOUR_LOCATION_ID&limit=5" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Version: 2021-07-28"
const response = await fetch(
'https://services.leadconnectorhq.com/contacts/?locationId=YOUR_LOCATION_ID&limit=5',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Version': '2021-07-28'
}
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.get(
'https://services.leadconnectorhq.com/contacts/',
params={'locationId': 'YOUR_LOCATION_ID', 'limit': 5},
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Version': '2021-07-28'
}
)
print(response.json())
What you get back
{
"contacts": [
{
"id": "abc123",
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+15551234567",
"tags": ["lead", "website-visitor"],
"dateAdded": "2025-01-15T10:30:00.000Z"
}
],
"meta": {
"total": 142,
"currentPage": 1,
"nextPage": 2
}
}
The meta object tells you the total number of matching records and how to paginate. See Making Requests for pagination details.
Common errors
| Status | Meaning | Fix |
|---|
401 Unauthorized | Missing or invalid token | Check your Authorization: Bearer header |
403 Forbidden | Token lacks the required scope | Go to Private Integrations and add the Contacts (Read) scope |
422 Unprocessable | Missing required field | Check the API reference for required parameters |
429 Too Many Requests | Rate limit hit | Back off and retry — max 100 requests / 10 seconds |
Once reads work, try a write:
curl -X POST "https://services.leadconnectorhq.com/contacts/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Version: 2021-07-28" \
-H "Content-Type: application/json" \
-d '{
"locationId": "YOUR_LOCATION_ID",
"firstName": "Test",
"lastName": "Contact",
"email": "test@example.com"
}'
What’s next
Last modified on March 6, 2026