Virtuagym Memberships API

Membership definitions (plans) and membership instances (enrollments).

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/virtuagym-memberships-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

virtuagym-memberships-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Virtuagym Public API (v1) Billing Memberships API
  description: 'The Virtuagym Public API lets fitness businesses, health clubs, and partner integrations read and write club data programmatically - members, staff (employees), membership definitions and instances, member credits, invoices, visits (check-ins), events (classes) and their participants, and coaching workout assignments. This document models the current v1 club-scoped surface.

    Access model: Virtuagym''s authoritative reference documentation is access-gated - you request access by emailing api@virtuagym.com with your GitHub username, and you provision an API key and Club secret in the Virtuagym portal under System settings > Business info > Advanced. The endpoints, methods, and query parameters below are grounded in Virtuagym''s publicly mirrored API wiki and in live host probes; request/response bodies are modeled honestly and marked with additionalProperties where the full field set is not published. Treat schema shapes as a starting point and reconcile against the official reference once access is granted.

    Authentication: v1 endpoints authenticate with an `api_key` and a `club_secret`, both passed as query-string parameters, over HTTPS only. (Legacy v0 endpoints used HTTP Basic Auth and are deprecated; a separate OAuth 2.0 flow exists for end-user-context calls and is out of scope for the club-scoped v1 surface modeled here.)'
  version: '1.0'
  contact:
    name: Virtuagym API Team
    url: https://support.virtuagym.com/s/article/API-Link-To-Your-Website
    email: api@virtuagym.com
  license:
    name: Proprietary
    url: https://virtuagym.com
servers:
- url: https://api.virtuagym.com/api
  description: Virtuagym Public API
security:
- apiKeyAuth: []
  clubSecretAuth: []
tags:
- name: Memberships
  description: Membership definitions (plans) and membership instances (enrollments).
paths:
  /v1/club/{club_id}/membership/definition:
    parameters:
    - $ref: '#/components/parameters/ClubId'
    get:
      operationId: listMembershipDefinitions
      tags:
      - Memberships
      summary: List membership definitions
      description: Returns the membership definitions (plans / products) configured for the club.
      parameters:
      - $ref: '#/components/parameters/SyncFrom'
      - $ref: '#/components/parameters/MaxResults'
      responses:
        '200':
          description: A list of membership definitions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/club/{club_id}/membership/instance:
    parameters:
    - $ref: '#/components/parameters/ClubId'
    get:
      operationId: listMembershipInstances
      tags:
      - Memberships
      summary: List membership instances
      description: Returns an array of membership instances (a member's enrollment in a membership definition) for the club. Supports incremental sync via `sync_from` or cursor paging via `from_id`.
      parameters:
      - $ref: '#/components/parameters/SyncFrom'
      - $ref: '#/components/parameters/FromId'
      - $ref: '#/components/parameters/MaxResults'
      - name: member_id
        in: query
        required: false
        description: Filter instances by member.
        schema:
          type: integer
      responses:
        '200':
          description: A list of membership instances.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    MaxResults:
      name: max_results
      in: query
      required: false
      description: Maximum number of results to return in a page.
      schema:
        type: integer
    ClubId:
      name: club_id
      in: path
      required: true
      description: The Virtuagym club ID.
      schema:
        type: integer
    SyncFrom:
      name: sync_from
      in: query
      required: false
      description: Return only resources created or edited since this Unix timestamp in milliseconds.
      schema:
        type: integer
        format: int64
    FromId:
      name: from_id
      in: query
      required: false
      description: Cursor - return resources with an ID greater than this value, for paging.
      schema:
        type: integer
  schemas:
    GenericListResponse:
      type: object
      description: Standard Virtuagym envelope wrapping an array of resources in `result`.
      properties:
        statusMessage:
          type: string
        statistics:
          $ref: '#/components/schemas/Statistics'
        result:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
    Statistics:
      type: object
      description: Response metadata Virtuagym returns alongside result sets.
      properties:
        resultset_size:
          type: integer
        total_results:
          type: integer
        time_ms:
          type: integer
      additionalProperties: true
    Error:
      type: object
      properties:
        status:
          type: integer
        statusMessage:
          type: string
        result:
          type: object
          additionalProperties: true
      additionalProperties: true
  responses:
    Unauthorized:
      description: Missing or invalid api_key / club_secret.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: query
      name: api_key
      description: The club's API key, provisioned in the Virtuagym portal under System settings > Business info > Advanced.
    clubSecretAuth:
      type: apiKey
      in: query
      name: club_secret
      description: The club secret, provisioned alongside the API key in the Virtuagym portal. Required for all v1 endpoints.