# Request API Token Source: https://developer.swoogo.com/api-reference/authentication/request-api-token /api-reference/openapi.yaml post /oauth2/token ### Request API Token **Step 1: Find your consumer key and secret** Your consumer key and secret can be found by logging into Swoogo, and going to My Profile > API Credentials. **Step 2: Encode consumer key and secret** The steps to encode your consumer key and secret into a set of credentials to obtain a bearer token are: 1) URL encode the consumer key and the consumer secret according to RFC 1738. 2) Concatenate the encoded consumer key, a colon character ":", and the encoded consumer secret into a single string. 3) Base64 encode the string from the previous step. **Step 3: Obtain a bearer token** The value calculated in step 1 must be exchanged for a bearer token by issuing a request to POST /api/v1/oauth2/token: The request must be a HTTP POST request. The request must include an Authorization header with the value of your base 64 encoded token (from step 1). The request must include a Content-Type header with the value of application/x-www-form-urlencoded;charset=UTF-8. The body of the request must be grant_type=client_credentials. **Step 4: Authenticate API requests with the bearer token** The bearer token may be used to issue requests to Swoogo API endpoints. To use the bearer token, construct a normal HTTPS request and include an Authorization header with the value of your bearer token from step 2. > **Note:** The tokens expires in 30 minutes. # Create Contact Source: https://developer.swoogo.com/api-reference/call-for-speaker-contacts/create-contact /api-reference/openapi.yaml post /cfs-contacts/create Creates a new contact in the Call for Speakers program for an event. Provide the contact's profile information (name, email, company, bio) to add them as a potential speaker. They can then be associated with submissions. # Delete Contact Source: https://developer.swoogo.com/api-reference/call-for-speaker-contacts/delete-contact /api-reference/openapi.yaml delete /cfs-contacts/delete/{contact_id} Permanently deletes a Call for Speakers contact by their ID. This removes the contact from the CFS program and may affect associated submissions. # Get All Contacts Source: https://developer.swoogo.com/api-reference/call-for-speaker-contacts/get-all-contacts /api-reference/openapi.yaml get /cfs-contacts Retrieves all contacts who have submitted or been invited to the Call for Speakers (CFS) program for an event. CFS contacts are potential speakers with their profile information and submission status. Requires the `event_id` query parameter. # Get One Contact Source: https://developer.swoogo.com/api-reference/call-for-speaker-contacts/get-one-contact /api-reference/openapi.yaml get /cfs-contacts/{contact_id} Retrieves a single Call for Speakers contact by their ID, including profile information (name, email, company, bio) and their submission status within the CFS program. # Update Contact Source: https://developer.swoogo.com/api-reference/call-for-speaker-contacts/update-contact /api-reference/openapi.yaml put /cfs-contacts/update/{contact_id} Updates an existing Call for Speakers contact by their ID. You can modify profile fields such as name, email, company, bio, and other speaker-related information. # Create Review Source: https://developer.swoogo.com/api-reference/call-for-speaker-reviews/create-review /api-reference/openapi.yaml post /cfs-reviews/create Creates a new review for a Call for Speakers submission. Provide the `event_id`, `submission_id`, reviewer information, score, and optional feedback comments to record an evaluation of a speaker submission. # Delete Review Source: https://developer.swoogo.com/api-reference/call-for-speaker-reviews/delete-review /api-reference/openapi.yaml delete /cfs-reviews/delete/{review_id} Permanently deletes a submission review by its ID. This removes the reviewer's score and feedback from the submission's evaluation record. # Get All Reviews Source: https://developer.swoogo.com/api-reference/call-for-speaker-reviews/get-all-reviews /api-reference/openapi.yaml get /cfs-reviews Retrieves all reviews for Call for Speakers submissions for an event. Reviews contain scores and feedback from reviewers evaluating speaker submissions. Requires the `event_id` query parameter. Use this to aggregate review scores and track the submission evaluation process. # Get One Review Source: https://developer.swoogo.com/api-reference/call-for-speaker-reviews/get-one-review /api-reference/openapi.yaml get /cfs-reviews/{review_id} Retrieves a single submission review by its ID, including the reviewer, score, feedback comments, and the associated submission. # Update Review Source: https://developer.swoogo.com/api-reference/call-for-speaker-reviews/update-review /api-reference/openapi.yaml put /cfs-reviews/update/{review_id} Updates an existing submission review by its ID. You can modify the score, feedback comments, and reviewer details. # Create Submission Source: https://developer.swoogo.com/api-reference/call-for-speaker-submissions/create-submission /api-reference/openapi.yaml post /submissions/create Creates a new speaker submission for an event's Call for Speakers program. Provide the `event_id`, session topic, abstract, and speaker contact information. The submission enters the review pipeline where it can be evaluated, scored, and accepted or rejected. # Delete Submission Source: https://developer.swoogo.com/api-reference/call-for-speaker-submissions/delete-submission /api-reference/openapi.yaml delete /submissions/delete/{submission_id} Permanently deletes a speaker submission by its ID. This removes the submission and all associated reviews from the Call for Speakers program. # Get All Submissions Source: https://developer.swoogo.com/api-reference/call-for-speaker-submissions/get-all-submissions /api-reference/openapi.yaml get /submissions Retrieves all speaker submissions for an event's Call for Speakers program. Each submission contains the proposed session topic, abstract, speaker contact, and current review status (e.g., pending, accepted, rejected). Requires the `event_id` query parameter. # Get One Submission Source: https://developer.swoogo.com/api-reference/call-for-speaker-submissions/get-one-submission /api-reference/openapi.yaml get /submissions/{submission_id} Retrieves a single speaker submission by its ID, including the session topic, abstract, speaker contact details, track preference, review status, and reviewer scores. # Update Submission Source: https://developer.swoogo.com/api-reference/call-for-speaker-submissions/update-submission /api-reference/openapi.yaml put /submissions/update/{submission_id} Updates an existing speaker submission by its ID. You can modify the session topic, abstract, speaker details, track preference, and review status. # Get All Fields Source: https://developer.swoogo.com/api-reference/contact-fields/get-all-fields /api-reference/openapi.yaml get /contacts/fields Returns a paginated list of custom field definitions available for contacts. These define the schema for custom data that can be stored on contact records beyond the standard fields. Each entry includes the field's type, name, and configuration. Use `search` to filter and `fields` to limit returned properties. # Get One Field Source: https://developer.swoogo.com/api-reference/contact-fields/get-one-field /api-reference/openapi.yaml get /contacts/field/{field_id} Returns the full details of a single contact custom field definition by `field_id`, including its type, name, configuration, and available choices (for dropdown or multi-select fields). Use `fields` to limit which properties are returned. # Create Contact Source: https://developer.swoogo.com/api-reference/contacts/create-contact /api-reference/openapi.yaml post /contacts/create Creates a new CRM contact. The `email` field is required and must be unique within your account. You can also provide first_name, last_name, company, job_title, and other profile fields. Returns the newly created contact object. Once created, the contact can be linked to events as a registrant or speaker. # Forget Contact Source: https://developer.swoogo.com/api-reference/contacts/forget-contact /api-reference/openapi.yaml put /contacts/forget/{contact_id} Performs a GDPR “right to be forgotten” operation on a contact by `contact_id`. This anonymizes the contact's personal data and optionally removes credit card holder names. Provide `registrantIds` as a JSON array to also anonymize specific linked registrant records. This action is irreversible -- all affected personal data is permanently erased. # Get All Contacts Source: https://developer.swoogo.com/api-reference/contacts/get-all-contacts /api-reference/openapi.yaml get /contacts Returns a paginated list of CRM contacts across all events in your account. Unlike registrants, contacts are not event-specific and can be linked to registrations across multiple events. Default fields returned are `id`, `first_name`, and `last_name` -- use `fields` to request additional properties. Use `expand` with `homeAddress`, `workAddress`, or `billingAddress` to include address objects. Use `search` to filter by any contact field and `sort` to control ordering. # Get One Contact Source: https://developer.swoogo.com/api-reference/contacts/get-one-contact /api-reference/openapi.yaml get /contacts/{contact_id} Returns the full details of a single CRM contact by `contact_id`, including personal information, company, email, phone numbers, and profile data. Use `fields` to limit which properties are returned and `expand` to include related address objects. # Update Contact Source: https://developer.swoogo.com/api-reference/contacts/update-contact /api-reference/openapi.yaml put /contacts/update/{contact_id} Updates an existing CRM contact by `contact_id`. Send only the fields you want to change -- any omitted fields retain their current values. Changes to contact data may propagate to linked speaker records that pull profile information from this contact. # Create Data List Item Source: https://developer.swoogo.com/api-reference/data-list-items/create-data-list-item /api-reference/openapi.yaml post /data-list-items/create Creates a new item within a data list. Requires `data_list_id` and the item `value` in the request body. The new item will appear as a selectable option in any custom field that references this data list. # Delete Data List Item Source: https://developer.swoogo.com/api-reference/data-list-items/delete-data-list-item /api-reference/openapi.yaml delete /data-list-items/delete/{data_list_item_id} Permanently deletes an item from a data list. The option will no longer appear in custom field dropdowns. Existing registrant records that selected this item will retain the value but it will not be selectable for new entries. # Get All Data List Items Source: https://developer.swoogo.com/api-reference/data-list-items/get-all-data-list-items /api-reference/openapi.yaml get /data-list-items Retrieves all items within a specific data list. Items are the individual options (e.g., "United States", "Canada") that appear in dropdown or checkbox fields on registration forms. Filter by `data_list_id` to get items for a specific list. # Get One Data List Item Source: https://developer.swoogo.com/api-reference/data-list-items/get-one-data-list-item /api-reference/openapi.yaml get /data-list-items/{data_list_item_id} Retrieves a single data list item by its ID, including the item value, sort order, and parent list reference. # Update Data List Item Source: https://developer.swoogo.com/api-reference/data-list-items/update-data-list-item /api-reference/openapi.yaml put /data-list-items/update/{data_list_item_id} Updates an existing data list item by its ID. You can modify the item value and sort order. # Create Data List Source: https://developer.swoogo.com/api-reference/data-lists/create-data-list /api-reference/openapi.yaml post /data-lists/create Creates a new data list. Requires `name` in the request body. After creating the list, use the Data List Items endpoints to add individual options to the list. # Delete Data List Source: https://developer.swoogo.com/api-reference/data-lists/delete-data-list /api-reference/openapi.yaml delete /data-lists/delete/{data_list_id} Permanently deletes a data list and all its items. Custom fields that reference this list will lose their option set and may need to be reconfigured. # Get All Data Lists Source: https://developer.swoogo.com/api-reference/data-lists/get-all-data-lists /api-reference/openapi.yaml get /data-lists Retrieves all data lists for your account. Data lists are reusable sets of options (e.g., countries, industries, dietary preferences) that can be assigned to custom fields across multiple events. Each list contains items that serve as dropdown or checkbox options on registration forms. # Get One Data List Source: https://developer.swoogo.com/api-reference/data-lists/get-one-data-list /api-reference/openapi.yaml get /data-lists/{data_list_id} Retrieves a single data list by its ID, including the list name and notes. # Update Data List Source: https://developer.swoogo.com/api-reference/data-lists/update-data-list /api-reference/openapi.yaml put /data-lists/update/{data_list_id} Updates an existing data list by its ID. You can modify the list name and notes. # Clone Discount Code Source: https://developer.swoogo.com/api-reference/discount-codes/clone-discount-code /api-reference/openapi.yaml post /discounts/{discount_id}/clone Creates a duplicate of an existing discount code, copying all settings (type, amount, capacity, line item rules, and group constraints). Optionally provide a new `code` value via the `code` query parameter; if omitted, the original code is used with "(Clone)" appended. Alternate discount codes cannot be cloned and will return a 400 error. # Create Discount Code Source: https://developer.swoogo.com/api-reference/discount-codes/create-discount-code /api-reference/openapi.yaml post /discounts/create Creates a new discount code for an event. Requires `event_id`, `code`, and `type` (`percentage`, `absolute`, or `specific`). Set `capacity` to limit total usage, `apply_to_all` to apply across every line item, or list specific items in `applicable_line_items` for targeted discounts. For `specific`-type discounts, supply line-item-specific fees via `custom_fees_update`. Group constraints can be configured via `min_group_size`, `registrants_per_use`, and `all_registrants_in_group`. # Delete Discount Code Source: https://developer.swoogo.com/api-reference/discount-codes/delete-discount-code /api-reference/openapi.yaml delete /discounts/delete/{discount_id} Permanently deletes a discount code by its ID. The code will no longer be usable for future registrations. Existing registrants who already applied this discount are not affected. # Get All Discount Codes Source: https://developer.swoogo.com/api-reference/discount-codes/get-all-discount-codes /api-reference/openapi.yaml get /discounts Retrieves all discount codes for a specific event. Discount codes can be percentage-based, absolute (fixed amount), or specific (custom fees per line item). Requires the `event_id` query parameter. Use `expand` to include `alternates`, `autopopulate` field mappings, `registrantCount`, or `reservedCount`.
Available Fields

These are the standard fields returned for each discount code:

Name Type Description
id integer The ID of the discount code.
parent_id integer (nullable) ID of the primary discount code when this row is an alternate; null for primary codes.
event_id integer The ID of the event to which this discount is associated.
code string The unique code for the discount.
type string The type of discount: percentage, absolute, or specific.
percentage_discount number The percentage value of the discount (when type is percentage).
absolute_discount number The absolute monetary value of the discount (when type is absolute).
applicable_line_items array of strings (nullable) Line items the discount applies to when apply_to_all is 0. Standard values: reg_type, package, session, plus c_<questionId> for custom questions.
apply_to_all integer (0 or 1) Returned as 0 or 1 (not a JSON boolean). 1 means the discount applies to every line item.
capacity integer The maximum number of times this discount can be used. 0 means unlimited.
min_group_size integer The minimum group size required to use this discount.
registrants_per_use integer Maximum number of times the code can be used per group of N registrants.
custom_fees object (nullable) Merged set of line-item-specific fees for specific discounts. Outer key is line-item type, inner key is line-item ID, value is the fee as a string.
sold_out_message string (nullable) Custom message shown when the discount is sold out.
notes string (nullable) Additional notes or comments about the discount.
created_at string (date-time) Timestamp when the discount was created.
updated_at string (date-time) Timestamp when the discount was last updated.
Extra Fields

Additional fields available via the expand query parameter:

