Skip to main content
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

Get your API credentials

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.

Request an access token

Exchange your credentials for a bearer token by calling POST /oauth2/token.
# 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"
The response includes your token and its expiration:
{
  "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.

Make your first API call

Include your token in the Authorization header on all subsequent requests.
curl "https://api.swoogo.com/api/v1/events" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

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:
HeaderDescription
X-Rate-Limit-LimitMaximum requests allowed in the current window
X-Rate-Limit-RemainingRequests remaining in the current window
X-Rate-Limit-ResetSeconds 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:
{
  "items": [...],
  "_links": {
    "self": { "href": "..." },
    "first": { "href": "..." },
    "last": { "href": "..." }
  },
  "_meta": {
    "totalCount": 95,
    "pageCount": 5,
    "currentPage": 1,
    "perPage": 20
  }
}
ParameterDefaultMaxDescription
page1Page number (1-indexed)
per-page201000Items 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*
# 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&registration_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:
{
  "name": "Not Found",
  "message": "The requested resource does not exist.",
  "code": 0,
  "status": 404
}
StatusMeaning
400Bad Request — invalid parameters or business rule violation
401Unauthorized — missing or expired bearer token
403Forbidden — valid token but insufficient permissions
404Not Found — resource does not exist or is not accessible
422Unprocessable Entity — validation errors on input fields
429Too Many Requests — rate limit exceeded
500Internal 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).