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

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

| Input | Type | POST | PATCH | Notes |
| :---- | :---- | ----: | ----: | :---- |
| `external_id` | Scalar string or `null` | Optional | Optional | External identifier. |
| `honorific` | Scalar string or `null` | Optional | Optional | Honorific. |
| `first_name` | Scalar string | Required by the model | Optional | Speaker first name. |
| `middle_name` | Scalar string or `null` | Optional | Optional | Middle name. |
| `last_name` | Scalar string or `null` | Optional | Optional | Last name. |
| `job_title` | Scalar string or `null` | Optional | Optional | Job title. |
| `company_name` | Scalar string or `null` | Optional | Optional | Company name. |
| `bio` | Raw JSON or string | Optional | Optional | DraftJS JSON or HTML/text. Sanitized and stored as DraftJS content. |
| `highlight_position` | Scalar number or `null` | Optional | Optional | Featured order. |
| `position` | Scalar number or `null` | Optional | Optional | Display order. |
| `custom_fields_attributes` | Raw array | Optional | Optional | Entries use `key` plus `value` or `values`. |
| `photo` | Raw string | Optional | Optional | HTTP(S) URL or base64 data URI. Blank on PATCH removes the current photo. |

Speaker assignments are not writable through this resource; manage them through the content-session `speaker_assignments` input.

## POST a speaker

```shell
curl --request POST \
  --url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/speakers" \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "external_id": "SPEAKER-42",
    "honorific": "Dr",
    "first_name": "Taylor",
    "last_name": "Ng",
    "job_title": "CEO",
    "company_name": "Example Ltd",
    "bio": "Taylor leads Example Ltd.",
    "highlight_position": 1,
    "position": 10,
    "custom_fields_attributes": [
      { "key": "linkedin_url", "value": "https://www.linkedin.com/in/example" }
    ],
    "photo": "https://example.com/taylor.jpg"
  }'
```

The response type is `speaker`. Useful write-response fields include `external_id`, `first_name`, `last_name`, `job_title`, `company_name`, `photo_url`, and `updated_at`.

## PATCH a speaker

```shell
curl --request PATCH \
  --url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/speakers/801" \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "job_title": "Founder and CEO",
    "bio": "Taylor founded and leads Example Ltd.",
    "highlight_position": 2
  }'
```
