Outreach Magic API – update_attributes
Upsert Lead and Company attributes with a single API call. Send one update object or a batch array.
Use this API to sync enriched data from tools like Clay, Apollo, ZoomInfo, Clearbit, Lusha, and more into Outreach Magic.
Platforms like HeyReach, Prosp, Aimfox and other LinkedIn automation tools automatically send rich attributes into Outreach Magic, including:
- LinkedIn profile URL
- LinkedIn Sales Navigator URL
- LinkedIn ID
- LinkedIn headline
- LinkedIn job title
- LinkedIn bio/about section
These fields are automatically mapped without needing this API call.
You only need update_attributes if:
- you want to override these values
- you want to add additional enrichment from tools like Clay, Apollo, ZoomInfo, Clearbit, Lusha, etc.
- you want to populate workspace-wide attributes like:
import_namelist_sourceexclusion_reasonicp
Workspace attributes require the correct workspace_id in the request.
Endpoint
POST https://api.outreachmagic.io/v1/eventsHeaders
- •
x-api-key: {{YOUR_API_KEY}} - •
content-type: application/json
Get your API key from the API settings in Outreach Magic.
Use Clay?
If you're using Clay, check out our dedicated Clay integration guide which includes a ready-to-use Clay Starter Pack:
View Clay Integration GuideWhat This Call Does
Send data from your automation platform to update lead, company, and workspace attributes in Outreach Magic.
You can update:
Lead Attributes
Matched by:
- •
unified_lead_id - •
lead_email - •
lead_linkedin_url - •
lead_sales_navigator_url - •
lead_linkedin_id
Note: Use any of these fields for matching. More identifiers = better matching across platforms.
Company Attributes
Matched by:
- •
unified_company_id - •
company_domain - •
company_linkedin_url
Note: Use any of these fields for matching. More identifiers = better matching across platforms.
Workspace Attributes
Requires workspace_id:
- •
import_name - •
list_source - •
exclusion_reason - •
icp - •
tags - •
lead_status
LinkedIn Connection Level
Set the connection level (1st, 2nd, or 3rd degree) between a sender and lead.
Required:
- •
sender: LinkedIn profile URL - •
linkedin_connection_level:"1","2", or"3" - • At least one lead identifier
Code Examples
Minimal Request (Single)
A simple example showing how to update basic lead and company attributes.
{
"event": "update_attributes",
"platform": "clay",
"workspace_id": "65f1a2b3c4d5e6f7890a1b2c",
"lead_email": "jane.doe@example.com",
"company_domain": "example.co",
"lead_first_name": "Jane",
"company_name": "Example Co"
}Batch Request (Multiple)
Send multiple updates in a single API call by sending an array of update objects.
[
{
"event": "update_attributes",
"platform": "clay",
"workspace_id": "65f1a2b3c4d5e6f7890a1b2c",
"lead_email": "jane.doe@example.com",
"company_domain": "example.co",
"lead_first_name": "Jane",
"company_name": "Example Co"
},
{
"event": "update_attributes",
"platform": "clay",
"workspace_id": "65f1a2b3c4d5e6f7890a1b2c",
"lead_email": "alex.lee@example.com",
"company_domain": "sample.io",
"lead_first_name": "Alex",
"company_name": "Sample IO"
}
]Full Example – All Fields
JSONC (commented)
{
"event": "update_attributes",
"platform": "clay",
// Workspace-wide attributes
// REQUIRED: workspace_id if any of these are included
"workspace_id": "65f1a2b3c4d5e6f7890a1b2c",
"import_name": "Sample Import - ICP 1",
"list_source": "apollo",
"exclusion_reason": "existing_customer",
"icp": "ICP 1",
// Lead identifiers
// LinkedIn automation tools (HeyReach, Prosp) usually provide ALL of these automatically:
"unified_lead_id": "65f1a2b3c4d5e6f7890a1d3e",
"lead_email": "jane.doe@example.com",
"lead_linkedin_url": "https://www.linkedin.com/in/sample-profile/",
"lead_sales_navigator_url": "https://www.linkedin.com/sales/people/1234567890",
"lead_linkedin_id": "sample-linkedin-id",
// Lead attributes (optional enrichment or overrides)
"lead_first_name": "Jane",
"lead_last_name": "Doe",
"lead_full_name": "Jane Doe",
"lead_country": "United States",
"lead_job_title": "Head of Operations",
"lead_seniority": "director",
"lead_function": "Operations",
"lead_linkedin_headline": "Ops leader focused on scalable systems",
"lead_reporting_location": "United States",
// Company identifiers
"unified_company_id": "65f1a2b3c4d5e6f7890a1e4f",
"company_domain": "example.co",
"company_linkedin_url": "https://www.linkedin.com/company/example-co/",
// Company attributes
"company_name": "Example Co",
"company_country": "United States",
"company_employee_range": "51–200 employees",
"company_industry": "Software",
"company_description": "Sample description",
"company_employee_count": "123",
// Normalized overrides
"company_normalized_name": "ExampleCo",
"company_normalized_industry": "Software & Services"
}Pure JSON (tool-ready)
{
"event": "update_attributes",
"platform": "clay",
"workspace_id": "65f1a2b3c4d5e6f7890a1b2c",
"import_name": "Sample Import - ICP 1",
"list_source": "apollo",
"exclusion_reason": "existing_customer",
"icp": "ICP 1",
"unified_lead_id": "65f1a2b3c4d5e6f7890a1d3e",
"lead_email": "jane.doe@example.com",
"lead_linkedin_url": "https://www.linkedin.com/in/sample-profile/",
"lead_sales_navigator_url": "https://www.linkedin.com/sales/people/1234567890",
"lead_linkedin_id": "sample-linkedin-id",
"lead_first_name": "Jane",
"lead_last_name": "Doe",
"lead_full_name": "Jane Doe",
"lead_country": "United States",
"lead_job_title": "Head of Operations",
"lead_seniority": "director",
"lead_function": "Operations",
"lead_linkedin_headline": "Ops leader focused on scalable systems",
"lead_reporting_location": "United States",
"unified_company_id": "65f1a2b3c4d5e6f7890a1e4f",
"company_domain": "example.co",
"company_linkedin_url": "https://www.linkedin.com/company/example-co/",
"company_name": "Example Co",
"company_country": "United States",
"company_employee_range": "51-200 employees",
"company_industry": "Software",
"company_description": "Sample description",
"company_employee_count": "123",
"company_normalized_name": "ExampleCo",
"company_normalized_industry": "Software & Services"
}Responses
Success
{
"errors": { "count": 0, "details": [] },
"success": 1,
"total": 1
}Invalid API Key
{
"error": "Invalid API key provided"
}Validation Error
{
"errors": {
"count": 1,
"details": [
{
"index": 0,
"error": [
{
"msg": "Value error: workspace_id is required if any of ['import_name','list_source','exclusion_reason','icp'] is present",
"type": "value_error"
}
]
}
]
},
"success": 0,
"total": 1
}Rules & Matching Behavior
Workspace-Wide Attributes
Require workspace_id whenever using:
- •
import_name - •
list_source - •
exclusion_reason - •
icp
Lead Matching Priority
unified_lead_idlead_emaillead_linkedin_urllead_sales_navigator_urllead_linkedin_id
Company Matching Priority
unified_company_idcompany_domaincompany_linkedin_url
Field Reference
Core
- •
event(required) - •
platform(optional)
Workspace-Wide Attributes
- •
workspace_id(required when using the fields below) - •
import_name - •
list_source - •
exclusion_reason - •
icp
Lead Identification
- •
email - •
LinkedIn URL - •
Sales Navigator URL - •
LinkedIn ID - •
unified_lead_id
Lead Attributes
- • name fields
- • title
- • seniority
- • function
- • headline
- • reporting location
- • LinkedIn fields are auto-populated when using HeyReach or Prosp
Company Fields
- • domain
- • LinkedIn URL
- • employee count
- • industry
- • description, etc.
Clay / Postman Notes
- • Use pure JSON
- • Must include your real API key in the
x-api-keyheader - • Batch requests must be an array
- • Content-Type header must be
application/json
Ready to get started?
Connect your automation platform (n8n, custom solutions, etc.) to Outreach Magic and start enriching your outreach data.