Eventee
BUSINESS · CALENDAR
One event’s agenda, speakers, partners, and attendee check-ins in that account.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
eventee_delete_attendeeWRITERemove an invited attendee from the event by EMAIL (there is no path id): an attendee who already entered the event loses access and every link between them and the event is removed. Answers 204 whether or not the address was present (measured 2026-09-19), so confirm with `eventee_get_participants`. `email` is required: `{}` answers 422 "Email is required.".
eventee_delete_hall_by_idWRITEDelete a hall by id. Answers 204 with no body. An event must keep at least one hall: deleting the last one answers 400 `{"error": "cannot_delete_only_hall"}` (documented). An unknown id answers 404.
eventee_delete_label_by_idWRITEDelete a track by id and detach it from every session. Answers 204 with no body. Tracks are a per-event feature the organiser switches on in the Eventee admin (Settings -> Features -> Tracks); with it OFF this call answers 403 `{"not_authorized": "You are not authorized to do this step."}`, which is the feature, not the token (measured 2026-09-19 on an event with `has_tracks: false`).
eventee_delete_lecture_by_idWRITEDelete a session (lecture or workshop) by id, with its bookings, questions, polls and reviews. Answers 204 with no body; an unknown id answers 404.
eventee_delete_partner_by_idWRITEDelete a partner by id, with its sections. Answers 204 with no body; an unknown id answers 404.
eventee_delete_pause_by_idWRITEDelete a break by id. Answers 204 with no body; an unknown id answers 404.
eventee_delete_registrationWRITERemove a registration from the event by EMAIL (there is no path id). Answers 204 whether or not the address was registered (measured 2026-09-19), so confirm with `eventee_get_registrations`. `email` is required: `{}` answers 422 "Email is required.".
eventee_delete_speaker_by_idWRITEDelete a speaker by id and detach them from every session. Answers 204 with no body; an unknown id answers 404.
eventee_delete_test_contentWRITEDESTRUCTIVE AND IRREVERSIBLE: deletes ALL tracks, breaks, speakers, workshops, lectures and halls from the connected event in one call (Eventee's own wording: "delete all tracks, pauses, speakers, workshops, lectures and halls from your event"). Attendees, registrations, partners and reviews are not touched. Eventee publishes it for wiping test data; the token is per event, so the blast radius is the one event this connection holds. Answers 204 with no body; read `eventee_get_content` back to confirm.
eventee_get_contentREADGet the whole agenda of the connected event in one call: `halls`, `days` (each with its `lectures`), `workshops`, `pauses` (breaks), `speakers` and `tracks`. Measured 2026-09-19: sessions are listed under `days[].lectures`, each carrying `hall_id`, `speakers` (ids), `tracks`, `stream`, `virtual_meeting`, `capacity` and `booking_info`, while the top-level `lectures` array was empty. This is the read-back for every create, update and delete below, and the probe a pasted token is checked against.
eventee_get_groupsREADList the event's attendee groups (id, name, public name, colour, emoji, which features each group sees, ticket names, `is_default`). The `id` is what `group_id` on an invite refers to. Empty array when the Groups feature is off or no group exists.
eventee_get_participantsREADList the event's attendees: `id`, `email`, `name`, `first_name`, `last_name`, `company`, `position`, `role`, `group_id`, `checked_at`, `registered_at`. The `id` is what the check-in tool takes; the `email` is what removal takes.
eventee_get_partnersREADList the event's partners with their contact details, logo, sponsor/exhibitor info and `sections`. Empty array when none exist.
eventee_get_registrationsREADList the event's registrations: `id`, `email`, `email_valid`, `status`, name and profile fields, `group_id`, `form_answers`. Empty array when none exist.
eventee_get_reviewsREADList every attendee review (star rating and comment) left on the event's sessions, each with the `lecture` it rates and the reviewer's username. Empty array on an event with no reviews yet.
eventee_patch_hall_by_idWRITERename an existing hall. This is a FULL REPLACE, not a merge: Eventee answers 422 naming the missing field unless every required field is re-sent (measured 2026-09-19), so read the current values first and send them all.
eventee_patch_label_by_idWRITEUpdate a track's name and colour by id. Tracks are a per-event feature the organiser switches on in the Eventee admin (Settings -> Features -> Tracks); with it OFF this call answers 403 `{"not_authorized": "You are not authorized to do this step."}`, which is the feature, not the token (measured 2026-09-19 on an event with `has_tracks: false`).
eventee_patch_lecture_by_idWRITEUpdate a session (lecture or workshop) by id. This is a FULL REPLACE, not a merge: Eventee answers 422 naming the missing field unless every required field is re-sent (measured 2026-09-19), so read the current values first and send them all. `speakers` and `tracks` replace the previous lists. Times are `YYYY-MM-DD HH:MM:SS` in the event's own timezone -- an ISO 8601 value answers 422 "must match the format Y-m-d H:i:s" and a time outside the event's dates answers 400 `session_not_in_event` (both measured 2026-09-19).
eventee_patch_partner_by_idWRITEUpdate a partner's details by id. This is a FULL REPLACE, not a merge: Eventee answers 422 naming the missing field unless every required field is re-sent (measured 2026-09-19), so read the current values first and send them all. Sections are edited with `eventee_patch_partner_by_id_sections`, not here.
eventee_patch_partner_by_id_sectionsWRITEReplace the content sections of a partner's page. ALWAYS SEND THE COMPLETE LIST: a section with an `id` is updated, one without is created, and any existing section missing from the list is DELETED; the final order is the list's order (documented, and measured 2026-09-19 -- an empty list removed every section). Each item's `type` selects what it stores: 0 title, 1 html, 2 urls, 3 images, 4 files, 5 social links. Answers 200 with the partner, whose `sections[]` carry each stored section's `id`, `type` and `data`.
eventee_patch_pause_by_idWRITEUpdate a break by id. This is a FULL REPLACE, not a merge: Eventee answers 422 naming the missing field unless every required field is re-sent (measured 2026-09-19), so read the current values first and send them all. Times are `YYYY-MM-DD HH:MM:SS` in the event's own timezone -- an ISO 8601 value answers 422 "must match the format Y-m-d H:i:s" and a time outside the event's dates answers 400 `session_not_in_event` (both measured 2026-09-19).
eventee_patch_speaker_by_idWRITEUpdate a speaker by id. Unlike the other updates this one MERGES: sending only `company` answered 200 with the name preserved (measured 2026-09-19), so send just the fields to change.
eventee_post_hallWRITECreate a hall (a room or stage sessions are scheduled in). Answers 201 with the hall's `id`, `name` and `order`.
eventee_post_labelWRITECreate a track (Eventee's coloured agenda label; the path is `/label`). Both `name` and `color` are required (measured 2026-09-19). Answers 201 with the track's `id`. Tracks are a per-event feature the organiser switches on in the Eventee admin (Settings -> Features -> Tracks); with it OFF this call answers 403 `{"not_authorized": "You are not authorized to do this step."}`, which is the feature, not the token (measured 2026-09-19 on an event with `has_tracks: false`). With the feature off this create still answers 201, but the track never appears in `eventee_get_content` and does not attach to sessions.
eventee_post_lectureWRITECreate a session -- a lecture (type 0) or a bookable workshop (type 1) -- on the event's agenda. Only `name`, `start` and `end` are required (measured 2026-09-19; the blueprint also lists hall, speakers, type and tracks, and the server does not). Times are `YYYY-MM-DD HH:MM:SS` in the event's own timezone -- an ISO 8601 value answers 422 "must match the format Y-m-d H:i:s" and a time outside the event's dates answers 400 `session_not_in_event` (both measured 2026-09-19). Answers 201 with the session's `id`, its `code` and `qr_code_url`.
eventee_post_partnerWRITECreate a partner (sponsor or exhibitor) on the event. Only `company` is required. Image URLs are downloaded and re-hosted by Eventee. Answers 201 with the partner's `id`, `code`, `sections` (empty) and `sponsor_info` / `exhibitor_info`.
eventee_post_pauseWRITECreate a break ("pause" -- coffee, lunch, networking) on the agenda. Times are `YYYY-MM-DD HH:MM:SS` in the event's own timezone -- an ISO 8601 value answers 422 "must match the format Y-m-d H:i:s" and a time outside the event's dates answers 400 `session_not_in_event` (both measured 2026-09-19). Answers 201 with the break's `id` and the agenda `day` it landed on.
eventee_post_speakerWRITECreate a speaker. Only `name` is required (measured 2026-09-19; the blueprint also lists `phone`, and the server does not). A `photo` URL is downloaded and re-hosted; an unreadable image answers 400 `image_not_readable`. Answers 201 with the speaker's `id`; attach it to sessions through `speakers` on `eventee_post_lecture`.
eventee_put_attendee_by_id_checkinWRITEMark an attendee as checked in (`checkin: true`) or undo it (`checkin: false`), by the attendee id from `eventee_get_participants`. Answers 200 with the attendee, `checked_at` set to the check-in time (measured) or null. An unknown id answers 404.
eventee_put_attendee_inviteWRITEInvite (import) one or more attendees into the event by email, with an optional profile, group and tickets. Each `users` item needs an `email`. Eventee emails an invitation unless the item says `send_email: false`. Answers 200 with the event's `url` and `qr_code` (not per person); read `eventee_get_participants` back for the new attendee ids. Inviting an address already present updates it rather than duplicating.
eventee_put_registration_inviteWRITEAdd one or more registrations (people on the registration list, not yet attendees) by email with an optional profile and group. Each `registrations` item needs an `email`. Eventee emails them unless the item says `send_email: false`. Answers 200 with the event's `url` and `qr_code`; read `eventee_get_registrations` back for the new ids.
Often connected alongside
Put Eventee behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.