API introduction
Use the Activity Messenger API from your server to connect organization data or publish website content. Start here for connection details and shared conventions, then choose a resource reference below.
Authentication and base URL
Send all requests to https://activitymessenger.com/api/v1/organization/{organization}. Replace {organization} with the numeric organization ID. A website’s custom domain is not the API host.
Obtain your organization API key from E-Commerce → API & IFRAME. Send it in the X-Activity-Messenger-Api-Key HTTP header. Keep it in server-side secret storage; do not embed it in browser JavaScript, URLs, or public repositories. Send Accept: application/json; for JSON request bodies, also send Content-Type: application/json. File uploads use multipart form data instead.
The general organization API also accepts configured network and account keys. The Website API requires the key of the organization in the URL, with websites enabled. That key can access all websites owned by the organization and is not read-only.
Make a first request
Read organization information with GET /api/v1/organization/{organization} and the headers above. Resource references show HTTP methods and paths; replace placeholders with the IDs returned by the API. IDs, external page keys, slugs, and membership numbers are distinct identifiers: use the identifier documented for each endpoint.
Pagination
Pagination depends on the endpoint; do not assume every collection has the same response shape.
- Optional pagination: users, members, forms, form tags, classes, and class tags return an array of at most 50 items when neither
pagenorper_pageis supplied. Supply either parameter to receive a paginator withdata,current_page,next_page_url, and totals. The default is 50 items; the maximum is 250. - Published messages and templates: always paginated, with 10 items per page by default. Set
per_pageandpageas needed. - Form respondents: always simple pagination; default 50, maximum 250. There is no
total,last_page, orlast_page_url. - Website lists: websites, pages, and assets always use simple pagination at a fixed 50 items per page. Use
page;per_pagedoes not change the page size. There are no totals. - Other collections: products, product tags, and booking packages return arrays. Calendar events use date-range filters. See the resource reference before adding pagination parameters.
For paginated responses, process data and stop when next_page_url is null. Retain the original filters and page size on subsequent requests; returned links may not repeat every query parameter. Send authentication on every request. Avoid logging the key or sensitive response data.
Rate limits and retries
The application API is configured for 240 requests per minute. Website routes also apply a 60-request-per-minute throttle. These are shared limits, not independent allowances per endpoint or organization key. Ordinary API-key requests are throttled by the caller’s IP address; integrations behind the same outbound address can share capacity.
Inspect X-RateLimit-Limit and X-RateLimit-Remaining when present. On HTTP 429, wait at least the number of seconds in Retry-After before retrying. Reduce concurrency and use bounded retries with backoff for temporary failures. Do not repeatedly retry authentication or validation errors.
Do not blindly retry writes after a timeout: the operation may already have succeeded. Website revision staging and publication have documented idempotency guarantees; other mutations do not share that guarantee. Read the resulting state before deciding whether to repeat a write.
Responses and errors
Successful calls return endpoint-specific JSON: an object, array, or paginator. Check the HTTP status before processing the body. Do not assume every error uses the same envelope; older organization endpoints can return a JSON string or null.
401: missing or invalid API credentials. Check the key and the target organization.404: resource unavailable or inaccessible. Check IDs and ownership; Website access also requires the feature to be enabled.409: a Website revision or redirect baseline is stale. Read the current state, reconcile the change, and review a new request.413: the request is too large. Website document requests have a 2 MB limit; image upload limits are documented separately.422: invalid input or an unsupported operation. Validation responses may includemessageand field-levelerrors; correct the request before retrying.429: rate limit reached. HonorRetry-After.
Dates, filters, and updates
Use the formats documented for each parameter. A timestamp ending in Z is UTC; a business-date filter such as YYYY-MM-DD is not a UTC instant. Follow the endpoint’s organization-timezone and date-boundary rules. Array filters use brackets such as tags[]=swimming. Preserve the distinction between omitted fields, null, and empty arrays, especially when replacing content or attendance.
Organization API references
- Organization and network
- Staff and permissions
- Members and check-ins
- Forms and respondent exports
- Classes and calendars
- Attendance
- Booking packages
- Products
- Published messages and templates
Website API references
- Publish pages: discovery, full documents, revision review, publication, and deletion.
- Assets, shared sections, and redirects: image manifests, reusable navigation, and redirect replacement.