ReactIn APIs

Update leads via API

Need to change a lead's data after it was added? The Update Lead API lets you patch an existing lead in place, email, name, company, or custom variables, without creating a duplicate.

2 min read

Already added a lead and need to change its data later, fix a typo, attach a fresh custom variable, or push an updated email from your CRM? The Update Lead API lets you patch an existing lead in place, without creating a duplicate.

βœ… What you'll need before you start

Before using this API, make sure you have:

  1. Your Organization ID, List ID, and API Key

  2. The lead's id you want to update, or the linkedinUrl you imported it with

πŸ“˜ πŸ‘‰ Not sure how to get your API credentials? Follow this guide

πŸ’‘ You get a lead's id from the Get Leads endpoint (the id field on each lead), or from the response of the Add Lead call.


πŸ”— API Endpoint

Send a PATCH request to this endpoint to update a lead:

PATCH https://app.reactin.io/api/[organizationId]/lists/[listId]/leads

πŸ” Authentication & Headers

HeaderValueDescription
AuthorizationYOUR_API_KEYYour secret API key from ReactIn
Content-Typeapplication/jsonRequired for all requests

πŸ”’ Keep your API key private and only use it from secure backend code, never from the browser.


🧾 What to include in your request (Body)

Identify the lead with either leadId or linkedinUrl. Every other field is optional, send just the ones you want to change. This is a true partial update: fields you omit are left untouched.

FieldRequiredDescription
leadIdYes*The id of the lead you want to update (*or linkedinUrl)
emailOptionalNew email
firstNameOptionalNew first name
lastNameOptionalNew last name
linkedinUrlYes*With leadId: the new LinkedIn profile URL. Without leadId: the LinkedIn URL of the lead to update (*required if no leadId)
companyNameOptionalNew company name
customVariable1-5OptionalAny custom variable to add or overwrite

πŸ”— Update by LinkedIn URL: when leadId is omitted, ReactIn looks the lead up in the list by its linkedinUrl (www. and trailing slash don't matter). Handy to fix a variable you got wrong on import: resend the same linkedinUrl with the corrected fields. If several leads of the list match that URL, the call fails with 409, use leadId instead.

⚠️ Updating a lead resets its enrichment status, so ReactIn will try to auto-enrich it again with the new data. It also fires the LEAD_UPDATED webhook if you have one connected.


πŸ§ͺ Example (JavaScript)

await fetch("https://app.reactin.io/api/[organizationId]/lists/[listId]/leads", {
  method: "PATCH",
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    leadId: 'lead_a1b2c3',
    email: 'john.doe@newcompany.com',
    companyName: 'New Company',
    customVariable1: 'Renewed'
  })
});

Or, without the leadId:

await fetch("https://app.reactin.io/api/[organizationId]/lists/[listId]/leads", {
  method: "PATCH",
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    linkedinUrl: 'https://www.linkedin.com/in/johndoe/',
    customVariable1: 'Corrected icebreaker'
  })
});

🧾 Response format

{
  "success": true,
  "id": "lead_a1b2c3"
}

🚫 Common Errors

CodeDescription
400Bad request, neither leadId nor linkedinUrl is provided
401Unauthorized, invalid or missing API key
404Not found, the list or the lead doesn't exist in your organization
409Conflict, several leads of the list match this linkedinUrl, use leadId
429Too many requests, rate limit exceeded
500Internal server error, try again later

πŸ’‘ Best Practices

  • πŸ”Ž Fetch the lead's id from the Get Leads endpoint before updating

  • βœ‚οΈ Only send the fields you actually want to change

  • πŸ” Keep your API key private, use a backend server or proxy

  • πŸ” Add retry logic for occasional network or server errors


πŸ’‘ Pro tip: Because updates re-trigger enrichment, batching several changes into a single PATCH is cheaper than sending one request per field.