Funxtion.com|API Reference
v3

Introduction

The Funxtion REST API gives you access to the full fitness content engine — exercises, workouts, training plans, on-demand classes, and more.

Base URL: https://api.funxtion.com/v3

Contact: development@funxtion.com

Full OpenAPI specification: docs.funxtion.com

Note: Contact us at support@funxtion.com to receive credentials for accessing the API.

Looking for mobile integration? See our SDK documentation for Flutter, iOS, and Android.

Authentication

The API uses JWT (JSON Web Token) authentication. Call POST /auth/login with your credentials to receive an access token and refresh token.

Scopes

ParameterTypeRequiredDescription
mobilescopeOptionalRead-only access to fitness content, calendar, and booking data. Token valid for 4 hours.
platformscopeOptionalManagement functionality access. Token valid for 4 hours.

Provide your organisation code (e.g. "funxtion") in each login request. Refresh tokens are valid for 6 months and can be revoked at any time.

Required headers

ParameterTypeRequiredDescription
AuthorizationheaderRequiredBearer {token} — required for all content endpoints
Content-TypeheaderRequiredapplication/json — required for all requests

Making requests

All requests must include the Content-Type: application/json header. Authenticated endpoints require the Authorization: Bearer {token} header.

Request and response bodies use JSON. All timestamps are ISO 8601 format in UTC.

Filtering & pagination

Default page size is 20 results. Maximum is 250.

ParameterTypeRequiredDescription
filter[limit]integerOptionalNumber of results per page (default 20, max 250)
filter[offset]integerOptionalNumber of results to skip for pagination
filter[where][q][contains]stringOptionalText search — e.g. "push"
filter[where][level][eq]stringOptionalExact match — e.g. "beginner"
filter[where][equipment][in]stringOptionalComma-separated IDs — e.g. "1,2,3"
Filter operators: contains, eq, in, and and.

Ordering

Use the filter[order] parameter to sort results. Default ordering is desc on the updated field.

ParameterTypeRequiredDescription
filter[order][name]stringOptional"asc" or "desc"
filter[order][created]stringOptional"asc" or "desc"

Response codes

CodeDescription
200Success
400Missing required attributes
401Authentication error (invalid credentials, expired token)
403Insufficient privileges
404Resource not found
409Conflict
422Validation error
429Rate limit exceeded

Language & i18n

Default language is set by the Accept-Language header. For multi-language responses, use the ?lang= query parameter with comma-separated language codes.

Example: ?lang=en,nl,pl,ar-SA

Multi-language responses return MultiLangString objects with language code keys and a "default" key.

Thumbnails

Append style and size query parameters to image URLs returned by the API. Base CDN: https://cdn.funxtion.com

POST/auth/login

Get a JSON Web Token.

Request body

ParameterTypeRequiredDescription
emailstringRequiredYour account email
passwordstringRequiredYour account password
codestringRequiredYour organisation code
scopestringRequired"mobile" or "platform"

Response

Returns access_token, refresh_token, and expires_in (seconds).

POST/auth/token/refresh

Exchange a refresh token for a new access token.

Request body

ParameterTypeRequiredDescription
refresh_tokenstringRequiredA valid refresh token

Response

Returns access_token and expires_in.

POST/auth/token/revoke

Revoke a refresh token.

Request body

ParameterTypeRequiredDescription
refresh_tokenstringRequiredThe refresh token to revoke

POST/auth/integration

Create an Integration API Access Token.

Request body

ParameterTypeRequiredDescription
namestringRequiredName for the integration token
scopestringRequired"mobile" or "platform"

DELETE/auth/integration

Delete an Integration API Access Token.

Request body

ParameterTypeRequiredDescription
token_idstringRequiredID of the token to delete

POST/content/search

Search across all content types.

Request body

ParameterTypeRequiredDescription
qstringRequiredSearch query
typestringOptional"exercises", "workouts", "training-plans", or "on-demand"
filter[limit]integerOptionalResults per page
filter[offset]integerOptionalResults to skip

GET/content/exercises

List all exercises with filtering and pagination.

Query parameters

ParameterTypeRequiredDescription
filter[where][q][contains]stringOptionalText search
filter[where][level][eq]stringOptionalFilter by level
filter[where][equipment][in]stringOptionalFilter by equipment IDs
filter[limit]integerOptionalResults per page
filter[offset]integerOptionalResults to skip
filter[order][name]stringOptional"asc" or "desc"

GET/content/exercises/:id

Get a single exercise by ID.

Path parameters

ParameterTypeRequiredDescription
idstringRequiredThe exercise ID

GET/content/workouts

List workouts with filtering and pagination.

Query parameters

ParameterTypeRequiredDescription
filter[where][q][contains]stringOptionalText search
filter[where][goals][in]stringOptionalFilter by goal IDs
filter[limit]integerOptionalResults per page
filter[offset]integerOptionalResults to skip

GET/content/workouts/:id

Get a single workout by ID.

Path parameters

ParameterTypeRequiredDescription
idstringRequiredThe workout ID

GET/content/training-plans

List training plans.

Query parameters

ParameterTypeRequiredDescription
filter[limit]integerOptionalResults per page
filter[offset]integerOptionalResults to skip
filter[order][created]stringOptional"asc" or "desc"

GET/content/training-plans/:id

Get a single training plan by ID.

Path parameters

ParameterTypeRequiredDescription
idstringRequiredThe training plan ID

GET/content/on-demand

List on-demand virtual classes.

Query parameters

ParameterTypeRequiredDescription
filter[where][q][contains]stringOptionalText search
filter[where][category][eq]stringOptionalFilter by category
filter[limit]integerOptionalResults per page
filter[offset]integerOptionalResults to skip

GET/content/on-demand/:id

Get a single on-demand class by ID.

Path parameters

ParameterTypeRequiredDescription
idstringRequiredThe on-demand class ID

GET/content/packages

List content packages.

Query parameters

ParameterTypeRequiredDescription
filter[limit]integerOptionalResults per page
filter[offset]integerOptionalResults to skip

GET/content/packages/:id

Get a single content package by ID.

Path parameters

ParameterTypeRequiredDescription
idstringRequiredThe content package ID

Equipment

GET/content/equipment List equipment

GET/content/equipment/:id Get equipment

GET/content/equipment/brands List equipment brands

GET/content/equipment/categories List equipment categories

Muscle Groups

GET/content/muscle-groups List muscle groups

Body Parts

GET/content/body-parts List body parts

Fitness Goals

GET/content/goals List fitness goals

GET/content/goals/:id Get a fitness goal

Instructors

GET/content/instructors List instructors

GET/content/instructors/:id Get an instructor

Categories

GET/content/categories List content categories

GET/content/activity-types List fitness activity types

GET/content/providers List content providers

Example
Request
// 1. Authenticate
POST https://api.funxtion.com/v3/auth/login
Content-Type: application/json

{
  "email": "user@yourgym.com",
  "password": "yourpassword",
  "code": "yourgym",
  "scope": "mobile"
}

// 2. Use token for requests
GET https://api.funxtion.com/v3/content/exercises
Authorization: Bearer {access_token}
Response
{
  "data": [...],
  "meta": {
    "total": 3500,
    "limit": 20,
    "offset": 0
  }
}