Name Type Description
alternates array of objects Alternate code list, which inherits the settings of the main code.
autopopulate array of objects Registrant fields automatically populated when this discount is applied.
registrantCount integer Number of registrants that used this discount code.
reservedCount integer Number of reserved discount codes (in-progress registrations).
# Get One Discount Code Source: https://developer.swoogo.com/api-reference/discount-codes/get-one-discount-code /api-reference/openapi.yaml get /discounts/{discount_id} Retrieves a single discount code by its ID, including discount type (`percentage`, `absolute`, or `specific`), applicable line items, capacity limits, line-item-specific fees (`custom_fees`), and group registration settings. # Update Discount Code Source: https://developer.swoogo.com/api-reference/discount-codes/update-discount-code /api-reference/openapi.yaml put /discounts/update/{discount_id} Updates an existing discount code by its ID. All body fields are optional; only the fields included in the request body will be updated. `event_id` cannot be changed — discounts are bound to their original event. To create alternate codes for an existing discount, use the clone endpoint. # Create Badge Source: https://developer.swoogo.com/api-reference/event-badges/create-badge /api-reference/openapi.yaml get /badges/{badge_id}/generate/{registrant_id} Creates a new badge template for an event. Configure the badge layout, dimensions, and which registration types should use this badge for on-site printing. # Get All Badges Source: https://developer.swoogo.com/api-reference/event-badges/get-all-badges /api-reference/openapi.yaml get /badges Retrieves all badge templates configured for an event. Badges are printable name tags or credentials for on-site check-in. Each badge includes its layout configuration and associated registration types. # Get One Badge Source: https://developer.swoogo.com/api-reference/event-badges/get-one-badge /api-reference/openapi.yaml get /badges/{badge_id} Retrieves a single badge template by its ID, including the layout configuration, dimensions, and associated registration types. # Create Field Source: https://developer.swoogo.com/api-reference/event-fields/create-field /api-reference/openapi.yaml post /events/field Creates a new custom field definition for events. Specify the field name, type (text, dropdown, checkbox, etc.), visibility, sort order, and choices (for selection-type fields). The field will become available for data entry on events. # Delete Field Source: https://developer.swoogo.com/api-reference/event-fields/delete-field /api-reference/openapi.yaml delete /events/field/{field_id} Permanently deletes a custom event field definition by its ID. Any data stored in this field on existing events will no longer be accessible. # Get All Fields Source: https://developer.swoogo.com/api-reference/event-fields/get-all-fields /api-reference/openapi.yaml get /events/fields Retrieves all custom field definitions for events. These fields define the schema for additional event-level data (e.g., custom text fields, dropdowns, URLs). Each field includes its attribute name, display type, visibility, sort order, validation requirements, and available choices. # Get One Field Source: https://developer.swoogo.com/api-reference/event-fields/get-one-field /api-reference/openapi.yaml get /events/field/{field_id} Retrieves a single custom event field definition by its ID, including the attribute name, field type, visibility settings, validation rules, and available choices (for dropdown/radio fields). # Update Field Source: https://developer.swoogo.com/api-reference/event-fields/update-field /api-reference/openapi.yaml put /events/field/{field_id} Updates an existing custom event field definition by its ID. You can modify the field name, type, visibility, sort order, validation rules, and available choices. # Get All Folders Source: https://developer.swoogo.com/api-reference/event-folders/get-all-folders /api-reference/openapi.yaml get /folders Retrieves all event folders used to organize events in the dashboard. Folders support a hierarchical structure via `parent_id` for nested organization. Read-only endpoint. # Get One Folder Source: https://developer.swoogo.com/api-reference/event-folders/get-one-folder /api-reference/openapi.yaml get /folders/{folder_id} Retrieves a single event folder by its ID, including the folder name and parent folder reference for hierarchical navigation. # Get All Questions Source: https://developer.swoogo.com/api-reference/event-questions/get-all-questions /api-reference/openapi.yaml get /event-questions Retrieves all registration form questions configured for an event. Questions define the fields that registrants fill out during registration (e.g., name, email, custom questions). Defaults to questions on the main website but can be filtered by module. Requires the `event_id` query parameter.
Extra Fields

This is the extra information that can be returned if required by specifying what you need in the expand variable:

Name Type Description
choices array List of response options for the question (e.g. for dropdown, radio, or checkbox questions).
page object The registration form page this question belongs to.
translations object Question translations by language.
# Get One Question Source: https://developer.swoogo.com/api-reference/event-questions/get-one-question /api-reference/openapi.yaml get /event-questions/{question_id} Retrieves a single registration form question by its ID, including the question text, field type, validation rules, and available choices. Use `expand` to include related data.
Extra Fields

This is the extra information that can be returned if required by specifying what you need in the expand variable:

