--- name: accelevents-speaker-sync description: Use when website speaker, session, schedule, room, track, or headshot changes must be synchronized back to Accelevents for AI Engineer Europe 2026. --- # 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": ""}`. 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": ""}' \ "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).