---
title: "Leads"
description: "Create and update leads with complete curl request examples."
lastModified: "2026-08-25"
---

**Collection path:** `events/{event_id}/leads`

| Input | Type | POST | PATCH | Notes |
| :---- | :---- | ----: | ----: | :---- |
| `sponsor_id` | Scalar ID | Required unless exactly one sponsor is injected by a row restriction | Optional | POST creates ownership for one sponsor. PATCH replaces all ownerships for an unrestricted scope, or only the visible restricted ownership set for a restricted scope. |
| `registrant_id` | Scalar ID | Required for a successful create | Optional | Target registrant; must belong to the event. |
| `created_by_registrant_id` | Scalar ID | Optional | Optional for unrestricted scopes | Creator/scanner registrant. Sponsor-restricted scopes cannot change it on PATCH. |
| `notes` | Scalar string or `null` | Optional | Optional | Lead notes. |
| `custom_fields_attributes` | Raw array | Ignored | Optional | Lead-scan answers are processed only on PATCH. |

The wrapper enforces event boundaries for the target registrant, optional creator, sponsor, and lead-scan answers. The scope's sponsor row restriction also limits which existing leads can be patched.

## POST a lead

```shell
curl --request POST \
  --url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/leads" \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "sponsor_id": 103705,
    "registrant_id": 1201,
    "created_by_registrant_id": 1301,
    "notes": "Requested pricing information"
  }'
```

On a scope restricted to exactly one sponsor, `sponsor_id` may be omitted and that sponsor is injected. A scope restricted to one or more sponsors cannot create a lead for a sponsor outside the restricted set.

The response type is `lead`. Useful write-response fields include `event_id`, `sponsor_ids`, `registrant_id`, `created_by_registrant_id`, `notes`, and `updated_at`.

## PATCH a lead

This example updates notes and saves lead-scan answers. Each answer identifies the sponsor and question definition that own the answer.

```shell
curl --request PATCH \
  --url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/leads/3898" \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "notes": "Requested pricing and a Q4 follow-up",
    "custom_fields_attributes": [
      {
        "sponsor_id": 103705,
        "question_id": 901,
        "values": ["Q4"]
      }
    ]
  }'
```

An unrestricted scope may reassign `created_by_registrant_id`; a sponsor-restricted scope receives `404` for that reattribution attempt. A lead created without a creator can legitimately return `created-by-registrant-id: null`.