Name Type Description
choices array List of response options for the question (e.g. for dropdown, radio, or checkbox questions).
page object The registration form page this question belongs to.
translations object Question translations by language.
# Get All Websites Source: https://developer.swoogo.com/api-reference/event-websites/get-all-websites /api-reference/openapi.yaml get /event-websites Retrieves all websites associated with an event. Each event can have multiple websites (e.g., main registration site, speaker portal, exhibitor portal). Requires the `event_id` query parameter. Read-only endpoint. # Get One Website Source: https://developer.swoogo.com/api-reference/event-websites/get-one-website /api-reference/openapi.yaml get /event-websites/{website_id} Retrieves a single event website by its ID, including the site URL, configuration, and associated pages. # Clone Event Source: https://developer.swoogo.com/api-reference/events/clone-event /api-reference/openapi.yaml post /events/{event_id}/clone Creates a new event by cloning an existing one. Copies all event settings including registration types, packages, sessions, forms, and website configuration into a new event. The source event is identified by `event_id` in the path. Override any fields in the request body to customize the clone (e.g., new `name`, `start_date`, `display_url`). Fields not provided in the body inherit values from the source event. Cloning is asynchronous and may take a few moments to complete. Registrant data is never copied -- the cloned event starts with zero registrations. # Create Event Source: https://developer.swoogo.com/api-reference/events/create-event /api-reference/openapi.yaml post /events/create Creates a new event in your account. Returns the full event record on success. Required fields: `name`, `start_date`, `start_time`, `end_date`, `end_time`, and `timezone` (e.g., `US/Eastern`, `Europe/London`, `Asia/Tokyo` — see the [Formatting conventions](/api-reference/formatting-conventions#time-zones) page for the accepted identifiers). Optionally set `close_date` and `close_time` to control when registration closes, `folder_id` to organize the event, and `display_url` to set the registration page URL slug. The event is created in draft status by default. Configure registration types, packages, and sessions after creation. # Get All Events Source: https://developer.swoogo.com/api-reference/events/get-all-events /api-reference/openapi.yaml get /events Retrieves a paginated list of events for your account. Returns event configuration, scheduling, and status information. Use `fields` to control which fields are returned (defaults to `id`, `name` when not specified). Use `expand` to include related objects: `folder`, `location`. Use `search` to filter by any event field (e.g., `status=live`, `start_date>=2025-01-01`, `name=*conference*`). Supports operators: `=`, `!=`, `>=`, `<=`, `>`, `<`, `*contains*`, `*beginswith*`, `*endswith*`. Results are paginated with a maximum of 200 per page. # Get One Event Source: https://developer.swoogo.com/api-reference/events/get-one-event /api-reference/openapi.yaml get /events/{event_id} Retrieves a single event by its unique ID. Returns the full event record including name, dates, times, timezone, capacity, status, and registration URL. Use `fields` to limit which fields are returned. Use `expand` to include related objects such as `folder` and `location`. # Update Event Source: https://developer.swoogo.com/api-reference/events/update-event /api-reference/openapi.yaml put /events/update/{event_id} Updates an existing event by its unique ID. Only the fields included in the request body are modified; omitted fields are left unchanged. You can update scheduling (`start_date`, `end_date`, `start_time`, `end_time`), metadata (`name`, `folder_id`, `description`), and registration settings (`close_date`, `close_time`, `capacity`). Changes to dates and times on a live event take effect immediately for the registration page. # Formatting conventions Source: https://developer.swoogo.com/api-reference/formatting-conventions Data formats and standards used across all API endpoints This page covers the data formats and conventions used across all Swoogo API requests and responses. ## IDs All resource identifiers (`event_id`, `registrant_id`, `session_id`, etc.) must be transmitted as **integer values**. ## Date and time Timestamps follow the **ISO 8601** standard: | Format | Example | Usage | | -------------- | --------------------- | -------------------------------------- | | Full date-time | `2024-11-08 16:04:40` | Created/updated timestamps, scheduling | | Date only | `2024-11-08` | Date filters, date-only fields | | Time only | `16:04:40` | Time-only fields | ## Time zones Time zone values must use one of the zone identifiers the API supports. United States zones use POSIX-style names (e.g., `US/Eastern`, `US/Central`, `US/Mountain`, `US/Pacific`, `US/Alaska`, `US/Arizona`), while most other zones use region/city names (e.g., `Europe/London`, `Europe/Paris`, `Asia/Tokyo`, `Australia/Sydney`, `America/Los_Angeles`, `America/Mexico_City`). `UTC` is also accepted. Timezone abbreviations (e.g., `EST`, `EDT`, `PST`, `CET`) are **not** accepted. Some IANA identifiers are also not accepted — most notably `America/New_York`, which must be submitted as `US/Eastern`. ## Currencies Currency values use the **ISO 4217** three-letter format (e.g., `USD`, `EUR`, `GBP`). See the full list of [ISO 4217 currency codes](https://en.wikipedia.org/wiki/ISO_4217). ## Addresses * **Countries** — Use **ISO 3166 Alpha-2** codes (e.g., `US`, `GB`, `DE`, `AU`) * **States and provinces** — Use standard 2-character abbreviations (e.g., `CA`, `NY`, `ON`) ## Boolean values Booleans are formatted differently in requests vs. responses. | Context | True | False | | ----------------------------- | ------ | ------- | | **Sending** (request body) | `1` | `0` | | **Receiving** (response JSON) | `true` | `false` | ## Phone numbers The API uses **E.164 format** — the international standard that includes the country code without spaces or special characters. | Country | Example | | -------------- | ---------------- | | United States | `+1234567890` | | United Kingdom | `+447911123456` | | Australia | `+61412345678` | | Germany | `+4915112345678` | If the E.164 format isn't provided, the system attempts to assign a country code automatically, but accuracy is not guaranteed. Always include the country code prefix. ## Expand parameter Certain `GET` endpoints support the `expand` parameter to include related objects in the response. Pass a comma-separated list of singular object type names: ``` GET /registrants?expand=contact,sessions ``` Using `expand` caps the maximum page size at **200** items per page. # Delete Image Field Source: https://developer.swoogo.com/api-reference/images/delete-image-field /api-reference/openapi.yaml delete /image/{image_type}/{image_id}/{field_id} Removes an image from a specific field on an object. The image file is deleted and the field is cleared. Requires `image_type`, `image_id`, and `field_id` as path parameters. # Get Image URL Source: https://developer.swoogo.com/api-reference/images/get-image-url /api-reference/openapi.yaml get /image/{image_type}/{image_id}/{field_id} Retrieves the URL for an image associated with a specific object (e.g., event logo, speaker photo, sponsor banner). Requires `image_type` (the object type), `image_id` (the object's ID), and `field_id` (the image field) as path parameters. # Update Image Field Source: https://developer.swoogo.com/api-reference/images/update-image-field /api-reference/openapi.yaml put /image/{image_type}/{image_id}/{field_id} Uploads or replaces an image for a specific field on an object (registrant, contact, or sponsor). Send as a `multipart/form-data` request with a single `file` parameter containing the image. The file must be no larger than 5MB and use a valid extension: jpg, jpeg, gif, png, webp, or svg. The `image_type` path parameter specifies the object type, `image_id` the object's ID, and `field_id` the target image field (e.g., profile_picture). # Introduction Source: https://developer.swoogo.com/api-reference/introduction Everything you need to start building with the Swoogo API The Swoogo API provides programmatic access to manage events, registrants, sessions, speakers, sponsors, and related resources on the Swoogo event management platform. **Base URL:** `https://api.swoogo.com/api/v1` ## Getting started Log in to Swoogo and navigate to **My Profile > API Credentials** to find your consumer key and secret. Swoogo also provides a pre-encoded Base64 credential string you can use directly. Your API Credentials page provides a ready-to-use Base64-encoded string — copy it directly to skip the manual encoding step. Exchange your credentials for a bearer token by calling `POST /oauth2/token`. ```bash cURL theme={null} # Use the Base64-encoded credentials from your API Credentials page curl -X POST "https://api.swoogo.com/api/v1/oauth2/token" \ -H "Authorization: Basic YOUR_BASE64_CREDENTIALS" \ -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \ -d "grant_type=client_credentials" ``` ```javascript Node.js theme={null} const credentials = Buffer.from( `${CONSUMER_KEY}:${CONSUMER_SECRET}` ).toString('base64'); const response = await fetch('https://api.swoogo.com/api/v1/oauth2/token', { method: 'POST', headers: { 'Authorization': `Basic ${credentials}`, 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', }, body: 'grant_type=client_credentials', }); const { access_token, expires_at } = await response.json(); ``` ```python Python theme={null} import base64 import requests credentials = base64.b64encode( f"{CONSUMER_KEY}:{CONSUMER_SECRET}".encode() ).decode() response = requests.post( "https://api.swoogo.com/api/v1/oauth2/token", headers={ "Authorization": f"Basic {credentials}", "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", }, data="grant_type=client_credentials", ) token = response.json()["access_token"] ``` The response includes your token and its expiration: ```json theme={null} { "access_token": "your-access-token", "type": "bearer", "expires_at": "2024-11-08 16:04:40" } ``` Tokens expire after **30 minutes**. Request a new token when you receive a `401` response. Include your token in the `Authorization` header on all subsequent requests. ```bash cURL theme={null} curl "https://api.swoogo.com/api/v1/events" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" ``` ```javascript Node.js theme={null} const response = await fetch('https://api.swoogo.com/api/v1/events', { headers: { 'Authorization': `Bearer ${access_token}`, }, }); const data = await response.json(); ``` ```python Python theme={null} response = requests.get( "https://api.swoogo.com/api/v1/events", headers={"Authorization": f"Bearer {token}"}, ) data = response.json() ``` ## Rate limiting API requests are rate-limited to **2,000 requests per 10-minute window** per API credential. List endpoints cost **10 credits** per call; all other endpoints cost **1 credit**. Rate limit status is returned in response headers: | Header | Description | | ------------------------ | ---------------------------------------------- | | `X-Rate-Limit-Limit` | Maximum requests allowed in the current window | | `X-Rate-Limit-Remaining` | Requests remaining in the current window | | `X-Rate-Limit-Reset` | Seconds until the window resets | When the limit is exceeded, the API returns `429 Too Many Requests`. ## Pagination All list endpoints return paginated results in this envelope: ```json theme={null} { "items": [...], "_links": { "self": { "href": "..." }, "first": { "href": "..." }, "last": { "href": "..." } }, "_meta": { "totalCount": 95, "pageCount": 5, "currentPage": 1, "perPage": 20 } } ``` | Parameter | Default | Max | Description | | ---------- | ------- | ---- | ------------------------------------------------------ | | `page` | 1 | — | Page number (1-indexed) | | `per-page` | 20 | 1000 | Items per page. Capped at **200** when using `expand`. | ## Filtering and sorting Use the `search` parameter to filter results. Combine multiple conditions with `&`. **Operators:** `=`, `!=`, `>`, `<`, `>=`, `<=`, `*contains*`, `*beginswith*`, `*endswith*`, `*in*` ```bash theme={null} # Exact match search=registration_status=confirmed # Date range search=created_at>=2024-01-01 # Starts with search=last_name=*beginswith*Sm # Multiple values (OR) search=status=*in*confirmed|attended # Multiple conditions (AND by default) search=id>100®istration_status=confirmed ``` Set `searchCondition=or` to match **any** condition instead of all. Use `sort` to order results. Prefix with `-` for descending: `sort=-created_at`. ## Field selection and expansion Use `fields` to request only the fields you need: ``` fields=id,email,first_name,last_name ``` Use `expand` to include related objects in the response: ``` expand=homeAddress,sessions ``` Using `expand` caps the page size at **200** items per page. ## Errors All errors return a consistent JSON response: ```json theme={null} { "name": "Not Found", "message": "The requested resource does not exist.", "code": 0, "status": 404 } ``` | Status | Meaning | | ------ | ----------------------------------------------------------- | | `400` | Bad Request — invalid parameters or business rule violation | | `401` | Unauthorized — missing or expired bearer token | | `403` | Forbidden — valid token but insufficient permissions | | `404` | Not Found — resource does not exist or is not accessible | | `422` | Unprocessable Entity — validation errors on input fields | | `429` | Too Many Requests — rate limit exceeded | | `500` | Internal Server Error — unexpected server error | ## Webhooks Swoogo can send HTTP callbacks when resources are created, updated, or deleted. Configure webhooks via the API or the Swoogo UI. Supported trigger objects: `event`, `contact`, `registrant`, `speaker`, `sponsor`, `session`, `session_attendance`, `registrant_line_item`. Webhook payloads can be sent as `json` (application/json) or `post` (form-encoded). # Add Contact to Invitation List Source: https://developer.swoogo.com/api-reference/invitation-lists/add-contact-to-invitation-list /api-reference/openapi.yaml post /invitation-lists/{invitation_list_id}/contact/{contact_id} Adds a contact to an invitation list, granting them permission to register for the associated event. Requires `invitation_list_id` as a path parameter and `contact_id` in the request body. The contact must already exist in your account's contact database. # Create Invitation List Source: https://developer.swoogo.com/api-reference/invitation-lists/create-invitation-list /api-reference/openapi.yaml post /invitation-lists/create Creates a new invitation list for an event. Requires `event_id` and `name` in the request body. After creating the list, use the Add Contact endpoint to populate it with contacts who should be invited to register. # Get All Invitation Lists Source: https://developer.swoogo.com/api-reference/invitation-lists/get-all-invitation-lists /api-reference/openapi.yaml get /invitation-lists Retrieves all invitation lists for your account. Invitation lists are curated groups of contacts who are invited to register for specific events. Lists can be used to control registration access when invitation-only mode is enabled on an event. # Get Contacts in Invitation List Source: https://developer.swoogo.com/api-reference/invitation-lists/get-contacts-in-invitation-list /api-reference/openapi.yaml get /invitation-lists/{invitation_list_id}/contacts Retrieves all contacts belonging to an invitation list. Results are paginated and can be filtered by `contact_id` or `status`, and sorted by `contact_id`, `status`, or `event_id`. Use `expand=contact` to include the full contact record for each entry. # Get Invitation List Source: https://developer.swoogo.com/api-reference/invitation-lists/get-invitation-list /api-reference/openapi.yaml get /invitation-lists/{invitation_list_id} Retrieves a single invitation list by its ID, including the list name, associated event, and capacity settings. # Remove Contact from Invitation List Source: https://developer.swoogo.com/api-reference/invitation-lists/remove-contact-from-invitation-list /api-reference/openapi.yaml delete /invitation-lists/{invitation_list_id}/contact/{contact_id} ### Invitation Lists This endpoint removes a contact from an existing invitation list. It returns a success response when the contact is successfully removed. # Update Invitation List Source: https://developer.swoogo.com/api-reference/invitation-lists/update-invitation-list /api-reference/openapi.yaml put /invitation-lists/update/{invitation_list_id} Updates an existing invitation list by its ID. You can modify the list name and capacity settings. # Overview Source: https://developer.swoogo.com/api-reference/overviews/call-for-speaker-reviews Manage reviews of call for speaker submissions Each call for speaker submission can receive multiple reviews from different reviewers, capturing scores and feedback to help organizers decide which proposals to accept. Use these endpoints to create, update, and delete reviews on submissions. Reviews are a key part of the speaker selection workflow. # Overview Source: https://developer.swoogo.com/api-reference/overviews/call-for-speaker-submissions Manage speaker proposals submitted to a call for speakers program Submissions contain proposed session details — title, abstract, and speaker information — submitted through a call for speakers program. Each submission moves through a review workflow where reviewers score and provide feedback. Use these endpoints to create, update, and manage submissions throughout the review and acceptance process. # Overview Source: https://developer.swoogo.com/api-reference/overviews/call-for-speakers Manage speaker submission programs — contacts, submissions, and reviews The call for speakers (CFS) system lets you run a speaker submission program for your event. Potential speakers submit proposals, reviewers evaluate them, and accepted speakers are added to the event. ## What you can do * **Manage CFS contacts** — people who have engaged with the call for speakers program * **View and manage submissions** — speaker proposals with session details * **Track reviews** — reviewer evaluations and scoring of submissions ## Related resources | Resource | Relationship | | ------------------- | --------------------------------------------- | | **CFS Contacts** | People who submitted to the call for speakers | | **CFS Submissions** | Individual speaker proposals | | **CFS Reviews** | Reviewer evaluations of submissions | | **Speakers** | Accepted submissions become speakers | | **Sessions** | Accepted submissions become sessions | ## Key concepts **Submission workflow** — The typical flow is: a contact submits a proposal via the CFS form, reviewers score the submission, and organizers accept or reject it. Accepted submissions can be converted into speaker and session records. **Reviews** — Each submission can have multiple reviews from different reviewers. Reviews capture scores and feedback to help organizers make selection decisions. # Overview Source: https://developer.swoogo.com/api-reference/overviews/contact-fields View custom field definitions for CRM contacts Contact fields define the data model for your Swoogo CRM contacts — the available properties beyond the standard name, email, and phone fields. Use these endpoints to view the custom field definitions configured for your contacts. Field definitions are managed in the Swoogo dashboard; the API provides read access. # Overview Source: https://developer.swoogo.com/api-reference/overviews/contacts People in your Swoogo CRM, independent of any specific event Contacts are people in your Swoogo CRM, independent of any specific event. Contacts can be linked to registrants across multiple events and managed via invitation lists. ## What you can do * **Create and manage contact records** with personal details and custom field values * **View custom field definitions** for the contact data model * **Forget contacts** for GDPR compliance — anonymize personal data while preserving aggregate records ## Related resources | Resource | Relationship | | -------------------- | ------------------------------------------------------------- | | **Registrants** | A contact can be linked to registrants across multiple events | | **Invitation Lists** | Curated groups of contacts for targeted invitations | | **Contact Fields** | Custom field definitions on contacts | ## Key concepts **Contacts vs. registrants** — A contact is an event-independent record in your CRM. When a contact registers for an event, a registrant record is created and linked to the contact. One contact can have registrant records across many events. **GDPR forget** — The forget endpoint anonymizes a contact's personal data in compliance with data privacy regulations. The contact record is preserved for reporting purposes, but identifying information is removed. **Invitation lists** — Group contacts into lists for targeted event invitations. Use the Invitation Lists endpoints to manage lists and add or remove contacts. # Overview Source: https://developer.swoogo.com/api-reference/overviews/data-list-items Manage individual items within a data list Data list items are the individual options (e.g., "Option A", "Option B") that make up a data list. These options appear in custom field dropdowns, checkbox groups, and radio buttons across the platform. Use these endpoints to create, update, and delete the items within a data list. # Overview Source: https://developer.swoogo.com/api-reference/overviews/data-lists Reusable sets of options used in custom fields — dropdowns, checkboxes, and more Data lists store reusable sets of key-value options used in custom fields — for example, the choices in a dropdown, checkbox group, or radio button set. Manage both the lists themselves and their individual items. ## What you can do * **Create and manage data lists** that define sets of options * **Add, update, and remove items** within a data list * **Reuse lists across fields** — one data list can power multiple custom fields ## Related resources | Resource | Relationship | | ------------------- | ---------------------------------------------------------- | | **Data List Items** | The individual options within a list | | **Event Fields** | Custom fields that reference a data list for their options | | **Session Fields** | Session-level custom fields using data lists | | **Sponsor Fields** | Sponsor-level custom fields using data lists | ## Key concepts **List and items** — A data list is a container. Data list items are the individual options (e.g., "Option A", "Option B") within that container. Use the Data List Items endpoints to manage the options. **Reusability** — A single data list can be referenced by multiple custom fields across different resource types, keeping your option sets consistent. # Overview Source: https://developer.swoogo.com/api-reference/overviews/discounts Percentage or fixed-amount discounts on registration fees Discount codes provide percentage or absolute discounts on registration fees. Codes can have capacity limits, group size requirements, and apply-to-all or selective targeting. Codes can be cloned to create variants. ## What you can do * **Create and manage discount codes** with percentage or fixed-amount discounts * **Set usage limits** — cap the number of times a code can be redeemed * **Clone codes** to quickly create variants of existing discounts * **Target specific packages or registrant types** for selective discounting ## Related resources | Resource | Relationship | | ------------------------- | --------------------------------------- | | **Events** | The event the discount applies to | | **Packages** | Packages the discount can be applied to | | **Registrants** | Registrants who used the discount | | **Registrant Line Items** | The discount as an itemized line item | ## Key concepts **Cloning** — The clone endpoint creates a copy of an existing discount code with a new code string. This is useful for creating variations (e.g., speaker-specific codes) from a common template. **Capacity** — Discount codes can have a maximum redemption count. Once the limit is reached, the code can no longer be applied. # Overview Source: https://developer.swoogo.com/api-reference/overviews/event-badges Manage badge templates and generate badge PDFs for registrant check-in Badges are printable documents (typically PDFs) containing registrant details and QR codes, used for event check-in. Use these endpoints to list badge templates configured for an event and generate badge PDFs for individual registrants. Badge designs are managed in the Swoogo dashboard, while the API handles template retrieval and PDF generation. # Overview Source: https://developer.swoogo.com/api-reference/overviews/event-fields Manage custom fields that extend the event data model Custom fields extend the standard event data model with your own properties — text fields, dropdowns, checkboxes, and more. Use these endpoints to create, update, and delete event-level custom field definitions. Once defined, custom field values can be set when creating or updating events. # Overview Source: https://developer.swoogo.com/api-reference/overviews/event-folders View folders used to organize events in the Swoogo dashboard Folders provide a way to categorize and group events for easier management in the Swoogo dashboard — similar to folders in a file system. Use these endpoints to view the folder structure and see which folder an event belongs to. Folders are created and managed in the dashboard; the API provides read access. # Overview Source: https://developer.swoogo.com/api-reference/overviews/event-questions View questions configured on event registration forms Event questions are the fields and prompts that registrants fill out during registration, such as dietary preferences, t-shirt size, or session preferences. Use these endpoints to view the questions configured on an event's registration form. Questions are created and managed through the Swoogo dashboard; the API provides read access to their definitions. # Overview Source: https://developer.swoogo.com/api-reference/overviews/event-websites View websites associated with events Each event can have one or more websites — the public-facing registration site, agenda page, and other event pages built in the Swoogo page builder. Use these endpoints to view the websites associated with an event, including their URLs and configuration. Websites are created and managed through the Swoogo dashboard; the API provides read access. # Overview Source: https://developer.swoogo.com/api-reference/overviews/events The top-level resource in Swoogo — conferences, meetings, webinars, and more Events are the top-level resource in Swoogo. An event represents a conference, meeting, webinar, or any other gathering you organize on the platform. Most other resources — registrants, sessions, speakers, sponsors — are scoped to an event via `event_id`. ## What you can do * **Create and manage events** with details like name, dates, timezone, venue, and capacity * **Clone events** to duplicate an existing event's configuration as a starting point * **Manage custom fields** to capture event-specific data beyond the standard fields * **Generate badges** with unique QR codes for registrant check-in * **Access event questions** configured on registration forms * **View event websites** and pages associated with each event ## Related resources | Resource | Relationship | | ------------------ | ---------------------------------------------- | | **Registrants** | People registered for the event | | **Sessions** | Agenda items within the event | | **Speakers** | Presenters at the event | | **Sponsors** | Organizations supporting the event | | **Packages** | Pricing tiers for event registration | | **Discount Codes** | Promotional pricing for the event | | **Event Fields** | Custom field definitions on the event | | **Event Badges** | Badge templates and generation | | **Event Folders** | Organizational folders in the Swoogo dashboard | ## Key concepts **Event scoping** — Nearly all API calls require an `event_id` parameter. When listing registrants, sessions, or other sub-resources, you are always listing them within the context of a specific event. **Custom fields** — Events support custom fields that extend the standard data model. Use the Event Fields endpoints to manage field definitions, and include custom field values when creating or updating events. **Cloning** — The clone endpoint duplicates an event's configuration (settings, fields, pages) without copying registrant data. This is useful for recurring events or templates. **URL vs domain** — The `url` field returns the event's slug (e.g., `my-conference`), which forms the path on the Swoogo-hosted registration page. The `domain` field returns the custom domain configured for the event's website (e.g., `events.mycompany.com`), if one has been set. Use `domain` when you need the fully qualified custom URL rather than just the slug. # Overview Source: https://developer.swoogo.com/api-reference/overviews/images Upload, retrieve, and delete images for registrants, speakers, sponsors, and more The Images API lets you upload, retrieve, and delete images associated with various resources — registrant photos, speaker headshots, sponsor logos, and other image fields. ## What you can do * **Upload images** to any image field on a resource * **Retrieve images** by resource type, resource ID, and field ID * **Delete images** to remove them from a resource ## Key concepts **Image addressing** — Images are identified by three parameters: `image_type` (the resource type, e.g., "registrant" or "speaker"), `image_id` (the resource ID), and `field_id` (which image field on the resource). This allows multiple image fields per resource. # Overview Source: https://developer.swoogo.com/api-reference/overviews/invitation-lists Curated groups of contacts for targeted event invitations Invitation lists are curated groups of contacts used for targeted event invitations and access control. You can create lists, add or remove contacts, and use them to manage who receives invitations. ## What you can do * **Create and manage invitation lists** with names and descriptions * **Add contacts to lists** for targeted outreach * **Remove contacts from lists** when they should no longer be included ## Related resources | Resource | Relationship | | ------------ | ---------------------------------------- | | **Contacts** | The contacts included in the list | | **Events** | Events that use the list for invitations | ## Key concepts **Contact membership** — A contact can belong to multiple invitation lists, and a list can contain many contacts. Use the add/remove contact endpoints to manage membership. **Access control** — Invitation lists can be used to restrict who can register for an event, ensuring only invited contacts have access. # Overview Source: https://developer.swoogo.com/api-reference/overviews/package-fees Manage pricing tiers for registration packages Package fees define the cost of each registration package, including early bird rates that automatically transition to standard pricing on a specified date. Use these endpoints to view and manage the pricing configuration for your event's registration packages. # Overview Source: https://developer.swoogo.com/api-reference/overviews/packages Pricing tiers for event registration Packages define pricing tiers for event registration. A package specifies the fee amount, early bird pricing, and which sessions or features are included. Registrants select a package during registration. ## What you can do * **Create and manage registration packages** with names, descriptions, and pricing * **Set package fees** including early bird rates with automatic date-based transitions * **Control availability** by setting capacity limits per package ## Related resources | Resource | Relationship | | -------------------- | ------------------------------------------------ | | **Events** | The event the package belongs to | | **Registrants** | Registrants who selected this package | | **Package Fees** | Pricing details including early bird rates | | **Registrant Types** | Package availability can vary by registrant type | ## Key concepts **Package fees** — Each package has associated pricing managed through the Package Fees endpoints. Fees can include early bird rates that automatically transition to standard pricing on a specified date. **Package selection** — When creating a registrant via the API, you specify the package they are purchasing. The package determines the base registration fee. # Overview Source: https://developer.swoogo.com/api-reference/overviews/pages View pages associated with event websites Pages represent individual web pages within an event website — registration pages, agenda pages, speaker listings, and custom content pages built in the Swoogo page builder. ## What you can do * **List pages** for an event website * **Retrieve page details** including configuration and metadata ## Related resources | Resource | Relationship | | ------------------ | -------------------------------- | | **Events** | The event the pages belong to | | **Event Websites** | The website containing the pages | # Overview Source: https://developer.swoogo.com/api-reference/overviews/registrant-groups Manage group registration assignments for registrants Registrant groups allow you to associate registrants together — for example, a team registering together or a company delegation. Use these endpoints to add or remove registrants from groups. Group associations are useful for managing block registrations and keeping related attendees organized. # Overview Source: https://developer.swoogo.com/api-reference/overviews/registrant-line-items View itemized financial data and audit trails for registrant orders Line items break down every charge on a registration — package fees, session fees, taxes, discounts, and adjustments. Use these endpoints to view the itemized financial data for a registrant's order. The line item audit trail tracks all changes over time, which is useful for financial reconciliation and reporting. # Overview Source: https://developer.swoogo.com/api-reference/overviews/registrant-session-waitlists Manage waitlist entries for sessions at capacity When a session is full, registrants can be placed on a waitlist and promoted when spots open up. Use these endpoints to add or remove registrants from session waitlists. Waitlist management works alongside session capacity limits to ensure sessions are not over-enrolled. # Overview Source: https://developer.swoogo.com/api-reference/overviews/registrant-sessions Manage which sessions a registrant is enrolled in When a registrant selects sessions during registration or is assigned sessions by an organizer, those associations are tracked as registrant session enrollments. Use these endpoints to add or remove session assignments for a specific registrant. Session enrollment is separate from session attendance, which records whether the registrant actually showed up. # Overview Source: https://developer.swoogo.com/api-reference/overviews/registrant-types Manage registration type categories for event attendees Registration types define categories of attendees for an event — such as "Attendee", "Exhibitor", or "VIP". Each type can have its own capacity limits, naming, and group size constraints. Registrants are assigned a type during registration. Use these endpoints to create, update, and delete the registration types available for an event. # Overview Source: https://developer.swoogo.com/api-reference/overviews/registrants Individuals registered for an event — manage registrations, check-ins, sessions, and payments Registrants are individuals who have registered for an event. Each registrant belongs to one event and carries a registration status, package selection, session choices, and financial data (fees, taxes, payments). ## What you can do * **Create and update registrations** with attendee details, package selection, and custom field values * **Check in registrants** at the event or at individual sessions * **Trigger emails** such as confirmation, reminder, or approval notifications * **Manage session enrollment** — add or remove registrants from sessions and waitlists * **Assign registrant groups** for group registration management * **Generate access tokens** for registrant-specific authenticated URLs * **View financial data** through line items and audit trails ## Registration statuses Registrants move through various statuses during their lifecycle: | Status | Description | | ----------- | --------------------------------------- | | `confirmed` | Registration is complete and confirmed | | `pending` | Awaiting approval or payment | | `attended` | Registrant attended the event | | `cancelled` | Registration was cancelled | | `denied` | Registration was denied by an organizer | ## Related resources | Resource | Relationship | | --------------------- | --------------------------------------------------------------- | | **Events** | The event the registrant is registered for | | **Registrant Types** | The category of attendee (e.g., "Attendee", "VIP", "Exhibitor") | | **Packages** | The pricing tier selected during registration | | **Sessions** | Sessions the registrant is enrolled in | | **Registrant Groups** | Group registration assignments | | **Line Items** | Itemized fees, taxes, and discounts | | **Transactions** | Payments and refunds | ## Key concepts **Registrant types** — Each registrant is assigned a type (e.g., "Attendee", "Exhibitor", "VIP") that can control capacity, pricing, and access. Manage types via the Registrant Types endpoints. **Session enrollment** — Registrants can be added to sessions directly or placed on a waitlist if the session is at capacity. Use the Registrant Sessions and Registrant Session Waitlists endpoints. **Line items and audits** — Every charge, discount, and tax on a registration is tracked as a line item. The audit trail records all changes to line items for financial reconciliation. **Check-in** — The check-in endpoint updates a registrant's status and can be used for both event-level and session-level attendance tracking. # Overview Source: https://developer.swoogo.com/api-reference/overviews/session-attendance Track and manage session attendance records Session attendance records which registrants attended which sessions, along with timestamps. Use these endpoints to record attendance programmatically or retrieve attendance data for reporting. Attendance is distinct from session enrollment — enrollment tracks who signed up, while attendance tracks who actually showed up. # Overview Source: https://developer.swoogo.com/api-reference/overviews/session-fees Manage pricing for individual sessions Sessions can carry their own fee on top of the base registration package price. Fees support early bird pricing with automatic date-based transitions between early and standard rates. Use these endpoints to view and manage the pricing configuration for individual sessions. # Overview Source: https://developer.swoogo.com/api-reference/overviews/session-fields Manage custom fields that extend the session data model Custom fields extend the standard session data model with your own properties. Use these endpoints to create, update, and delete session-level custom field definitions. Once defined, custom field values can be set when creating or updating sessions. # Overview Source: https://developer.swoogo.com/api-reference/overviews/session-locations Manage physical or virtual locations where sessions take place Locations represent the physical rooms or virtual spaces where sessions take place. Each location includes a name, capacity, and address, and can be assigned to one or more sessions. Use these endpoints to create, update, and delete locations for your event venue. # Overview Source: https://developer.swoogo.com/api-reference/overviews/session-scans Record and manage check-in scans for session attendance Scans represent physical or digital check-in events — such as badge scans at a session room door. Use these endpoints to record scans or retrieve scan data for reporting. Scans feed into session attendance tracking and provide a granular audit trail of check-in activity. # Overview Source: https://developer.swoogo.com/api-reference/overviews/sessions Individual agenda items within an event — talks, workshops, panels, and breaks Sessions are individual agenda items within an event — talks, workshops, panels, or breaks. Sessions have scheduling (date, start/end time, timezone), capacity limits, location assignments, track categorization, and optional fees. Registrants select sessions during registration. ## What you can do * **Create and manage sessions** with scheduling, capacity, and descriptions * **Assign locations** — physical rooms or virtual meeting links * **Organize by tracks** — group sessions into thematic categories * **Set session fees** including early bird pricing * **Manage custom fields** for session-specific data * **Track attendance** and scan check-ins at individual sessions ## Related resources | Resource | Relationship | | ---------------------- | ---------------------------------------- | | **Events** | The parent event containing the session | | **Speakers** | Presenters assigned to the session | | **Tracks** | Thematic category the session belongs to | | **Locations** | Where the session takes place | | **Session Fields** | Custom field definitions on sessions | | **Session Fees** | Pricing for the session | | **Session Attendance** | Attendance records for the session | | **Session Scans** | Check-in scan records | ## Key concepts **Capacity and waitlists** — Sessions can have a maximum capacity. When a session is full, registrants can be added to a waitlist via the Registrant Session Waitlists endpoints. **Tracks** — Tracks group related sessions into thematic categories like "Technical", "Business", or "Keynotes". Registrants can filter sessions by track when building their agenda. **Locations** — Each session can be assigned to a location that includes a name, capacity, and address. Use the Session Locations endpoints to manage venues. **Session fees** — Sessions can carry their own fee on top of the base registration package price. Fees support early bird pricing with automatic date-based transitions. **Attendance tracking** — Use Session Attendance to record who attended, and Session Scans for physical check-in data (e.g., badge scans at the door). # Overview Source: https://developer.swoogo.com/api-reference/overviews/speaker-sessions Manage the many-to-many association between speakers and sessions Speakers and sessions have a many-to-many relationship — a speaker can present at multiple sessions, and a session can have multiple speakers. Use these endpoints to assign or remove speakers from sessions. The API supports both form-encoded and JSON request bodies for creating associations. # Overview Source: https://developer.swoogo.com/api-reference/overviews/speakers Presenters associated with event sessions Speakers are presenters associated with event sessions. Each speaker has profile information — name, bio, company, photo — and can be linked to one or more sessions. ## What you can do * **Create and manage speaker profiles** with biographical details and photos * **Assign speakers to sessions** — link a speaker to one or more agenda items * **Remove speaker assignments** when schedules change ## Related resources | Resource | Relationship | | ------------ | --------------------------------------- | | **Events** | The event the speaker is presenting at | | **Sessions** | The sessions the speaker is assigned to | | **Images** | Speaker profile photos | ## Key concepts **Speaker-session linking** — Speakers and sessions have a many-to-many relationship. A speaker can present at multiple sessions, and a session can have multiple speakers. Use the Speaker Sessions endpoints to manage these associations. **Speaker profiles** — Speaker data includes name, title, company, biography, and social links. This information is typically displayed on event websites and in the event agenda. # Overview Source: https://developer.swoogo.com/api-reference/overviews/sponsor-attendance View sponsor attendance records for events Sponsor attendance tracks which sponsor representatives attended the event. Use these endpoints to retrieve attendance records for sponsors, which is useful for reporting on sponsor engagement and validating sponsor participation commitments. # Overview Source: https://developer.swoogo.com/api-reference/overviews/sponsor-fields Manage custom fields that extend the sponsor data model Custom fields extend the standard sponsor data model with your own properties — common uses include sponsorship tier, booth number, or contract details. Use these endpoints to create, update, and delete sponsor-level custom field definitions. Once defined, custom field values can be set when creating or updating sponsors. # Overview Source: https://developer.swoogo.com/api-reference/overviews/sponsors Organizations or individuals providing support for events Sponsors are organizations or individuals providing support for events. Sponsors have profile data, custom fields, and optional attendance tracking. ## What you can do * **Create and manage sponsor profiles** with company details, logos, and descriptions * **Define custom fields** to capture sponsor-specific data (e.g., sponsorship tier, booth number) * **Track sponsor attendance** at events ## Related resources | Resource | Relationship | | ---------------------- | ------------------------------------ | | **Events** | The event being sponsored | | **Sponsor Fields** | Custom field definitions on sponsors | | **Sponsor Attendance** | Attendance records for sponsors | | **Images** | Sponsor logos and images | ## Key concepts **Custom fields** — Sponsors support custom fields to extend the standard data model. Common uses include sponsorship tier, booth assignment, or contract details. Manage field definitions via the Sponsor Fields endpoints. **Sponsor attendance** — Track which sponsor representatives attended the event using the Sponsor Attendance endpoints. # Overview Source: https://developer.swoogo.com/api-reference/overviews/tracks Thematic categories that group related sessions Tracks group related sessions into thematic categories — for example, "Technical", "Business", "Keynotes", or "Workshops". Registrants can filter sessions by track when building their agenda. ## What you can do * **Create and manage tracks** with names, descriptions, and display order * **Assign sessions to tracks** when creating or updating sessions ## Related resources | Resource | Relationship | | ------------ | ------------------------------------- | | **Events** | The event the track belongs to | | **Sessions** | Sessions categorized under this track | # Overview Source: https://developer.swoogo.com/api-reference/overviews/transactions Financial activity for registrants — payments, refunds, and credits Transactions record financial activity for registrants — payments, refunds, and credits. The API supports offline payment types (credit card, wire transfer, check, cash, etc.) and integration with payment gateways. ## What you can do * **Record payments** for offline transactions (check, cash, wire transfer) * **View transaction history** for any registrant * **Delete erroneous transactions** to correct financial records ## Related resources | Resource | Relationship | | ------------------------- | ----------------------------------------------- | | **Registrants** | The registrant the transaction belongs to | | **Registrant Line Items** | Itemized fees that the transaction pays against | ## Key concepts **Offline payments** — The create endpoint is primarily used for recording offline payments (e.g., a check received in the mail). Online payments processed through Swoogo's payment gateway are recorded automatically. **Transaction types** — Transactions can represent payments, refunds, or credits, each affecting the registrant's balance differently. # Overview Source: https://developer.swoogo.com/api-reference/overviews/webhook-groups Organize webhooks into groups for easier management A webhook group is a container for one or more related webhooks, allowing you to organize callbacks by purpose, integration, or external system. Use these endpoints to create, update, and delete webhook groups. Individual webhooks are then assigned to a group for organizational clarity. # Overview Source: https://developer.swoogo.com/api-reference/overviews/webhooks HTTP callbacks that fire when resources are created, updated, or deleted Swoogo can send HTTP callbacks (webhooks) when resources are created, updated, or deleted. Configure webhooks via the API or the Swoogo UI to keep external systems in sync with your event data. ## What you can do * **Create and manage webhooks** with target URLs and trigger conditions * **Organize webhooks into groups** for easier management * **Configure payload format** — JSON or form-encoded * **Set custom headers** for authentication with your receiving endpoint ## Supported trigger objects Webhooks can fire on changes to these resources: * `event` * `contact` * `registrant` * `speaker` * `sponsor` * `session` * `session_attendance` * `registrant_line_item` ## Related resources | Resource | Relationship | | ------------------ | -------------------------------------- | | **Webhook Groups** | Organizational containers for webhooks | ## Key concepts **Webhook groups** — Group related webhooks together for easier management. A webhook group contains one or more webhooks that share common organizational context. **Payload formats** — Webhooks can deliver payloads as `json` (application/json) or `post` (form-encoded). Choose the format that best fits your receiving endpoint. **Retry logic** — When a webhook delivery fails, Swoogo will retry the request. Configure your receiving endpoint to return a `2xx` status code to acknowledge receipt. # Get package fee configuration Source: https://developer.swoogo.com/api-reference/package-fees/get-package-fee-configuration /api-reference/openapi.yaml get /packages/{package_id}/fee Retrieve the current fee configuration for a specific package, including base price and conditional pricing. **Note:** Only standard conditional pricing is exposed through the API. Early bird pricing is not accessible. # Remove package fee Source: https://developer.swoogo.com/api-reference/package-fees/remove-package-fee /api-reference/openapi.yaml delete /packages/{package_id}/fee Remove the fee for a specific package, effectively making it free. This sets the base price to 0 and clears all conditional pricing. **Note:** This operation cannot be undone through the API. The fee will need to be reconfigured manually if pricing needs to be restored. # Update package fee configuration Source: https://developer.swoogo.com/api-reference/package-fees/update-package-fee-configuration /api-reference/openapi.yaml put /packages/{package_id}/fee Update the fee configuration for a specific package. You can update the base price and/or conditional pricing. **Important Notes:** - Only existing conditional pricing keys can be updated - Non-existent keys are silently ignored - Empty strings can be used to clear specific conditional prices - Early bird pricing cannot be modified through this API # Create Package Source: https://developer.swoogo.com/api-reference/packages/create-package /api-reference/openapi.yaml post /packages/create Creates a new registration package for an event. Requires `event_id` and `name` in the request body. Optionally set `capacity` to limit the number of registrants who can select this package, and configure `min_group_size`/`max_group_size` for group registration constraints. # Delete Package Source: https://developer.swoogo.com/api-reference/packages/delete-package /api-reference/openapi.yaml delete /packages/delete/{package_id} Permanently deletes a registration package by its ID. This will remove the package as a selectable option for future registrations. Existing registrants already assigned to this package are not affected. # Get All Packages Source: https://developer.swoogo.com/api-reference/packages/get-all-packages /api-reference/openapi.yaml get /packages Retrieves all registration packages (pricing tiers) for a specific event. Packages define the pricing structure that registrants select during registration, including capacity limits and group size constraints. Requires the `event_id` query parameter. When the `fields` query parameter is omitted, the response only includes `id`, `name`, and `capacity` for each package. To retrieve additional fields, list them explicitly in `fields`. Use `expand` to include related objects such as fee pricing or translations. Soft-deleted packages are excluded from the results. Results default to the package `sort` order ascending unless overridden with the `sort` parameter.
Extra Fields

