canonical: https://jentic.com/apis/amilia.com/amilia

# Amilia SmartRec API

The Amilia SmartRec API is the integration surface for Amilia's recreation-and-sports management platform. Across 30 endpoints it covers accounts, activities, attendance, donations, events, leagues, locations, memberships, registrations, rental contracts, private lessons, and access scans for parks-and-rec departments, sports clubs, and community organisations. Authentication is dual: HTTP Basic to call /authenticate and exchange credentials for a JWT, then bearer-token authentication on every other endpoint, all under app.amilia.com/api/V3. Most resource paths are scoped by language and orgIdentifier so a single token can serve multiple SmartRec organisations.

## For AI agents

Lets agents manage Amilia SmartRec activities, accounts, registrations, leagues, memberships, locations, donations, events, and attendance for sports and rec organisations using bearer-token auth after a Basic /authenticate exchange.

## Scope

Does not handle payment processing, marketing email, or tax filing - use for SmartRec activity, account, league, attendance, and location operations only.

## Capabilities

- Authenticate against /authenticate with HTTP Basic and exchange for a JWT bearer token used on every other call
- List and detail accounts, including their contacts, registrations, rental contracts, and private lessons
- Browse activities, retrieve activity occurrences, attendance, and registered persons, and update activity prices
- Upsert attendance records for activity occurrences in bulk
- List leagues with their teams and members, plus events and their access scans
- Manage rec-organisation locations and create new locations under an org
- Pull memberships, donations sold, extra questions, and access-scan logs

## Use cases

### Parks-and-Rec Activity Catalogue Sync

Municipal parks departments running SmartRec can keep their public-facing activity catalogue in sync by polling /{language}/org/{orgIdentifier}/activities and rendering the results on a city website. The integration is a straightforward GET-and-render flow, and the per-language path lets bilingual jurisdictions serve French and English versions from the same SmartRec org. Most teams stand it up in a week.

Example prompt: Call GET /{language}/org/{orgIdentifier}/activities with language='en' and the org identifier, then render the returned activities into a public catalogue page

### Attendance Tracking for Sports Clubs

Coaches and front-desk staff at a sports club can mark attendance for an activity occurrence with a single bulk upsert call. The integration replaces paper rosters and feeds the attendance signal back into SmartRec's reporting. The /upsert-activity-attendance endpoint accepts a batch payload so a tablet at the door can sync the whole class in one round trip.

Example prompt: Call POST /{language}/org/{orgIdentifier}/activities/upsert-activity-attendance with an array of {personId, occurrenceId, attended} records for tonight's class

### League Management Operations

League coordinators can pull team and member rosters with GET /{language}/org/{orgIdentifier}/leagues followed by /{language}/org/{orgIdentifier}/leagues/{id}/teams. The integration powers in-house dashboards that show which teams are short on players, which leagues are full, and which scheduled events have access scans recorded.

Example prompt: Call GET /{language}/org/{orgIdentifier}/leagues to list leagues, then for the league named 'U10 Soccer' call GET /{language}/org/{orgIdentifier}/leagues/{id}/teams and return the team count

### AI Agent SmartRec Operations

Operations copilots at recreation organisations can run lookups and updates through Jentic without juggling the Basic-then-Bearer auth dance themselves. The agent searches Jentic for an activity, account, or league intent, loads the schema, and Jentic handles the /authenticate exchange and the bearer token. Useful for staff copilots that triage parent emails about classes and registrations.

Example prompt: Search Jentic for 'list Amilia accounts', execute the operation backed by GET /{language}/org/{orgIdentifier}/accounts with language='en', and return the count of accounts and their ids

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /authenticate | Authenticate and obtain a JWT bearer token |
| GET | /{language}/org/{orgIdentifier}/activities | List all activities for an organisation |
| GET | /{language}/org/{orgIdentifier}/accounts | List accounts |
| GET | /{language}/org/{orgIdentifier}/accounts/{id}/registrations | Get account registrations |
| POST | /{language}/org/{orgIdentifier}/activities/upsert-activity-attendance | Upsert attendance for activity occurrences |
| GET | /{language}/org/{orgIdentifier}/leagues/{id}/teams | Get teams and members for a league |
| POST | /{language}/org/{orgIdentifier}/locations | Create an organisation location |
| PATCH | /{language}/org/{orgIdentifier}/activities/{id}/update | Update activity price |

