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 guide for sending data from Clay to Outreach Magic (includes a ready-to-use Clay Starter Pack). To check if a contact already exists in your database before updating or enriching (and save credits), use the Check Existing Contacts Before Enrichment 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.