This is the extra information that can be returned if required by specifying what you need in the expand variable:

Name Type Description
fees object Fee record for this package, including base price and any conditional pricing.
earlyBirds object Early-bird pricing configuration for this package's fee. Contains a type string and either a flat price/registrations pair (registrations-based) or an items array of date-based tiers.
translations object Custom translations for this package, keyed by language code (e.g. en, fr). Each value is an object of field name → translated string.
# Get One Package Source: https://developer.swoogo.com/api-reference/packages/get-one-package /api-reference/openapi.yaml get /packages/{package_id} Retrieves a single registration package by its ID, including name, capacity, group size limits, and sold-out message. Use the `expand` parameter to include related `earlyBirds` pricing tiers.
Extra Fields

This is the extra information that can be returned if required by specifying what you need in the expand variable:

Name Type Description
earlyBirds object List all available early birds for this package
# Update Package Source: https://developer.swoogo.com/api-reference/packages/update-package /api-reference/openapi.yaml put /packages/update/{package_id} Updates an existing registration package by its ID. You can modify the package name, capacity, group size limits, display names, and sold-out message. Only the fields included in the request body will be updated. # Get All Pages Source: https://developer.swoogo.com/api-reference/pages/get-all-pages /api-reference/openapi.yaml get /pages Retrieves all pages for a specific event website. Pages represent individual web pages within an event site (e.g., registration page, agenda, speaker directory). Requires the `event_id` query parameter. Read-only endpoint. # Get One Page Source: https://developer.swoogo.com/api-reference/pages/get-one-page /api-reference/openapi.yaml get /pages/{page_id} Retrieves a single event page by its ID, including the page name, slug, full URL, type (e.g., registration, agenda), sort order, and associated website. Read-only endpoint. # Rate limits Source: https://developer.swoogo.com/api-reference/rate-limits Understand API rate limiting and how to stay within your quota API requests are rate-limited to **2,000 requests per 10-minute window** per API credential. List endpoints cost **10 credits** per call; all other endpoints cost **1 credit**. ## Response headers Rate limit status is returned on every response: | Header | Description | | ------------------------ | ---------------------------------------------- | | `X-Rate-Limit-Limit` | Maximum requests allowed in the current window | | `X-Rate-Limit-Remaining` | Requests remaining in the current window | | `X-Rate-Limit-Reset` | Seconds until the window resets | ## Exceeding the limit When the limit is exceeded, the API returns `429 Too Many Requests`. Wait for the window to reset before retrying — check the `X-Rate-Limit-Reset` header for the number of seconds remaining. Monitor `X-Rate-Limit-Remaining` in your integration to throttle requests before hitting the limit, rather than reacting to `429` errors. ## Credit costs | Endpoint type | Credits per call | | -------------------------------------------------------- | ---------------- | | List endpoints (e.g., `GET /events`, `GET /registrants`) | 10 | | All other endpoints | 1 | # Add Registrant to Group Source: https://developer.swoogo.com/api-reference/registrant-groups/add-registrant-to-group /api-reference/openapi.yaml post /registrants/{registrant_id}/groups/{group_id} Adds a registrant to an existing registration group. The target group is identified by `group_id` (which is the primary registrant's ID). Both registrants must belong to the same event. When added, the registrant's transactions and line items are consolidated under the group primary's financial records. # Remove Registrant from Group Source: https://developer.swoogo.com/api-reference/registrant-groups/remove-registrant-from-group /api-reference/openapi.yaml delete /registrants/{registrant_id}/group Removes a registrant from their current registration group. The registrant becomes their own group primary with an independent financial record. Transactions are restored to the registrant's individual account. The registrant must not be the group primary to be removed. # Get All Line Item Audits Source: https://developer.swoogo.com/api-reference/registrant-line-item-audits/get-all-line-item-audits /api-reference/openapi.yaml get /registrant-line-item-audit Retrieves the audit trail for registrant line items within an event. Each audit record tracks a historical change to a line item, including price modifications, status changes, and discount applications. Requires the `event_id` query parameter. Useful for financial reconciliation and debugging pricing discrepancies. # Get All Line Items Source: https://developer.swoogo.com/api-reference/registrant-line-items/get-all-line-items /api-reference/openapi.yaml get /registrant-line-items Retrieves all financial line items for registrants within an event. Line items represent individual charges (packages, sessions, custom fees) on a registrant's invoice, including net/gross amounts, tax rates, and quantities. Requires the `event_id` query parameter. Use `search` to filter by registrant_id, object type, status, or amount. # Create Session Waitlist Registrant Source: https://developer.swoogo.com/api-reference/registrant-session-waitlists/create-session-waitlist-registrant /api-reference/openapi.yaml post /registrants/{registrant_id}/session-waitlist/{session_id} Adds a registrant to the waitlist for a sold-out session. Requires both `registrant_id` and `session_id` as path parameters. When a spot opens up in the session, waitlisted registrants can be promoted to confirmed attendees. # Delete Session Waitlist Registrant Source: https://developer.swoogo.com/api-reference/registrant-session-waitlists/delete-session-waitlist-registrant /api-reference/openapi.yaml delete /registrants/{registrant_id}/session-waitlist/{session_id} Removes a registrant from a session's waitlist. Requires both `registrant_id` and `session_id` as path parameters. The registrant will no longer be in line for a spot if one opens up. # Create Registrant Session Source: https://developer.swoogo.com/api-reference/registrant-sessions/create-registrant-session /api-reference/openapi.yaml post /registrants/{registrant_id}/session/{session_id} Adds a session to a registrant's selected sessions. Both `registrant_id` and `session_id` are required path parameters. By default, the request will fail if the session is at capacity or has scheduling conflicts. Set `override_capacity_errors` to bypass capacity checks, `send_email` to trigger a session confirmation email, or `validate_only` to check for conflicts without actually adding the session. # Delete Registrant Session Source: https://developer.swoogo.com/api-reference/registrant-sessions/delete-registrant-session /api-reference/openapi.yaml delete /registrants/{registrant_id}/session/{session_id} Removes a session from a registrant's selected sessions. Requires both `registrant_id` and `session_id` as path parameters. The registrant will no longer appear in the session's attendance list. # Create Type Source: https://developer.swoogo.com/api-reference/registrant-types/create-type /api-reference/openapi.yaml post /reg-types/create Creates a new registration type for an event. Requires `event_id` and `name` in the request body. Optionally set `capacity` to limit how many registrants can select this type. # Delete Type Source: https://developer.swoogo.com/api-reference/registrant-types/delete-type /api-reference/openapi.yaml delete /reg-types/delete/{registrant_type_id} Permanently deletes a registration type by its ID. The type will no longer be available as a selection for new registrations. Existing registrants already assigned to this type are not affected. # Get All Types Source: https://developer.swoogo.com/api-reference/registrant-types/get-all-types /api-reference/openapi.yaml get /reg-types Retrieves all registration types for a specific event. Registration types (e.g., Attendee, Exhibitor, Speaker) categorize registrants and can have different pricing, capacity limits, and group size constraints. Requires the `event_id` query parameter. # Get One Type Source: https://developer.swoogo.com/api-reference/registrant-types/get-one-type /api-reference/openapi.yaml get /reg-types/{registrant_type_id} Retrieves a single registration type by its ID, including name, capacity, group size limits, and sold-out message. Use the `expand` parameter to include related `earlyBirds` pricing tiers.
Extra Fields

