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.

    Endpoint

    POST https://api.outreachmagic.io/v1/events

    Headers

    • 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 Guide

    What 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

    1. unified_lead_id
    2. lead_email
    3. lead_linkedin_url
    4. lead_sales_navigator_url
    5. lead_linkedin_id

    Company Matching Priority

    1. unified_company_id
    2. company_domain
    3. company_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-key header
    • • 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.