## Key resources

- **Authentication** — Exchange Basic credentials for a JWT bearer token used by every other endpoint
- **Accounts** — List accounts and inspect their contacts, registrations, rental contracts, and private lessons
- **Activities** — List and detail activities, occurrences, attendance, registered persons, and required memberships
- **Leagues and Events** — List leagues, teams, and events
- **Locations** — List and create rec-organisation locations
- **Donations and Memberships** — List donations sold and pull membership records

## Why Jentic

- **Setup:** Wiring the Amilia SmartRec API by hand means exchanging Basic credentials for a JWT at /authenticate, refreshing it, and threading the language and org identifier through every path yourself. Through Jentic you install once, import SmartRec from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** SmartRec puts the org and resource id in the URL path (/org/{orgIdentifier}/accounts/{id}/...), so a rule can pin your agent to one organisation or account: it can read that account's registrations and nothing else. You choose the operations it may call, so an activity update is not included unless you add it.
- **Credential handling:** Your Amilia Basic credentials and the resulting JWT are stored once, encrypted, by your own Jentic One instance and injected at execution time. Neither the credentials nor the JWT enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list Amilia activities' or 'record activity attendance', and Jentic returns the matching SmartRec operation with its input schema so the agent calls the right endpoint without working through the V3 documentation manually.

## Related APIs

- **Mindbody** — Booking and class management for fitness studios and wellness providers
- **Acuity Scheduling** — Self-serve appointment scheduling without the rec-specific workflows of SmartRec
- **Calendly** — One-on-one scheduling that pairs well with SmartRec for staff appointments outside class registrations
- **Cvent** — Event management for larger ticketed events that complement Amilia's recurring rec calendar

## FAQ

### What authentication does the Amilia SmartRec API use?

Amilia uses a two-step scheme: HTTP Basic authentication on GET /authenticate to exchange your username and password for a short-lived JWT, then bearer-token authentication on every other endpoint using that JWT. Through Jentic, the Basic credentials are held in the vault, the /authenticate exchange runs server-side, and only the resulting bearer token is used at execution time.

### Can I list accounts and their registrations with the SmartRec API?

Yes. GET /{language}/org/{orgIdentifier}/accounts returns the account list, and GET /{language}/org/{orgIdentifier}/accounts/{id}/registrations returns the registrations attached to a single account. Use the language path segment ('en' or 'fr') to control localised fields.

### What are the rate limits for the Amilia SmartRec API?

The spec does not document rate limits and Amilia applies them per organisation contract. SmartRec is built for back-office traffic rather than high-frequency public requests, so plan polling rather than per-keystroke calls. Confirm the per-org cap with Amilia support before scaling.

### How do I record attendance for a class through Jentic?

Search Jentic for 'upsert Amilia activity attendance'. Jentic returns the operation backed by POST /{language}/org/{orgIdentifier}/activities/upsert-activity-attendance, you load the schema (it accepts a batch of attendance records), and execute. Jentic handles the auth exchange. Run it through Jentic One, the self-hosted execution layer.

### Does the SmartRec API support multiple SmartRec organisations on one token?

Yes. Almost every resource path is scoped by orgIdentifier, so the same JWT can hit multiple organisations the user has access to. The language segment is also part of the path, which lets bilingual orgs render the same data in French or English from a single token.

### Can I update activity prices via the API?

Yes. PATCH /{language}/org/{orgIdentifier}/activities/{id}/update accepts a price update for an existing activity. This is the only mutation against the activity record exposed in this spec - broader activity creation flows live in the SmartRec admin UI.

### Can I limit what my agent is allowed to do with the Amilia SmartRec API?

Yes. Because you run Jentic One yourself, your own rules decide which SmartRec operations and credentials the agent may use. SmartRec puts the organisation and resource id in the URL path, such as /org/{orgIdentifier}/accounts/{id}/registrations, so a rule can pin the agent to a single organisation or account and let it read only that account's registrations. You choose the operations it can call, so a mutation like the PATCH activity price update stays out of reach unless you explicitly add it.