This is the extra information that can be returned if required by specifying what you need in the expand variable:

Name Type Description
earlyBirds object List all available early birds for this registration type
# Update Type Source: https://developer.swoogo.com/api-reference/registrant-types/update-type /api-reference/openapi.yaml put /reg-types/update/{registrant_type_id} Updates an existing registration type by its ID. You can modify the name, capacity, group size limits, display names, and sold-out message. Only the fields included in the request body will be updated. # Check Registrant In Source: https://developer.swoogo.com/api-reference/registrants/check-registrant-in /api-reference/openapi.yaml post /registrants/checkin Marks a registrant as checked in (or updates their attendance status) at the event. Sets the `checked_in_at` timestamp and updates the `registration_status` accordingly. Only registrants with a `confirmed` or `attended` status can be checked in. Registrants with status `cancelled`, `incomplete`, `in_progress`, or `api_created` cannot be checked in directly — update their status first. # Create Registrant Source: https://developer.swoogo.com/api-reference/registrants/create-registrant /api-reference/openapi.yaml post /registrants/create Creates a new registrant for a specific event. Requires `event_id` and `email` at minimum. Returns the full registrant record on success. You can assign a `package_id`, `session_ids`, and `discount_code` in a single call to complete a full registration. Set `send_email=true` to trigger the confirmation email to the registrant. Set `override_capacity_errors=true` to register even when the event or sessions are at capacity. The `registration_status` defaults to `confirmed` if not specified. Financial fields (`individual_net`, `group_gross`, etc.) are calculated automatically and cannot be set directly. # Create Registrant Token Source: https://developer.swoogo.com/api-reference/registrants/create-registrant-token /api-reference/openapi.yaml post /registrants/token Creates a pre-population token that allows registrant details to be pre-filled on a registration form. Returns a token and a ready-to-use resume URL. Pass `event_id` and any registrant fields (e.g., `fields[email]`, `fields[first_name]`, `fields[package_id]`) to generate a token. The returned URL (`https://client.swoogo.com/event/resume?i=TOKEN`) can be sent to the registrant to let them complete registration with their details pre-filled. Common use case: sending personalized registration links via email campaigns or CRM integrations where you already know some attendee details. # Email Registrant Source: https://developer.swoogo.com/api-reference/registrants/email-registrant /api-reference/openapi.yaml post /registrants/{registrant_id}/trigger-email/{email_type} Triggers a transactional email to a registrant. Use this to re-send confirmation emails, send abandoned registration reminders, or notify registrants of modifications or cancellations. The email content is configured in your Swoogo event's email templates. This endpoint triggers the sending — it does not customize the email body. # Get All Registrants Source: https://developer.swoogo.com/api-reference/registrants/get-all-registrants /api-reference/openapi.yaml get /registrants Retrieves a paginated list of registrants for a specific event. Returns registrant profile data, registration status, and financial summaries. Requires `event_id` as a query parameter. Use `fields` to control which fields are returned (defaults to `id`, `first_name`, `last_name` when not specified). Use `expand` to include related objects: `homeAddress`, `workAddress`, `billingAddress`, `emailHistory`. Use `search` to filter by any registrant field (e.g., `registration_status=confirmed`, `email=*@example.com*`). Supports operators: `=`, `!=`, `>=`, `<=`, `>`, `<`, `*contains*`, `*beginswith*`, `*endswith*`. Maximum 200 results per page with `per-page`, or up to 1000 per page when no `expand` is used. # Get One Registrant Source: https://developer.swoogo.com/api-reference/registrants/get-one-registrant /api-reference/openapi.yaml get /registrants/{registrant_id} Retrieves a single registrant by their unique ID. Returns the full registrant profile including personal details, registration status, financial totals, and session assignments. Use `fields` to limit which fields are returned. Use `expand` to include related objects: `homeAddress`, `workAddress`, `billingAddress`, `emailHistory`. Financial fields like `individual_net`, `group_gross`, and `payment_status` are always read-only. # Update Registrant Source: https://developer.swoogo.com/api-reference/registrants/update-registrant /api-reference/openapi.yaml put /registrants/update/{registrant_id} Updates an existing registrant's profile data by their unique ID. Only the fields included in the request body are modified; omitted fields are left unchanged. You can update personal details (name, email, company), registration status, package, sessions, and custom fields. Financial fields (`individual_net`, `group_gross`, `payment_status`, etc.) are read-only and cannot be modified through this endpoint. Set `override_capacity_errors=true` to allow changes to packages or sessions that are at capacity. Without this flag, capacity-exceeded updates will return an error. # Create Session Attendance Source: https://developer.swoogo.com/api-reference/session-attendance/create-session-attendance /api-reference/openapi.yaml post /session-attendances/create Creates a new attendance record to mark a registrant as having attended a session. Requires `session_id` and `registrant_id` in the request body. This is separate from session registration and represents actual physical attendance. # Get All Attendance Source: https://developer.swoogo.com/api-reference/session-attendance/get-all-attendance /api-reference/openapi.yaml get /session-attendances Retrieves all session attendance records for an event. Each record links a registrant to a session and tracks whether they actually attended (as opposed to just being registered). Requires the `event_id` query parameter. Useful for post-event reporting and CE credit tracking. # Update Session Attendance Source: https://developer.swoogo.com/api-reference/session-attendance/update-session-attendance /api-reference/openapi.yaml put /session-attendances/update/{session_attendance_id} Updates an existing session attendance record by its ID. Use this to modify the attendance status or other details of a previously recorded attendance entry. # Get session fee configuration Source: https://developer.swoogo.com/api-reference/session-fees/get-session-fee-configuration /api-reference/openapi.yaml get /sessions/{session_id}/fee Retrieve the current fee configuration for a specific session, including base price and conditional pricing. **Note:** Only standard conditional pricing is exposed through the API. Early bird pricing is not accessible. # Remove session fee Source: https://developer.swoogo.com/api-reference/session-fees/remove-session-fee /api-reference/openapi.yaml delete /sessions/{session_id}/fee Remove the fee for a specific session, effectively making it free. This sets the base price to 0 and clears all conditional pricing. **Note:** This operation cannot be undone through the API. The fee will need to be reconfigured manually if pricing needs to be restored. # Update session fee configuration Source: https://developer.swoogo.com/api-reference/session-fees/update-session-fee-configuration /api-reference/openapi.yaml put /sessions/{session_id}/fee Update the fee configuration for a specific session. You can update the base price and/or conditional pricing. **Important Notes:** - Only existing conditional pricing keys can be updated - Non-existent keys are silently ignored - Empty strings can be used to clear specific conditional prices - Early bird pricing cannot be modified through this API # Create Field Source: https://developer.swoogo.com/api-reference/session-fields/create-field /api-reference/openapi.yaml post /sessions/field Creates a new custom field definition for sessions. Specify the field name, type (text, dropdown, checkbox, etc.), visibility, sort order, and choices (for selection-type fields). The field will become available for data entry on all sessions. # Delete Field Source: https://developer.swoogo.com/api-reference/session-fields/delete-field /api-reference/openapi.yaml delete /sessions/field/{field_id} Permanently deletes a custom session field definition by its ID. Any data stored in this field on existing sessions will no longer be accessible. # Get All Fields Source: https://developer.swoogo.com/api-reference/session-fields/get-all-fields /api-reference/openapi.yaml get /sessions/fields Retrieves all custom field definitions for sessions. These fields define the schema for additional data that can be captured on sessions (e.g., custom text fields, dropdowns, URLs). Each field includes its attribute name, display type, visibility, sort order, and validation requirements. # Get One Field Source: https://developer.swoogo.com/api-reference/session-fields/get-one-field /api-reference/openapi.yaml get /sessions/field/{field_id} Retrieves a single custom session field definition by its ID, including the attribute name, field type, visibility settings, validation rules, and available choices (for dropdown/radio fields). # Update Field Source: https://developer.swoogo.com/api-reference/session-fields/update-field /api-reference/openapi.yaml put /sessions/field/{field_id} Updates an existing custom session field definition by its ID. You can modify the field name, type, visibility, sort order, validation rules, and available choices. # Create Location Source: https://developer.swoogo.com/api-reference/session-locations/create-location /api-reference/openapi.yaml post /locations/create Creates a new session location (room/venue) for an event. Requires `event_id` and `name` in the request body. Optional fields: `capacity` (max occupancy), `color` (hex code used for display in session calendars), and `use_event_address` (when true, the location reuses the event's address rather than its own). # Delete Location Source: https://developer.swoogo.com/api-reference/session-locations/delete-location /api-reference/openapi.yaml delete /locations/delete/{location_id} Permanently deletes a session location by its ID. Sessions currently assigned to this location will need to be reassigned to a different location. # Get All Locations Source: https://developer.swoogo.com/api-reference/session-locations/get-all-locations /api-reference/openapi.yaml get /locations Retrieves all session locations (rooms/venues) for a specific event. Locations can be assigned to sessions and include details like name, capacity, and address. Requires the `event_id` query parameter. # Get One Location Source: https://developer.swoogo.com/api-reference/session-locations/get-one-location /api-reference/openapi.yaml get /locations/{location_id} Retrieves a single session location by its ID, including the location name, capacity, and address details. # Update Location Source: https://developer.swoogo.com/api-reference/session-locations/update-location /api-reference/openapi.yaml put /locations/update/{location_id} Updates an existing session location by its ID. You can modify the name, capacity, and address. Only the fields included in the request body will be updated. # Create Session Scan Source: https://developer.swoogo.com/api-reference/session-scans/create-session-scan /api-reference/openapi.yaml post /scans/registrant/{registrant_id}/session/{session_id} Records a new check-in scan for a registrant at a session. Requires `registrant_id` and `session_id` as path parameters. Use this to programmatically check in attendees at session entrances, equivalent to scanning their badge or QR code. # Delete Scan Source: https://developer.swoogo.com/api-reference/session-scans/delete-scan /api-reference/openapi.yaml delete /scans/registrant/{registrant_id}/session/{session_id} Deletes a session check-in scan record for a specific registrant and session. Use this to reverse an accidental check-in or correct scanning errors. # Get All Scans Source: https://developer.swoogo.com/api-reference/session-scans/get-all-scans /api-reference/openapi.yaml get /scans/sessions Retrieves all session check-in scan records for an event. Scans are created when a registrant's badge or QR code is scanned at a session entrance, providing a timestamped record of physical check-in. Requires the `event_id` query parameter. # Create Session Source: https://developer.swoogo.com/api-reference/sessions/create-session /api-reference/openapi.yaml post /sessions/create Creates a new session within an event. Returns the full session record on success. Required fields: `event_id`, `name`, and `date`. Optionally set `start_time`, `end_time`, `capacity`, `location_id`, `track_id`, `timezone`, and `description`. If `timezone` is not provided, the session inherits the event's timezone. Sessions are created with `session_status=live` by default. Use `selection_control` to set whether the session is optional or automatically included in registrations. # Delete Session Source: https://developer.swoogo.com/api-reference/sessions/delete-session /api-reference/openapi.yaml delete /sessions/delete/{session_id} Permanently deletes a session by its unique ID. Returns a `204 No Content` response on success. Deleting a session removes it from all registrant session assignments and from the event agenda. This action cannot be undone. Any registrants assigned to this session will have it removed from their `session_ids`. # Get All Sessions Source: https://developer.swoogo.com/api-reference/sessions/get-all-sessions /api-reference/openapi.yaml get /sessions Retrieves a paginated list of sessions for a specific event. Returns session scheduling, capacity, track, and configuration details. Requires `event_id` as a query parameter. Use `fields` to control which fields are returned. Use `search` to filter by any session field (e.g., `date=2025-08-08`, `session_status=live`, `name=*keynote*`). Supports operators: `=`, `!=`, `>=`, `<=`, `>`, `<`, `*contains*`, `*beginswith*`, `*endswith*`. Use `expand` to include related objects: `speakers`, `location`, `track`, `translations`, `sessionAttendance`, `registrantCount`, `reservedCount`, `earlyBirds`. Results are paginated with a maximum of 200 per page.
Available Fields

