EGYM 2. Workouts API

API for submitting workouts

Operations 1

POST /workouts/v1/workouts Submit Workout #

Documentation

Specifications

Other Resources

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/egym-2-workouts-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

egym-2-workouts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: OpenAPI definition 2. Workouts API
  version: v0
  description: API for submitting workouts
servers:
- url: https://user-connect-api.cgn-3.test.co.egym.coffee/user-connect-api
  description: Test cgn-3
- url: https://user-connect.api.egym.com/user-connect-api
  description: Prod
- url: http://localhost:8080/user-connect-api
  description: Local
tags:
- name: 2. Workouts
  description: API for submitting workouts
paths:
  /workouts/v1/workouts:
    post:
      tags:
      - 2. Workouts
      summary: Submit Workout
      description: Submit a completed workout on behalf of a member
      operationId: submitWorkout
      parameters:
      - name: measurementSystem
        in: query
        required: true
        schema:
          type: string
          enum:
          - METRIC
          - IMPERIAL
      - name: gymLocationId
        in: query
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkoutRequest'
        required: true
      responses:
        '200':
          description: Workout submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkoutBriefResponse'
        '400':
          description: Bad Request — validation failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorDto'
        '401':
          description: Unauthorized — missing or invalid JWT
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkoutBriefResponse'
        '502':
          description: Bad Gateway — server-workout downstream error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkoutBriefResponse'
        '503':
          description: Service Unavailable — server-workout circuit breaker open
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkoutBriefResponse'
components:
  schemas:
    WorkoutBriefResponse:
      type: object
      properties:
        exercises:
          type: array
          description: Submitted workout exercises.
          items:
            $ref: '#/components/schemas/WorkoutExerciseResponse'
        completedAt:
          type: string
          format: date-time
          description: Workout tracking local time.
        timezone:
          type: string
          description: Workout tracking timezone.
    WorkoutExerciseResponse:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Server-workout exercise ID.
        activityId:
          type: integer
          format: int64
          description: EGYM activity ID.
        label:
          type: string
          description: Localized activity name.
    FieldErrorDto:
      type: object
      properties:
        name:
          type: string
        message:
          type: string
    WorkoutExerciseSetRequest:
      type: object
      properties:
        setType:
          type: string
          description: REP_BASED or TIME_BASED.
          enum:
          - REP_BASED
          - TIME_BASED
        numberOfReps:
          type: integer
          format: int32
          description: Number of repetitions.
        weight:
          type: number
          format: double
          description: Weight in kilograms or pounds.
        duration:
          type: integer
          format: int64
          description: Duration in seconds.
        distance:
          type: number
          format: double
          description: Distance in meters or feet.
        heartRate:
          type: integer
          format: int32
          description: Heart rate (bpm).
        speed:
          type: number
          format: double
          description: Speed in metres/feet per second.
        incline:
          type: number
          format: double
          description: Incline.
        recoveryTime:
          type: integer
          format: int64
          description: Recovery time in seconds.
        trainingMethod:
          type: string
          description: Training method.
          enum:
          - REGULAR_TIMEBASED
          - REGULAR_REPBASED
          - NEGATIVE_TIMEBASED
          - NEGATIVE_REPBASED
          - ADAPTIVE_TIMEBASED
          - ADAPTIVE_REPBASED
          - MEASUREMENT
          - MEASUREMENT_DYNAMIC
          - ISOKINETIC
          - ELEMENTS
          - MAX_POWER
          - MAX_OUT
      required:
      - setType
    WorkoutExerciseRequest:
      type: object
      properties:
        activityId:
          type: integer
          format: int64
          description: EGYM activity ID.
        completedAt:
          type: string
          format: date-time
          description: Exercise local completion time.
        timezone:
          type: string
          description: Exercise completion timezone.
        templateGroupId:
          type: integer
          format: int64
          description: Workout plan ID.
        templateId:
          type: integer
          format: int64
          description: Workout plan exercise ID.
        sets:
          type: array
          description: Exercise sets.
          items:
            $ref: '#/components/schemas/WorkoutExerciseSetRequest'
          minItems: 1
        originallyDisplayedSets:
          type: array
          description: Sets originally displayed to the user.
          items:
            $ref: '#/components/schemas/WorkoutExerciseSetRequest'
      required:
      - activityId
      - sets
    ValidationErrorDto:
      type: object
      properties:
        code:
          type: integer
          format: int32
        error:
          type: string
        message:
          type: string
        fieldErrors:
          type: array
          items:
            $ref: '#/components/schemas/FieldErrorDto'
    WorkoutRequest:
      type: object
      properties:
        exercises:
          type: array
          description: Exercises of the workout.
          items:
            $ref: '#/components/schemas/WorkoutExerciseRequest'
          minItems: 1
      required:
      - exercises