Navigation

Add Profile to Contact

Attach enrichment or external profile data to a contact

POST /apis/v2/public/crm/addProfileToContact

Inserts a profile data record on a contact. Profile data is stored as flexible key-value pairs with a source label, making it ideal for enrichment data from external systems (e.g., LinkedIn data, OSINT results, third-party enrichment services).

Requires a valid `api_key` and `developer_secret` in the JSON request body. Requests must originate from a whitelisted IP address.

Parameters

Name In Type Required Description
api_key body string Yes Your Zyntro API key
developer_secret body string Yes Your developer secret (zdk_XXX). Issued during developer onboarding.
org_id body string Yes Your organization UUID
member_id body string Yes The member UUID. Must be the contact's owner.
contact_id body string Yes The UUID of the contact
profile_payload body object Yes A JSON object of key-value pairs representing the profile data. Keys and values can be anything relevant to the contact.
profile_source body string Yes A label describing where this profile data came from (e.g., "LinkedIn", "Clearbit", "Manual Research").

Request Body

Content-Type: application/json

Example

json
{
    "org_id": "YOUR_ORG_ID",
    "api_key": "YOUR_API_KEY",
    "member_id": "YOUR_MEMBER_ID",
    "contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "profile_source": "Clearbit Enrichment",
    "profile_payload": {
        "job_title": "VP of Marketing",
        "company_size": "200-500",
        "linkedin_url": "https://linkedin.com/in/janesmith",
        "funding_stage": "Series B",
        "technologies_used": [
            "HubSpot",
            "Salesforce",
            "Mailchimp"
        ]
    },
    "developer_secret": "YOUR_DEVELOPER_SECRET"
}

Code Samples

bash
curl -X POST https://app.zyntrohq.com/apis/v2/public/crm/addProfileToContact \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "developer_secret": "YOUR_DEVELOPER_SECRET",
    "org_id": "YOUR_ORG_ID",
    "member_id": "YOUR_MEMBER_ID",
    "contact_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "profile_payload": {
      "linkedin_url": "https://linkedin.com/in/janesmith",
      "job_title": "VP of Marketing"
    },
    "profile_source": "LinkedIn Scraper"
  }'
Tip: Profile data is additive — each call creates a new profile record. Multiple profile entries from different sources can coexist on the same contact, giving SI a richer picture for personalization decisions.

Response

200 Profile data added
json
{
    "data": {
        "profile_id": 142,
        "profile_source": "LinkedIn Scraper",
        "profile_payload": {
            "job_title": "VP of Marketing",
            "linkedin_url": "https://linkedin.com/in/janesmith"
        }
    },
    "status": "success"
}
200 Error response
json
{
    "data": [
        "Profile payload must be a valid array. The key/value pairing can be anything you like."
    ],
    "status": "error"
}

Errors

Code Message Resolution
MISSING_API_KEY Missing service instance
The `api_key` field is missing or empty.
Include your API key.
INVALID_API_KEY Invalid API Key
No active user matches the key.
Verify your key.
IP_NOT_WHITELISTED IP address not whitelisted
The request originated from an IP not in the key's allowed list.
Contact your client to add your IP to the developer key whitelist.
INVALID_DEVELOPER_SECRET Invalid developer_secret
The developer secret does not match any active key.
Verify your developer secret. If lost, have your client revoke and reissue the key.
MISSING_DEVELOPER_SECRET Missing developer_secret
The `developer_secret` field is missing or empty.
Include your developer secret in the request body. This is issued during developer onboarding.
MISSING_FIELDS Missing org ID / member ID / contact ID / profile_payload / profile_source
A required field is missing.
Include all required fields.
INVALID_PAYLOAD Profile payload must be a valid array. The key/value pairing can be anything you like.
The `profile_payload` is not a valid JSON object or array.
Send a properly formatted JSON object.
NOT_FOUND Contact does not exist
No contact with that ID exists.
Verify the contact_id.
NOT_OWNER The API only supports notes being added by the member that owns the contact.
The member_id does not match the contact's owner.
Use the contact owner's member ID.

Was this article helpful?

NotebookLM Overviews