These are the standard fields available for configuring a session:

Name Type Description
id integer Unique identifier for the session.
event_id integer ID of the event associated with this session.
name string Title or name of the session.
admin_short_name string Admin-specific short name for internal usage.
badge_name string Display name on attendee badges.
description string Detailed description of the session.
date string (date) The date when the session will take place.
start_time string (time) Start time of the session.
end_time string (time) End time of the session.
use_event_timezone integer Whether the event's default timezone is applied to the session.
timezone string Timezone for the session (see TZ Identifier column in the List of TZ Database Time Zones).
capacity integer Maximum number of attendees allowed.
location_id integer Identifier for the location.
track_id integer Identifier for the session's track.
selection_control string Specifies whether the session is optional or included by default, setting the value 'session_included'.
webinar_url string (uri) URL for the webinar if the session is virtual.
sold_out_message string Custom message displayed when the session is sold out.
secure_id string Secure identifier for the session.
session_status string Current status of the session. Possible values: submitted, approved, rejected, converted, live.
locked_when_saved boolean Whether the session is locked after being saved.
selected_by_default boolean Indicates if the session is selected by default for attendees.
prevent_session_conflicts boolean Whether should prevent conflicts with other sessions when selecting this session.
custom_fields object Custom fields associated with the session. Key-value pairs can be dynamic.
Extra Fields

This is the extra information that can be returned if required by specifying what you need in the expand variable:

