# Accelevents Speaker Sync

> Use when website speaker, session, schedule, room, track, or headshot changes must be synchronized back to Accelevents for AI Engineer Europe 2026.

- Skill: `swyxio/accelevents-speaker-sync` (Agent Skill)
- Install (CLI): `npx skillmds@latest add swyxio/accelevents-speaker-sync`
- Raw SKILL.md: https://api.skillmd.com/api/skills/swyxio/accelevents-speaker-sync/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: swyxio (https://skillmd.com/u/swyxio)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/swyxio/accelevents-speaker-sync

---


# Accelevents Speaker & Session Sync

Whenever you update speaker data OR session/schedule details on the website, you MUST also push those changes to the corresponding profiles and sessions in Accelevents.

## When This Applies

### Speaker changes
- Adding or replacing a speaker photo
- Updating speaker name, role, company, bio, or social links
- Any change to `src/pages/europe/source/schedule.json` that affects speaker metadata

### Session/schedule changes
- Changing session start time, end time, or day
- Changing session room, track, or format
- Updating a session/talk title
- Moving a speaker to a different session slot

## Accelevents API Details

- **API base**: `https://api.accelevents.com`
- **Event URL**: `ai-engineer-europe-2026`
- **Auth for READ operations**: `Authorization: Bearer $ACCELEVENTS_API_KEY`
- **Auth for WRITE operations (PUT/POST)**: `Key: $ACCELEVENTS_API_KEY` header

## Speaker Update Workflow

### 1. Find the speaker's Accelevents ID

Look up `acceleventsSpeakerId` in `src/pages/europe/source/schedule.json` for the speaker you're updating.

Or search by name:
```bash
curl -s -H "Authorization: Bearer $ACCELEVENTS_API_KEY" \
  "https://api.accelevents.com/rest/host/event/ai-engineer-europe-2026/speaker?searchString=SPEAKER_NAME&page=0&size=10&expand=TAG"
```

### 2. Upload a new photo (if photo changed)

Upload the image file (must be under 2MB):
```bash
curl -s -X POST \
  -H "Authorization: Bearer $ACCELEVENTS_API_KEY" \
  -F "file=@/path/to/photo.jpg" \
  "https://api.accelevents.com/rest/event/upload/image"
```

This returns `{"type": "Success", "message": "<image-uuid>"}`. Save the `message` value as the image UUID.

### 3. Update the speaker profile

Use PUT with the `Key` header (NOT `Authorization: Bearer`) for write operations:
```bash
curl -s -X PUT \
  -H "Key: $ACCELEVENTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"speakerId": SPEAKER_ID, "firstName": "First", "lastName": "Last", "email": "email@example.com", "imageUrl": "<image-uuid>"}' \
  "https://api.accelevents.com/rest/host/event/ai-engineer-europe-2026/speaker/SPEAKER_ID"
```

Important notes:
- Use the `Key` header (not `Authorization: Bearer`) for PUT/write operations
- Use flat JSON body (do NOT wrap in a `speakerDTO` object)
- Include `email` in the body — it is required
- Include `speakerId`, `firstName`, `lastName` to avoid clearing existing data

### 4. Verify the update

Fetch the speaker again to confirm the change took effect:
```bash
curl -s -H "Authorization: Bearer $ACCELEVENTS_API_KEY" \
  "https://api.accelevents.com/rest/host/event/ai-engineer-europe-2026/speaker?searchString=SPEAKER_NAME&page=0&size=10&expand=TAG"
```

## Session/Schedule Update Workflow

### 1. Find the session in Accelevents

List all sessions to find the one you need to update:
```bash
curl -s -H "Authorization: Bearer $ACCELEVENTS_API_KEY" \
  "https://api.accelevents.com/rest/events/ai-engineer-europe-2026/session?page=0&size=100&expand=SPEAKER,TRACK,TAG"
```

Match sessions by title or by the speakers assigned to them. Note the `sessionId`.

Speakers in `schedule.json` may have a `sessionId` field that maps to Accelevents session IDs — check there first.

### 2. Update the session

Use PUT with the `Key` header:
```bash
curl -s -X PUT \
  -H "Key: $ACCELEVENTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Talk Title", "startTime": "2026/04/08 13:00", "endTime": "2026/04/08 15:00", "format": "WORKSHOP"}' \
  "https://api.accelevents.com/rest/host/event/ai-engineer-europe-2026/session/SESSION_ID"
```

Key fields:
- `title`: Session/talk title
- `startTime` / `endTime`: Format is `yyyy/MM/dd HH:mm`
- `format`: One of `MAIN_STAGE`, `BREAKOUT_SESSION`, `MEET_UP`, `WORKSHOP`, `EXPO`, `BREAK`, `OTHER`
- `locationId`: Room/location ID (get from current session data)
- `status`: `VISIBLE` or `HIDDEN`

### 3. Verify the session update

```bash
curl -s -H "Authorization: Bearer $ACCELEVENTS_API_KEY" \
  "https://api.accelevents.com/rest/events/ai-engineer-europe-2026/session?page=0&size=100&expand=SPEAKER,TRACK"
```

## Existing Sync Script

The repo has a script at `src/pages/europe/source/_scripts/sync_accelevents.py` that syncs FROM Accelevents TO the website (pulls data down). The workflows above are the reverse direction (pushing data up to Accelevents).

