Update a lead
Update a referral's details or move it to another status. Lookup by slug (default), id, email, company_name, or external ID using the ?by= query param. Requires partners_edit, and payment_write as well when remove_rewards is true.
Only the fields you send are changed. Fields this endpoint does not list are ignored, with one exception: status is refused with a 400, because it is create-only. Use the mark_as_* flags instead. Blank company_name, contact_name or email values are ignored.
Status changes
Only one status change can be requested per call; sending two is a 422. A change that is not available from the referral's current status is a 422 (Cannot transition lead from <status> via <event>). Marking an already closed_lost referral as closed lost succeeds without doing anything, so a retry is safe.
| Flag | Allowed when the referral is |
|---|---|
| mark_as_accepted | open, rejected, closed_lost |
| mark_as_qualified | open, accepted |
| mark_as_closed_won | accepted, qualified |
| mark_as_closed_lost | any status except closed_lost (where it is a no-op) |
| mark_as_rejected | any status |
| mark_as_churned | qualified, closed_won |
| mark_as_expired | open, accepted, qualified |
| mark_as_revived (deprecated) | rejected, churned, expired |
mark_as_revived is deprecated and kept only for existing integrations; new integrations should avoid it.
A mark_as_* flag, like remove_rewards, is on only when sent as true (or the string "true", "1" or "yes", for form-encoded callers). Any other value, including false, "false" and "0", leaves it off and does not count toward the one-change limit.
Removing rewards
remove_rewards removes every reward on the referral and voids their draft and payment-ready invoices, so it requires payment_write in addition to partners_edit. A key without it gets a 403 and nothing in the request is applied. If any reward has a finalized or paid invoice, nothing in the request is applied and the call is a 422 with code invoice_locked, the same refusal DELETE /leads/{lead_identifier}/rewards/{id} gives. Void or reverse those invoices first.
Reassigning the partner contact
Send one partner_member_* selector to attribute the referral to a different contact at the same partner. Rewards already calculated keep paying the contact they were calculated for; the response carries a REWARD_ATTRIBUTION_UNCHANGED warning when that is the case.
Request
- Base URL: https://api.lassotech.com/api/v1/rest
- URL: https://api.lassotech.com/api/v1/rest/leads/{identifier}
- Auth: API key in header x-lasso-access-token
Path parameters
Lead identifier (slug by default, or value matching by param)
Query parameters
How to read the referral identifier in the path. See Resource Lookup.
Required when by=external. e.g. HUBSPOT, SALESFORCE, PIPEDRIVE
Required when by=external (optional for a Salesforce partner). e.g. company, deal, opportunity, account
Request body
Example request
{
"partner_member_slug": "PC-A1B2C3",
"billing_start_date": "2026-10-01"
}Response
Lead updated
Example response
{
"lead": {
"slug": "abc-123",
"source_type": "referral_link",
"company_name": "Lead Company",
"contact_name": "Jane Doe",
"email": "jane@leadco.com",
"partner_slug": "acme-corp",
"partner_lasso_key": "P-A1B2C3",
"partner_member": {
"slug": "PC-A1B2C3"
},
"currency_code": "USD",
"billing_start_date": "2026-10-01"
},
"warnings": [
{
"field": "partner_member",
"message": "SKIPPED_REWARDS: Referral Bonus pays the partner contact and no partner contact was supplied, so it was not applied to this referral."
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.