Name Type Description
speakers object List of speakers assigned to this session
location object Selected Location for this event
track object Selected track for this event
translations object Custom translations set for this event
sessionAttendance object Session Attendance Information
registrantCount object Number of Registrants registered to this session
reservedCount object Number of Reserved seats for this session
earlyBirds object List all available early birds for this session
# Get One Session Source: https://developer.swoogo.com/api-reference/sessions/get-one-session /api-reference/openapi.yaml get /sessions/{session_id} Retrieves a single session by its unique ID. Returns the full session record including name, date, times, capacity, location, track, and status. Use `fields` to limit which fields are returned. Use `expand` to include related objects such as `speakers`, `location`, `track`, `translations`, `sessionAttendance`, `registrantCount`, `reservedCount`, and `earlyBirds`. # Update Session Source: https://developer.swoogo.com/api-reference/sessions/update-session /api-reference/openapi.yaml put /sessions/update/{session_id} Updates an existing session by its unique ID. Only the fields included in the request body are modified; omitted fields are left unchanged. You can update scheduling (`date`, `start_time`, `end_time`), metadata (`name`, `description`, `track_id`, `location_id`), capacity, and session behavior (`selection_control`, `locked_when_saved`, `prevent_session_conflicts`). Changes to a live session take effect immediately for attendees viewing the agenda. # Add sessions to speaker (JSON body) Source: https://developer.swoogo.com/api-reference/speaker-sessions/add-sessions-to-speaker-json-body /api-reference/openapi.yaml post /speakers/{speaker_id}/session.json Assigns a speaker to one or more sessions in a single request using a JSON body with an array of `session_ids`. The speaker is identified by `speaker_id` in the path. All sessions must belong to the same event as the speaker. Returns the full speaker object including the updated sessions list on success, or validation errors if any session ID is invalid. # Create Speaker Source: https://developer.swoogo.com/api-reference/speaker-sessions/create-speaker /api-reference/openapi.yaml post /speakers/{speaker_id}/session/{session_id} Assigns a speaker to a single session by providing both `speaker_id` and `session_id` as path parameters. The speaker and session must belong to the same event. Returns the created association. To assign a speaker to multiple sessions at once, use the JSON body variant of this endpoint instead. # Delete Speaker Source: https://developer.swoogo.com/api-reference/speaker-sessions/delete-speaker /api-reference/openapi.yaml delete /speakers/{speaker_id}/session/{session_id} Removes a speaker from a specific session by providing both `speaker_id` and `session_id` as path parameters. This only removes the association -- the speaker and session records themselves are not deleted. # Create Speaker Source: https://developer.swoogo.com/api-reference/speakers/create-speaker /api-reference/openapi.yaml post /speakers/create Creates a new speaker for an event by linking an existing contact. Both `event_id` and `contact_id` are required. The speaker's profile data (name, email, company, bio) is pulled from the linked contact record. Returns the newly created speaker object. Note that speakers cannot be updated via PUT -- to change speaker details, update the underlying contact or delete and re-create the speaker. # Delete Speaker Source: https://developer.swoogo.com/api-reference/speakers/delete-speaker /api-reference/openapi.yaml delete /speakers/delete/{speaker_id} Permanently removes a speaker from an event by `speaker_id`. This also removes any session associations for the speaker. The underlying contact record is not affected. Note that there is no PUT endpoint for speakers -- to modify speaker data, update the linked contact record directly. # Get All Speakers Source: https://developer.swoogo.com/api-reference/speakers/get-all-speakers /api-reference/openapi.yaml get /speakers Returns a paginated list of speakers for a specific event. Requires the `event_id` query parameter. Default fields returned are `id`, `first_name`, and `last_name` -- use `fields` to request additional properties and `expand=sessions` to include each speaker's assigned sessions. Use `search` to filter by any speaker field (e.g., `company=Acme`) and `sort` to control ordering. # Get One Speaker Source: https://developer.swoogo.com/api-reference/speakers/get-one-speaker /api-reference/openapi.yaml get /speakers/{speaker_id} Returns the full details of a single speaker by `speaker_id`. Use `fields` to limit which properties are returned and `expand=sessions` to include the list of sessions assigned to this speaker. Speaker profile data (name, email, company, bio) originates from the linked contact record. # Get All Attendance Source: https://developer.swoogo.com/api-reference/sponsor-attendance/get-all-attendance /api-reference/openapi.yaml get /sponsor-attendances Returns a paginated list of sponsor attendance records for a specific event. Requires the `event_id` query parameter. Each record tracks a sponsor's participation or booth presence at the event. Use `search` to filter results and `fields` to limit which properties are returned. # Create Field Source: https://developer.swoogo.com/api-reference/sponsor-fields/create-field /api-reference/openapi.yaml post /sponsors/field Creates a new custom field definition for sponsors. Requires `name` and `type` (e.g., textInput, dropDownList, textArea). For choice-based types, include a `choices` array. Optional properties include sort order, visibility, required flag, and HTML settings. Returns the newly created field definition. # Delete Field Source: https://developer.swoogo.com/api-reference/sponsor-fields/delete-field /api-reference/openapi.yaml delete /sponsors/field/{field_id} Permanently deletes a sponsor custom field definition by `field_id`. This removes the field schema and all stored values for this field across all sponsors. This action cannot be undone. # Get All Fields Source: https://developer.swoogo.com/api-reference/sponsor-fields/get-all-fields /api-reference/openapi.yaml get /sponsors/fields Returns a paginated list of custom field definitions available for sponsors. These define the schema for custom data that can be stored on sponsor records (e.g., sponsorship level, booth number). Each field includes its type, name, sort order, visibility, and choices (for dropdown/multi-select fields). Use `search` to filter and `fields` to limit returned properties. # Get One Field Source: https://developer.swoogo.com/api-reference/sponsor-fields/get-one-field /api-reference/openapi.yaml get /sponsors/field/{field_id} Returns the full details of a single sponsor custom field definition by `field_id`, including its type, name, attribute key, sort order, visibility, required flag, and available choices (for dropdown or multi-select fields). # Update Field Source: https://developer.swoogo.com/api-reference/sponsor-fields/update-field /api-reference/openapi.yaml put /sponsors/field/{field_id} Updates an existing sponsor custom field definition by `field_id`. Send only the properties you want to change. For choice-based fields, you can add new choices, update existing choices by `id`, or delete choices by passing `delete: true` with the choice `id`. Returns the full updated field definition including all current choices. # Create Sponsor Source: https://developer.swoogo.com/api-reference/sponsors/create-sponsor /api-reference/openapi.yaml post /sponsors/create Creates a new sponsor for an event. Both `event_id` and `name` are required. You can also set optional fields such as website, description, level, and logo_id. Returns the newly created sponsor object. # Delete Sponsor Source: https://developer.swoogo.com/api-reference/sponsors/delete-sponsor /api-reference/openapi.yaml delete /sponsors/delete/{sponsor_id} Permanently deletes a sponsor from an event by `sponsor_id`. This also removes any sponsor attendance records and custom field values associated with the sponsor. This action cannot be undone. # Get All Sponsors Source: https://developer.swoogo.com/api-reference/sponsors/get-all-sponsors /api-reference/openapi.yaml get /sponsors Returns a paginated list of sponsors for a specific event. Requires the `event_id` query parameter. Default fields returned are `id` and `name` -- use `fields` to request additional properties such as website, description, level, logo_id, and direct_link. Use `search` to filter by any sponsor field and `sort` to control ordering. # Get One Sponsor Source: https://developer.swoogo.com/api-reference/sponsors/get-one-sponsor /api-reference/openapi.yaml get /sponsors/{sponsor_id} Returns the full details of a single sponsor by `sponsor_id`, including name, description, level, website, logo, and direct link. Use `fields` to limit which properties are returned. # Update One Sponsor Source: https://developer.swoogo.com/api-reference/sponsors/update-one-sponsor /api-reference/openapi.yaml put /sponsors/update/{sponsor_id} Updates an existing sponsor by `sponsor_id`. Send only the fields you want to change -- any omitted fields retain their current values. Updatable fields include name, website, description, level, logo_id, and notes. Returns the full updated sponsor object. # Create Track Source: https://developer.swoogo.com/api-reference/tracks/create-track /api-reference/openapi.yaml post /tracks/create Creates a new session track for an event. Requires `event_id` and `name` in the request body. Once created, sessions can be assigned to this track to categorize the event agenda. # Delete Track Source: https://developer.swoogo.com/api-reference/tracks/delete-track /api-reference/openapi.yaml delete /tracks/delete/{track_id} Permanently deletes a session track by its ID. Sessions currently assigned to this track will need to be reassigned or will lose their track categorization. # Get All Tracks Source: https://developer.swoogo.com/api-reference/tracks/get-all-tracks /api-reference/openapi.yaml get /tracks Retrieves all tracks for a specific event. Tracks are thematic categories used to organize sessions (e.g., "Technical", "Business", "Workshop"). Requires the `event_id` query parameter. Sessions can be assigned to tracks to help attendees filter and navigate the agenda. # Get One Track Source: https://developer.swoogo.com/api-reference/tracks/get-one-track /api-reference/openapi.yaml get /tracks/{track_id} Retrieves a single session track by its ID, including the track name, color, and description. # Update Track Source: https://developer.swoogo.com/api-reference/tracks/update-track /api-reference/openapi.yaml put /tracks/update/{track_id} Updates an existing session track by its ID. You can modify the track name, color, and description. # Create Transaction Source: https://developer.swoogo.com/api-reference/transactions/create-transaction /api-reference/openapi.yaml post /transactions/create Creates an offline transaction record for a registrant. Use this for payments or refunds processed outside the online payment gateway (e.g., wire transfers, checks, cash). Requires `event_id`, `registrant_id`, `type`, and `amount`. The `type` must be an offline payment or refund type such as `wire_transfer_payment`, `check_payment`, `cash_refund`, etc. Online payment types (e.g., credit_card_payment) cannot be created through this endpoint. # Delete Transaction Source: https://developer.swoogo.com/api-reference/transactions/delete-transaction /api-reference/openapi.yaml delete /transactions/delete/{transaction_id} Permanently deletes a transaction record by its ID. This removes the financial record from the registrant's payment history and may affect their payment status and balance due calculations. # Get All Transactions Source: https://developer.swoogo.com/api-reference/transactions/get-all-transactions /api-reference/openapi.yaml get /transactions Retrieves all financial transaction records for a specific event. Transactions include payments, refunds, and credits linked to registrants. Requires the `event_id` query parameter. Each record contains the amount, type (e.g., credit_card_payment, wire_transfer_refund), status, and associated registrant. Use `search` to filter by registrant_id, status, amount, or date range. # Get One Transaction Source: https://developer.swoogo.com/api-reference/transactions/get-one-transaction /api-reference/openapi.yaml get /transactions/{transaction_id} Retrieves a single transaction by its ID, including payment details (amount, type, status), card information (last 4 digits, card type), associated registrant, and payment gateway used. # Create Webhook Group Source: https://developer.swoogo.com/api-reference/webhook-groups/create-webhook-group /api-reference/openapi.yaml post /webhook-groups/create Creates a new webhook group. Specify the group name and assign it to one or more events. After creating the group, use the Create Webhook endpoint to add individual webhook configurations to it. # Delete Webhook Group Source: https://developer.swoogo.com/api-reference/webhook-groups/delete-webhook-group /api-reference/openapi.yaml delete /webhook-groups/delete/{webhook_group_id} Permanently deletes a webhook group and all webhooks it contains. All HTTP callbacks from webhooks in this group will immediately stop firing. # Get All Webhook Groups Source: https://developer.swoogo.com/api-reference/webhook-groups/get-all-webhook-groups /api-reference/openapi.yaml get /webhook-groups Retrieves all webhook groups. Webhook groups organize individual webhooks and control which events they apply to. A group is assigned to one or more events, and all webhooks within the group will fire for those events. This allows you to manage webhook configurations across multiple events centrally.
Available Fields

These are the standard fields available for configuring a webhook:

Name Type Description
id integer The ID of the webhook group.
name string The name of the webhook group.
headers array Defined headers for the group.
notification_emails array Emails notified when a webhook in the group fails.
Extra Fields

Additional information that can be returned by specifying the desired fields in the expand parameter:

Name Type Description
webhooks object List of webhooks associated with this group.
# Get One Webhook Group Source: https://developer.swoogo.com/api-reference/webhook-groups/get-one-webhook-group /api-reference/openapi.yaml get /webhook-groups/{webhook_group_id} Retrieves a single webhook group by its ID, including the group name, associated event IDs, and the list of webhooks it contains. # Update Webhook Group Source: https://developer.swoogo.com/api-reference/webhook-groups/update-webhook-group /api-reference/openapi.yaml put /webhook-groups/update/{webhook_group_id} Updates an existing webhook group by its ID. You can modify the group name and the list of events it applies to. # Create Webhook Source: https://developer.swoogo.com/api-reference/webhooks/create-webhook /api-reference/openapi.yaml post /webhooks/create Creates a new webhook configuration. Specify the target URL, trigger event type, HTTP method, and optional custom headers. The webhook must be assigned to a webhook group, which controls which events it applies to. # Delete Webhook Source: https://developer.swoogo.com/api-reference/webhooks/delete-webhook /api-reference/openapi.yaml delete /webhooks/delete/{webhook_id} Permanently deletes a webhook configuration by its ID. The webhook will immediately stop sending HTTP callbacks for its trigger event type. # Get All Webhooks Source: https://developer.swoogo.com/api-reference/webhooks/get-all-webhooks /api-reference/openapi.yaml get /webhooks Retrieves all webhook configurations. Webhooks send HTTP POST callbacks to your specified URL when events occur in Swoogo (e.g., new registration, session check-in, payment received). Each webhook defines the target URL, trigger event type, and which webhook group it belongs to.
Available Fields

These are the standard fields available for configuring a webhook:

Name Type Description
id integer The ID of the webhook.
name string The name of the webhook.
url string The URL that data should be sent to.
trigger_object string The object that will cause the webhook to run.
trigger_on_insert boolean Trigger when the object is inserted.
trigger_on_update boolean Trigger when the object is updated.
trigger_on_delete boolean Trigger when the object is deleted.
fields array Array of fields which, when changed, will cause the webhook to run.
public_user boolean Run the webhook for a public user.
admin_user boolean Run the webhook for an admin user.
api_call boolean Run the webhook on an API call.
any_event boolean Run the webhook for any events (only applicable for some objects such as registrants).
event_ids array Array of event IDs to run the webhook for (if any_event is false).
all_fields boolean Should this run for changes to all fields?
Extra Fields

Additional information that can be returned by specifying the desired fields in the expand parameter:

