---
title: "Update a lead (PUT)"
method: PUT
path: "/leads/{identifier}"
tags: ["Leads"]
---

# Update a lead (PUT)

`PUT /leads/{identifier}`

## 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`

Alias for PATCH /leads/{identifier}

## Path parameters

- `identifier` string, required

## Query parameters

- `by` 'slug' | 'id' | 'email' | 'company_name' | 'external'
- `external_system_type` string
- `external_object_type` string

## Request body

- … (unresolved $ref); see the full OpenAPI document linked below

## Response `200`

Lead updated

- object
  - `lead` Lead
    - `slug` string
    - `status` 'open' | 'accepted' | 'qualified' | 'closed_won' | 'closed_lost' | 'rejected' | 'churned' | 'expired'
    - `source_type` string, nullable
    - `company_name` string, nullable
    - `contact_name` string, nullable
    - `email` string, nullable
    - `partner_slug` string, nullable
    - `partner_lasso_key` string, nullable: The partner's Lasso Partner Key, the value to send back as `partner_lasso_key`.
    - `partner_member` object, nullable: The partner contact this referral is attributed to, if any.
      - `slug` string
      - `full_name` string, nullable
      - `email` string, nullable
    - `rewards` object[]: The rewards copied onto this referral from the partner's plan. Empty until the referral is accepted. `payee_type` says who each reward is owed to, so you can confirm a partner-contact reward actually landed rather than being skipped for want of a contact.
      - `name` string, nullable
      - `reward_type` string
      - `amount` string
      - `amount_type` string
      - `currency` string
      - `payee_type` 'partner' | 'partner_user'
    - `amount` string: Deal amount.
    - `currency_code` string
    - `expected_close_date` string, date, nullable
    - `co_sold` boolean
    - `deleted_at` string, date-time, nullable
    - `expires_at` string, date-time, nullable
    - `billing_start_date` string, date: The date this referral's billing starts from, after any override is applied.
    - `billing_start_date_override` string, date, nullable: The override set with `billing_start_date` on update, or null when the date is derived from your billing settings.
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `warnings` object[]: Non-fatal problems with a request that otherwise succeeded. The write happened, but something you asked for was not applied, or the referral will earn less than you may expect. Absent when there is nothing to report. Worth logging: these are the cases that are otherwise only visible as a missing commission weeks later. Messages are prefixed with a stable code: | Code | Returned by | Meaning | |------|-------------|---------| | `SKIPPED_REWARDS` | `POST /leads` (201) | Some rewards on the partner's plan pay the partner contact, and no contact was supplied, so those rewards were not applied. | | `STATUS_NOT_APPLIED` | `POST /leads` (201) | The referral was created, but the requested `status` could not be applied. It stays in the status the message names; finish with `PUT /leads/{identifier}`. | | `EXISTING_REFERRAL_NOT_UPDATED` | `POST /leads` (200) | A referral already carried the CRM record you sent and was returned unchanged. The message lists the fields from your request that were not applied. | | `REWARD_ATTRIBUTION_UNCHANGED` | `PATCH`/`PUT /leads/{identifier}` (200) | The referral was reassigned to another partner contact, but rewards already calculated still pay the previous contact. |
    - `field` string
    - `message` string

## Other responses

- `400`: `status` was sent; use the `mark_as_*` flags on update
- `401`: Missing or invalid API key
- `403`: API key lacks required permission
- `404`: Resource not found
- `422`: The update was refused and nothing was changed: two status changes in one call, a status change not available from the current status, `remove_rewards` on a referral with a finalized or paid invoice (`invoice_locked`), an invalid `billing_start_date`, or another validation error.
- `429`: Rate limit exceeded. Wait the number of seconds in `Retry-After`, then retry.

---

[API](https://skmtc.dev/onelasso/apis/lasso-rest-api.md) · [All operations](https://skmtc.dev/onelasso/apis/lasso-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/onelasso/apis/lasso-rest-api/revisions/bbc328f5e2d1?raw)
