curl --request GET \
--url https://my.jobin.cloud/api/openapi/v1/contacts \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://my.jobin.cloud/api/openapi/v1/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://my.jobin.cloud/api/openapi/v1/contacts"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$response = Invoke-WebRequest -Uri 'https://my.jobin.cloud/api/openapi/v1/contacts' -Method GET -Headers $headers{
"items": [
{
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"firstName": "<string>",
"middleName": "<string>",
"lastName": "<string>",
"workEmail": "<string>",
"privateEmail": "<string>",
"otherEmails": [
"<string>"
],
"workPhone": "<string>",
"privatePhone": "<string>",
"otherPhones": [
"<string>"
],
"workMobilePhone": "<string>",
"privateMobilePhone": "<string>",
"otherMobilePhones": [
"<string>"
],
"socialUrls": [
"<string>"
],
"currentTitle": "<string>",
"currentCompany": "<string>",
"currentCompanyFrom": "2023-11-07T05:31:56Z",
"currentCompanyTo": "2023-11-07T05:31:56Z",
"currentCompanyTenureYears": 123,
"currentCompanyUrl": "<string>",
"currentCompanySocialUrl": "<string>",
"location": {
"fullAddress": "<string>",
"address": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"postalCode": "<string>"
},
"industry": "<string>",
"seniority": "<string>",
"managementLevel": "<string>",
"previousTitle": "<string>",
"previousCompany": "<string>",
"previousCompanySocialUrl": "<string>",
"headline": "<string>",
"summary": "<string>",
"openProfile": true,
"openToWork": true,
"connectionLevels": [
{
"jobinUser": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>"
},
"connectionLevel": "1st"
}
],
"currentCampaign": {
"campaignId": "<string>",
"stagePositionCode": "<string>"
},
"tags": [
{
"_id": "<string>",
"value": "<string>",
"iconName": "<string>",
"color": "<string>"
}
],
"skills": [
{
"value": "<string>",
"skillType": "<string>",
"level": 123,
"topSkill": true
}
],
"education": [
{
"school": "<string>",
"schoolSocialUrl": "<string>",
"degreeLevel": "<string>",
"degrees": [
"<string>"
],
"fieldOfStudy": "<string>",
"majors": [
"<string>"
],
"minors": [
"<string>"
],
"period": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"isCurrent": true
}
}
],
"experiences": [
{
"title": "<string>",
"company": "<string>",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"isCurrent": true,
"location": {
"fullAddress": "<string>",
"address": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"postalCode": "<string>"
},
"employmentType": "<string>",
"description": "<string>"
}
],
"languages": [
{
"value": "<string>",
"level": 123,
"note": "<string>"
}
],
"volunteering": [
{
"roleTitle": "<string>",
"organization": {
"name": "<string>",
"socialUrl": "<string>",
"companyWebsite": "<string>",
"employeeCountRange": "<string>"
},
"cause": "<string>",
"description": "<string>",
"location": {
"fullAddress": "<string>",
"address": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"postalCode": "<string>"
},
"period": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"isCurrent": true
}
}
],
"accomplishments": [
{
"value": "<string>",
"type": "<string>",
"issuer": "<string>",
"description": "<string>",
"date": "2023-11-07T05:31:56Z",
"organization": {
"name": "<string>",
"socialUrl": "<string>",
"companyWebsite": "<string>",
"employeeCountRange": "<string>"
}
}
],
"customFieldList": [
{
"_id": "<string>",
"fieldName": "<string>",
"value": "<string>"
}
],
"source": "<string>",
"sourceType": "<string>",
"unsubscribed": true
}
],
"page": 123,
"limit": 123,
"nextCursor": "<string>",
"total": 123
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "<string>",
"retryAfterSeconds": 123
}List Contacts
List Jobin contacts with paging and filters for email, social URL, campaign membership, tags, role title, and current-company tenure.
curl --request GET \
--url https://my.jobin.cloud/api/openapi/v1/contacts \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://my.jobin.cloud/api/openapi/v1/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://my.jobin.cloud/api/openapi/v1/contacts"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$response = Invoke-WebRequest -Uri 'https://my.jobin.cloud/api/openapi/v1/contacts' -Method GET -Headers $headers{
"items": [
{
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"firstName": "<string>",
"middleName": "<string>",
"lastName": "<string>",
"workEmail": "<string>",
"privateEmail": "<string>",
"otherEmails": [
"<string>"
],
"workPhone": "<string>",
"privatePhone": "<string>",
"otherPhones": [
"<string>"
],
"workMobilePhone": "<string>",
"privateMobilePhone": "<string>",
"otherMobilePhones": [
"<string>"
],
"socialUrls": [
"<string>"
],
"currentTitle": "<string>",
"currentCompany": "<string>",
"currentCompanyFrom": "2023-11-07T05:31:56Z",
"currentCompanyTo": "2023-11-07T05:31:56Z",
"currentCompanyTenureYears": 123,
"currentCompanyUrl": "<string>",
"currentCompanySocialUrl": "<string>",
"location": {
"fullAddress": "<string>",
"address": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"postalCode": "<string>"
},
"industry": "<string>",
"seniority": "<string>",
"managementLevel": "<string>",
"previousTitle": "<string>",
"previousCompany": "<string>",
"previousCompanySocialUrl": "<string>",
"headline": "<string>",
"summary": "<string>",
"openProfile": true,
"openToWork": true,
"connectionLevels": [
{
"jobinUser": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>"
},
"connectionLevel": "1st"
}
],
"currentCampaign": {
"campaignId": "<string>",
"stagePositionCode": "<string>"
},
"tags": [
{
"_id": "<string>",
"value": "<string>",
"iconName": "<string>",
"color": "<string>"
}
],
"skills": [
{
"value": "<string>",
"skillType": "<string>",
"level": 123,
"topSkill": true
}
],
"education": [
{
"school": "<string>",
"schoolSocialUrl": "<string>",
"degreeLevel": "<string>",
"degrees": [
"<string>"
],
"fieldOfStudy": "<string>",
"majors": [
"<string>"
],
"minors": [
"<string>"
],
"period": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"isCurrent": true
}
}
],
"experiences": [
{
"title": "<string>",
"company": "<string>",
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"isCurrent": true,
"location": {
"fullAddress": "<string>",
"address": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"postalCode": "<string>"
},
"employmentType": "<string>",
"description": "<string>"
}
],
"languages": [
{
"value": "<string>",
"level": 123,
"note": "<string>"
}
],
"volunteering": [
{
"roleTitle": "<string>",
"organization": {
"name": "<string>",
"socialUrl": "<string>",
"companyWebsite": "<string>",
"employeeCountRange": "<string>"
},
"cause": "<string>",
"description": "<string>",
"location": {
"fullAddress": "<string>",
"address": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"postalCode": "<string>"
},
"period": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z",
"isCurrent": true
}
}
],
"accomplishments": [
{
"value": "<string>",
"type": "<string>",
"issuer": "<string>",
"description": "<string>",
"date": "2023-11-07T05:31:56Z",
"organization": {
"name": "<string>",
"socialUrl": "<string>",
"companyWebsite": "<string>",
"employeeCountRange": "<string>"
}
}
],
"customFieldList": [
{
"_id": "<string>",
"fieldName": "<string>",
"value": "<string>"
}
],
"source": "<string>",
"sourceType": "<string>",
"unsubscribed": true
}
],
"page": 123,
"limit": 123,
"nextCursor": "<string>",
"total": 123
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "<string>",
"retryAfterSeconds": 123
}contactId before enrichment or campaign assignment.
Use minYearsInCurrentRole and maxYearsInCurrentRole when your sourcing rule depends on tenure or years at the current company. For example, pass maxYearsInCurrentRole=10 to avoid candidates who have been at their current company for more than ten years.
page is capped at 100. For result sets beyond page 100, continue with cursor pagination: read nextCursor from the response and pass it back as the cursor query parameter on the next request.
includeTotal defaults to false and should be used sparingly. Returning the page itself is cheaper than calculating the full matching count, so requests with includeTotal=true have a stricter 60 requests/minute budget and can take longer to finish. Leave it off unless your integration actually needs the total.Authorizations
Primary public authentication method. Create keys in Jobin.cloud under Workgroups > Integrations > Custom integration.
Query Parameters
Filter contacts by work, private, or other email.
320Search contacts by structured first-name value. This uses the indexed contact search path and is more selective than legacy full-name matching.
2 - 256Search contacts by structured last-name value. Combine with firstName when both values are known for the most selective contact lookup.
2 - 256Search contacts by work, private, mobile, or other phone number fields. The endpoint matches exact stored values, normalized E.164 variants when derivable, and digit-only partials. Pass the most specific number available; the value must contain at least 6 digits.
6 - 64Filter contacts by profile URL or identifier.
2048Filter contacts assigned to a campaign/sequence.
^[a-fA-F0-9]{24}$Filter contacts by one or more tag ids. Repeat the parameter or pass comma-separated ids. Contacts matching any supplied tag are returned.
50^[a-fA-F0-9]{24}$Filter contacts by current or previous role title text.
2 - 256Filter contacts by city. Matches the contact's person location and role-level location fallback fields.
2 - 256Filter contacts by state, province, county, or region. Matches the contact's person location and role-level location fallback fields.
2 - 256Filter contacts by country name. Matches the contact's person location and role-level location fallback fields.
2 - 256Filter contacts by two-letter ISO country code, for example IT or US.
2Minimum current-company tenure in years. Recruiters often call this tenure or years at current company.
0 <= x <= 80Maximum current-company tenure in years. Use 10 to exclude candidates who have been at the current company for more than ten years.
0 <= x <= 80Opaque cursor returned as nextCursor from a previous list response. Use this to continue beyond page 100.
512When true, include the matching contact count. The default is false, so ordinary list requests omit the count. Counting is more expensive than returning the page itself, so requests with includeTotal use a stricter 60 requests/minute limit and can take longer to complete. Only enable it when your integration actually uses the count.
One-based result page. Page-number pagination is capped at 100; use nextCursor as the cursor query parameter to continue beyond page 100.
1 <= x <= 100Maximum contacts to return per page.
1 <= x <= 100