Name Type Description
group object Details about the Webhook Group associated with the item.
# Get One Webhook Source: https://developer.swoogo.com/api-reference/webhooks/get-one-webhook /api-reference/openapi.yaml get /webhooks/{webhook_id} Retrieves a single webhook configuration by its ID, including the target URL, trigger event type, HTTP method, headers, and associated webhook group. # Update Webhook Source: https://developer.swoogo.com/api-reference/webhooks/update-webhook /api-reference/openapi.yaml put /webhooks/update/{webhook_id} Updates an existing webhook configuration by its ID. You can modify the target URL, trigger event type, HTTP method, headers, and active status. # Introduction Source: https://developer.swoogo.com/mcp/introduction Connect AI assistants to your Swoogo data with the Model Context Protocol The Swoogo MCP server lets AI assistants like Claude and Cursor directly interact with your Swoogo events, registrants, sessions, speakers, sponsors, and more — using the [Model Context Protocol](https://modelcontextprotocol.io) (MCP). **Server URL:** `https://mcp.swoogo.com` ## What is MCP? The Model Context Protocol is an open standard that allows AI applications to securely connect to external data sources and tools. Instead of copying and pasting data, your AI assistant can query and modify your Swoogo data directly through natural language. ## What you can do Look up events, sessions, speakers, sponsors, registrants, and packages with flexible filtering and search. Create registrants, assign sessions, record transactions, and trigger confirmation emails. Create and update sessions, speakers, and sponsors directly from your AI assistant. Get session attendance statistics, view check-in data, and track participation rates. ## Available tools The MCP server exposes **23 tools** organized by resource: | Category | Tools | Operations | | ---------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------- | | **Events** | `swoogo_get_events`, `swoogo_find_event`, `swoogo_get_event_bundle` | List, search, fuzzy-match, full event data bundle | | **Sessions** | `swoogo_get_sessions`, `swoogo_create_session`, `swoogo_update_session` | List, detail, create, update | | **Registrants** | `swoogo_get_registrants`, `swoogo_create_registrant`, `swoogo_add_registrant_to_session` | List, detail, register, assign sessions | | **Speakers** | `swoogo_get_speakers`, `swoogo_create_speaker`, `swoogo_update_speaker` | List, detail, create, update | | **Sponsors** | `swoogo_get_sponsors`, `swoogo_create_sponsor`, `swoogo_update_sponsor` | List, detail, create, update | | **Contacts** | `swoogo_get_contacts`, `swoogo_create_contact` | List, detail, create | | **Packages** | `swoogo_get_packages` | List, detail, pricing | | **Transactions** | `swoogo_get_transaction`, `swoogo_create_transaction` | Detail, record payments | | **Attendance** | `swoogo_get_session_attendance`, `swoogo_session_attendance_stats` | Records, aggregated stats | | **Forms** | `swoogo_get_registration_form`, `swoogo_registration_form` | Form config, interactive UI | # Setup Source: https://developer.swoogo.com/mcp/setup Connect your AI assistant to Swoogo via the MCP server ## Prerequisites You'll need your Swoogo API credentials (consumer key and secret) from **My Profile > API Credentials** in Swoogo. ## Connect your client Open Claude Desktop settings and add the Swoogo MCP server URL: ``` https://mcp.swoogo.com ``` Claude Desktop will open a browser window. Enter your Swoogo API consumer key and secret to authorize access. The Swoogo tools will appear in Claude Desktop. Try asking: *"Show me my upcoming events"* Add the Swoogo MCP server to your Claude Code configuration: ```bash theme={null} claude mcp add swoogo https://mcp.swoogo.com ``` Follow the OAuth flow in your browser when prompted, entering your Swoogo API consumer key and secret. Swoogo tools are now available. Try: *"List all sessions for event 12345"* In Cursor's MCP settings, add a new server with the URL: ``` https://mcp.swoogo.com ``` Complete the OAuth flow in the browser window that opens, entering your Swoogo API credentials. Swoogo tools are now available in your AI assistant panel. ## Authentication The MCP server supports two authentication modes: ### OAuth 2.0 (recommended) Used by Claude Desktop, Cursor, and other GUI-based MCP clients. The server implements OAuth 2.0 Authorization Code with PKCE (RFC 7636): 1. Your MCP client discovers the OAuth endpoints via `/.well-known/oauth-authorization-server` 2. You authorize in the browser by entering your Swoogo API credentials 3. The server issues encrypted access and refresh tokens 4. Tokens are automatically refreshed — no manual re-authentication needed Access tokens expire after **1 hour** and are automatically refreshed. Refresh tokens are valid for **30 days**. ### Bearer token (CLI / scripts) For programmatic access or CLI-based MCP clients: 1. Base64-encode your credentials: `base64(consumer_key:consumer_secret)` 2. Send as a Bearer token in the Authorization header ```bash theme={null} # Encode your credentials echo -n "YOUR_KEY:YOUR_SECRET" | base64 ``` The server exchanges this for a Swoogo API token on each request and caches it until expiry. ## Common parameters Most read tools share these optional parameters: | Parameter | Description | | ---------- | ----------------------------------------------------- | | `fields` | Comma-separated list of fields to return | | `expand` | Include related objects (e.g., `sessions`, `contact`) | | `search` | Raw Swoogo search filter (e.g., `status=confirmed`) | | `page` | Page number (default: 1) | | `per_page` | Results per page (default: 20, max: 100) | | `sort` | Sort field, prefix with `-` for descending | ## Error handling The server returns helpful error messages with recovery hints: | Error | Meaning | Recovery | | ----- | ------------------- | ----------------------------------------------------------------------------- | | `401` | Credentials expired | Re-authorize via your MCP client | | `404` | Resource not found | Verify the ID exists | | `422` | Validation failed | Check required fields — call `swoogo_get_registration_form` for field details | | `429` | Rate limited | Wait and retry — the response includes the wait time | # Attendance Source: https://developer.swoogo.com/mcp/tools/attendance Track session attendance and get aggregated statistics ## swoogo\_get\_session\_attendance List or retrieve session attendance records. ### Parameters | Parameter | Type | Required | Description | | --------------- | ------- | -------------- | ---------------------------------------- | | `attendance_id` | integer | No | Get a single attendance record by ID | | `event_id` | integer | Yes (for list) | Event to list attendance for | | `session_id` | integer | No | Filter by session | | `registrant_id` | integer | No | Filter by registrant | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | ### Example prompts * *"Show attendance for session 456"* * *"Did registrant 789 attend the keynote?"* *** ## swoogo\_session\_attendance\_stats Get aggregated attendance statistics — registered count, checked-in count, no-shows, and attendance rates — per session. ### Parameters | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------- | | `event_id` | integer | Yes | Event to get stats for | | `session_id` | integer | No | Limit to a specific session | ### Response Returns per-session stats with: `session_id`, `registered`, `checked_in`, `no_show`, `attendance_rate_percent`. ### Example prompts * *"What are the attendance rates for event 12345?"* * *"How many people showed up to the keynote?"* * *"Which sessions had the lowest attendance?"* # Contacts Source: https://developer.swoogo.com/mcp/tools/contacts Query and create account-level CRM contacts ## swoogo\_get\_contacts List or retrieve contacts from your Swoogo CRM. Contacts are account-level records, not tied to a specific event. ### Parameters | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ---------------------------------------- | | `contact_id` | integer | No | Get a single contact by ID | | `email` | string | No | Filter by email address | | `name` | string | No | Filter by name (partial match) | | `company` | string | No | Filter by company name | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | ### Example prompts * *"Find the contact with email [jane@example.com](mailto:jane@example.com)"* * *"List contacts from Acme Corp"* *** ## swoogo\_create\_contact Create a new contact in your Swoogo CRM. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | --------------------- | | `email` | string | Yes | Contact email address | | `first_name` | string | No | First name | | `last_name` | string | No | Last name | | `company` | string | No | Company name | | `job_title` | string | No | Job title | | `additional_fields` | object | No | Custom field values | # Events Source: https://developer.swoogo.com/mcp/tools/events Query events, fuzzy-match by name, and fetch complete event bundles ## swoogo\_get\_events Look up Swoogo events with search, filter, and pagination support. Pass an `event_id` for a single event's details, or filter to list events. ### Parameters | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------------- | | `event_id` | integer | No | Get a single event by ID | | `name` | string | No | Filter by event name (partial match) | | `status` | string | No | Filter by status | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | ### Example prompts * *"Show me all active events"* * *"Get details for event 12345"* * *"List events sorted by date"* *** ## swoogo\_find\_event Fuzzy-match an event by name. Handles typos, partial matches, and abbreviations. Returns the best match with a confidence score, or a list of candidates. ### Parameters | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------- | | `name` | string | Yes | Event name to search for (supports partial/fuzzy matching) | | `status` | string | No | Filter by event status | ### Example prompts * *"Find the annual sales conference"* * *"Which event is called something like 'tech summit 2025'?"* *** ## swoogo\_get\_event\_bundle Fetch complete event data in a single call — event details, sessions, speakers, sponsors, packages, registration types, and form questions. ### Parameters | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------ | | `event_id` | integer | Yes | The event ID | ### Example prompts * *"Give me everything about event 12345"* * *"What's the full setup for our conference?"* # Registration forms Source: https://developer.swoogo.com/mcp/tools/forms Retrieve form configuration and display interactive registration forms ## swoogo\_get\_registration\_form Get the complete registration form configuration for an event — all fields, types, choices, validation rules, and submission instructions. ### Parameters | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------------------- | | `event_id` | integer | Yes | Event to get the form for | ### Response Returns: * **Event info** — name, dates, status * **Form fields** — array of fields with type, label, required flag, choices, and description * **Submission endpoint** — URL and authentication instructions for submitting registrations Call this tool before `swoogo_create_registrant` to discover which fields are available and required for an event's registration form. ### Example prompts * *"What fields are on the registration form for event 12345?"* * *"What information do I need to register someone?"* *** ## swoogo\_registration\_form Display an interactive registration form UI directly in the AI assistant. Users can fill out and submit the form visually. ### Parameters | Parameter | Type | Required | Description | | ---------- | ------- | -------- | -------------------------- | | `event_id` | integer | Yes | Event to show the form for | This tool renders an interactive form in MCP clients that support UI apps (like Claude Desktop). The form handles validation and submission automatically. ### Example prompts * *"Show me the registration form for event 12345"* * *"I want to register someone — pull up the form"* # Packages Source: https://developer.swoogo.com/mcp/tools/packages Query registration packages and pricing ## swoogo\_get\_packages List or retrieve registration packages with optional fee/pricing data. ### Parameters | Parameter | Type | Required | Description | | ------------- | ------- | -------------- | -------------------------------------------------------------- | | `package_id` | integer | No | Get a single package by ID | | `event_id` | integer | Yes (for list) | Event to list packages for | | `name` | string | No | Filter by package name (partial match) | | `include_fee` | boolean | No | Merge pricing data into the response | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects (`fees`, `earlyBirds`, `translations`) | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | ### Example prompts * *"What packages are available for event 12345?"* * *"Show me the VIP package pricing"* * *"List all packages with their fees"* # Registrants Source: https://developer.swoogo.com/mcp/tools/registrants Query registrants, create registrations, and manage session assignments ## swoogo\_get\_registrants List or retrieve registrants with filtering by email, name, status, and more. ### Parameters | Parameter | Type | Required | Description | | --------------- | ------- | -------------- | -------------------------------------------------------------------- | | `registrant_id` | integer | No | Get a single registrant by ID | | `event_id` | integer | Yes (for list) | Event to list registrants for | | `email` | string | No | Filter by email address | | `name` | string | No | Filter by name (partial match) | | `status` | string | No | Filter by registration status | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects (`sessions`, `lineItems`, `addresses`, etc.) | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | ### Example prompts * *"Show me all confirmed registrants for event 12345"* * *"Look up the registrant with email [john@example.com](mailto:john@example.com)"* * *"How many people are registered for the conference?"* *** ## swoogo\_create\_registrant Register someone for an event. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------ | | `event_id` | integer | Yes | Event to register for | | `email` | string | Yes | Registrant email address | | `first_name` | string | No | First name | | `last_name` | string | No | Last name | | `company` | string | No | Company name | | `additional_fields` | object | No | Custom field values | | `send_email` | boolean | No | Send confirmation email | Use `swoogo_get_registration_form` first to see what fields are available and required for an event. ### Example prompts * *"Register [jane@example.com](mailto:jane@example.com) for event 12345"* * *"Add John Smith from Acme Corp to the conference"* *** ## swoogo\_add\_registrant\_to\_session Assign a registrant to a session, with capacity and conflict validation. ### Parameters | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ----------------------------------------------- | | `registrant_id` | integer | Yes | Registrant to assign | | `session_id` | integer | Yes | Session to assign to | | `override_capacity_errors` | boolean | No | Allow over-capacity assignment | | `send_email` | boolean | No | Send notification email | | `validate_only` | boolean | No | Check if assignment is valid without committing | ### Example prompts * *"Add registrant 789 to the keynote session"* * *"Check if registrant 789 can join session 456 without actually adding them"* # Sessions Source: https://developer.swoogo.com/mcp/tools/sessions List, create, and update event sessions ## swoogo\_get\_sessions List or retrieve sessions with filtering by name, track, date, and more. Tracks are automatically expanded. ### Parameters | Parameter | Type | Required | Description | | ------------ | ------- | -------------- | ------------------------------------------------- | | `session_id` | integer | No | Get a single session by ID | | `event_id` | integer | Yes (for list) | Event to list sessions for | | `name` | string | No | Filter by session name (partial match) | | `track` | string | No | Filter by track name (exact match) | | `date` | string | No | Filter by date (exact match) | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects (e.g., `registrantCount`) | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | ### Example prompts * *"List all sessions for event 12345"* * *"Show me sessions on the Technical track"* * *"What sessions are on March 15?"* *** ## swoogo\_create\_session Create a new session for an event. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------- | | `event_id` | integer | Yes | Event to add the session to | | `name` | string | Yes | Session name | | `date` | string | No | Session date (YYYY-MM-DD) | | `start_time` | string | No | Start time (HH:MM:SS) | | `end_time` | string | No | End time (HH:MM:SS) | | `location` | string | No | Location name | | `track` | string | No | Track name | | `capacity` | integer | No | Maximum attendees | | `description` | string | No | Session description | | `additional_fields` | object | No | Custom field values | ### Example prompts * *"Create a session called 'Keynote' for event 12345 on March 15 at 9am"* * *"Add a workshop session with 50 person capacity"* *** ## swoogo\_update\_session Update an existing session. Only the fields you provide will be changed. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------- | | `session_id` | integer | Yes | Session to update | | `name` | string | No | New session name | | `date` | string | No | New date (YYYY-MM-DD) | | `start_time` | string | No | New start time (HH:MM:SS) | | `end_time` | string | No | New end time (HH:MM:SS) | | `location` | string | No | New location | | `track` | string | No | New track | | `capacity` | integer | No | New capacity | | `description` | string | No | New description | | `additional_fields` | object | No | Custom field values to update | ### Example prompts * *"Change the keynote session to start at 10am instead of 9am"* * *"Update session 456 capacity to 200"* # Speakers Source: https://developer.swoogo.com/mcp/tools/speakers Query, create, and update event speakers ## swoogo\_get\_speakers List or retrieve speakers with filtering by name and company. ### Parameters | Parameter | Type | Required | Description | | ------------ | ------- | -------------- | ---------------------------------------- | | `speaker_id` | integer | No | Get a single speaker by ID | | `event_id` | integer | Yes (for list) | Event to list speakers for | | `name` | string | No | Filter by speaker name (partial match) | | `company` | string | No | Filter by company name | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects (`sessions`) | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | ### Example prompts * *"Who are the speakers for event 12345?"* * *"Find speakers from Google"* *** ## swoogo\_create\_speaker Add a speaker to an event. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------- | | `event_id` | integer | Yes | Event to add speaker to | | `email` | string | Yes | Speaker email address | | `first_name` | string | No | First name | | `last_name` | string | No | Last name | | `company` | string | No | Company name | | `job_title` | string | No | Job title | | `bio` | string | No | Speaker biography | | `additional_fields` | object | No | Custom field values | *** ## swoogo\_update\_speaker Update an existing speaker. Only the fields you provide will be changed. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------- | | `speaker_id` | integer | Yes | Speaker to update | | `email` | string | No | New email | | `first_name` | string | No | New first name | | `last_name` | string | No | New last name | | `company` | string | No | New company | | `job_title` | string | No | New job title | | `bio` | string | No | New biography | | `additional_fields` | object | No | Custom field values to update | # Sponsors Source: https://developer.swoogo.com/mcp/tools/sponsors Query, create, and update event sponsors ## swoogo\_get\_sponsors List or retrieve sponsors with filtering by name and sponsorship level. ### Parameters | Parameter | Type | Required | Description | | ------------ | ------- | -------------- | ----------------------------------------- | | `sponsor_id` | integer | No | Get a single sponsor by ID | | `event_id` | integer | Yes (for list) | Event to list sponsors for | | `name` | string | No | Filter by sponsor name (partial match) | | `level` | string | No | Filter by sponsorship level (exact match) | | `search` | string | No | Raw Swoogo search filter | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (default: 20, max: 100) | | `sort` | string | No | Sort field (prefix `-` for descending) | *** ## swoogo\_create\_sponsor Add a sponsor to an event. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------- | | `event_id` | integer | Yes | Event to add sponsor to | | `name` | string | Yes | Sponsor name | | `website` | string | No | Sponsor website URL | | `level` | string | No | Sponsorship level | | `logo_id` | integer | No | Logo image ID | | `description` | string | No | Sponsor description | | `additional_fields` | object | No | Custom field values | *** ## swoogo\_update\_sponsor Update an existing sponsor. Only the fields you provide will be changed. ### Parameters | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ----------------------------- | | `sponsor_id` | integer | Yes | Sponsor to update | | `name` | string | No | New name | | `website` | string | No | New website URL | | `level` | string | No | New sponsorship level | | `logo_id` | integer | No | New logo image ID | | `description` | string | No | New description | | `additional_fields` | object | No | Custom field values to update | # Transactions Source: https://developer.swoogo.com/mcp/tools/transactions View and record payments, refunds, and credits ## swoogo\_get\_transaction Retrieve a single transaction by ID. ### Parameters | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------- | | `transaction_id` | integer | Yes | Transaction ID | | `fields` | string | No | Comma-separated fields to return | | `expand` | string | No | Include related objects (`paymentGateway`, `registrant`) | *** ## swoogo\_create\_transaction Record an offline payment or refund for a registrant. ### Parameters | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------ | | `event_id` | integer | Yes | Event ID | | `registrant_id` | integer | Yes | Registrant ID | | `type` | string | Yes | Transaction type (see below) | | `amount` | number | Yes | Transaction amount | | `datetime` | string | No | Transaction date-time (ISO 8601) | | `status` | string | No | `confirmed`, `failed`, `pending`, or `duplicate` | | `notes` | string | No | Notes about the transaction | ### Transaction types **Payments:** `offline_credit_card_payment`, `wire_transfer_payment`, `check_payment`, `cash_payment`, `past_event_credit_payment`, `offline_google_wallet_payment`, `offline_paypal_payment`, `other_payment` **Refunds:** `offline_credit_card_refund`, `wire_transfer_refund`, `check_refund`, `cash_refund`, `offline_google_wallet_refund`, `offline_paypal_refund`, `other_refund` ### Example prompts * *"Record a \$500 check payment for registrant 789"* * *"Add a wire transfer refund of \$100 for registrant 456"*