> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fitsociety.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Search or filter workout v2 exercises

> Searches the exercise library with authenticated visibility scoping. Without an explicit visibility filter, results include global `Everyone` and `Fitsociety` exercises plus active-company `Company` exercises. `Company` scope is resolved from auth context, not from a query companyId. Supports a `tab` selector (`library` | `my` | `member`) and multi-value `muscleGroups` / `equipments` / `categories` filters (comma-separated). When valid `planId` and `planMomentId` context is provided, matching returned exercises include the selected day prescription (`sets`, `targetReps`, `rpe`, and display labels). Missing, invalid, or unavailable plan context is ignored so exercise search still succeeds without prescription values. The `items` shape is identical whether or not `?search=`/`?query=` is sent (each item carries a combined `media` array, not separate `images`/`videos`). The response also returns `tab`, `availableFilters` (full selectable catalogue) and `selectedFilters` (the filters applied on this request).

Requires the workout_library:read scope. This operation maps to /app/v1/workout/exercises/search and retains its Workout V2 permission, feature-flag, and resource-scope checks.

The clientId path parameter is resolved inside the company bound to the Public API token when present.



## OpenAPI

````yaml /openapi/public-v1.json get /public/v1/workout/exercises/search
openapi: 3.1.0
info:
  title: FITsociety Public API v1
  version: 1.0.0
  description: >-
    Developer Public API endpoints under `/public/v1`. This reference is
    filtered to OAuth/Bearer Public API resources and excludes provider callback
    receivers, storefront routes, public widgets, wishlist routes, and
    access-device validation endpoints.
  contact:
    name: FITsociety Engineering
servers:
  - url: https://api.fitsociety.io
    description: Production
security: []
tags:
  - name: Workout
    description: >-
      Workout V2 libraries, programmes, client plans, calendars, sessions,
      groups, settings and progress. AI operations are excluded.
  - name: OAuth
    description: Public API OAuth endpoints for server-to-server client credentials.
  - name: Health
    description: Public API token health checks.
  - name: Platform
    description: >-
      Inspect Public API client context, capabilities, scopes, and redacted
      audit logs.
  - name: Company Catalog
    description: Read and manage company profile metadata and locations.
  - name: Clients
    description: >-
      Create and manage clients through the Public API using Bearer access
      tokens.
  - name: Coaches
    description: Retrieve coaches for the authenticated company via integrations.
  - name: Calendar Events
    description: Read Public API calendar events.
  - name: Calendar Templates
    description: >-
      Read and manage event types and event templates used by calendar
      availability and bookings.
  - name: Calendar Extensions
    description: >-
      Read recurring bookings, booking requests, calendar tasks, and
      availability closure metadata.
  - name: Availability
    description: Read bookable availability slots and signed availability tokens.
  - name: Availability Management
    description: >-
      Manage coach and location availability templates used to derive bookable
      slots.
  - name: Bookings
    description: Read and manage Public API bookings.
  - name: Finance
    description: >-
      Read invoices, transactions, products, subscriptions, and memberships with
      guarded finance writes.
  - name: Credits
    description: >-
      Read company-wide and client-scoped credit allocations, mutations, and
      guarded credit adjustments.
  - name: Exports
    description: >-
      Create and monitor asynchronous company exports through Public API Bearer
      endpoints.
  - name: Webhooks
    description: >-
      Manage outbound webhook subscriptions and inspect delivery attempts
      through Public API Bearer endpoints.
  - name: Measurements
    description: Read and write client measurement entries.
  - name: Progress Photos
    description: Read client progress photo metadata and short-lived signed media URLs.
  - name: Forms
    description: Read, create, update, and archive company form templates.
  - name: Intakes
    description: Assign intake forms and read client intake assignments and submissions.
  - name: Check-ups
    description: >-
      Schedule and cancel client check-ups and read their status and
      submissions.
  - name: Documents
    description: >-
      Read client document and folder metadata, register external document
      links, update metadata, and archive documents from Public API listings.
      Binary upload, permanent deletion, and company-wide document management
      are not exposed.
  - name: Habits
    description: Read habits and habit entries.
  - name: Goals
    description: Read client goal summaries.
  - name: Conversations
    description: >-
      Read and manage direct and group chat conversations through the Public
      API.
  - name: Reports
    description: Read aggregate attendance, revenue, and retention summaries.
paths:
  /public/v1/workout/exercises/search:
    get:
      tags:
        - Workout
      summary: Search or filter workout v2 exercises
      description: >-
        Searches the exercise library with authenticated visibility scoping.
        Without an explicit visibility filter, results include global `Everyone`
        and `Fitsociety` exercises plus active-company `Company` exercises.
        `Company` scope is resolved from auth context, not from a query
        companyId. Supports a `tab` selector (`library` | `my` | `member`) and
        multi-value `muscleGroups` / `equipments` / `categories` filters
        (comma-separated). When valid `planId` and `planMomentId` context is
        provided, matching returned exercises include the selected day
        prescription (`sets`, `targetReps`, `rpe`, and display labels). Missing,
        invalid, or unavailable plan context is ignored so exercise search still
        succeeds without prescription values. The `items` shape is identical
        whether or not `?search=`/`?query=` is sent (each item carries a
        combined `media` array, not separate `images`/`videos`). The response
        also returns `tab`, `availableFilters` (full selectable catalogue) and
        `selectedFilters` (the filters applied on this request).


        Requires the workout_library:read scope. This operation maps to
        /app/v1/workout/exercises/search and retains its Workout V2 permission,
        feature-flag, and resource-scope checks.


        The clientId path parameter is resolved inside the company bound to the
        Public API token when present.
      operationId: publicWorkoutgetPublicV1WorkoutExercisesSearch
      parameters:
        - in: query
          name: query
          schema:
            type: string
            maxLength: 100
          description: Full-text exercise search term.
        - in: query
          name: search
          schema:
            type: string
            maxLength: 100
          description: >-
            Alias for `query`. When set, the `items` shape matches the
            non-search (filter-only) branch exactly.
        - in: query
          name: excludeExerciseIds
          schema:
            oneOf:
              - type: string
                example: 6925d2764ac340a53e012927,6925d2764ac340a53e012928
              - type: array
                items:
                  type: string
                  example: 67f1234567890abcdef1234
          description: >-
            Exclude one or more exercises from results (comma-separated string
            or array of exercise ObjectIds). Aliases accepted: excludeExerciseId
            / exerciseIds / exerciseId. Invalid id → 400
            WORKOUTEXERCISE_EXERCISEID_INVALID. Echoed in
            selectedFilters.excludeExerciseIds.
        - in: query
          name: tab
          schema:
            type: string
            enum:
              - library
              - my
              - member
            default: library
          description: >-
            Author-based tab. `library` (default) = all visible exercises; `my`
            = exercises created by the caller; `member` = client-created
            exercises (`addedByRole: Client`). Unknown values fall back to
            `library`. `my` requires a valid authenticated user id.
        - in: query
          name: muscleGroups
          schema:
            type: array
            items:
              type: string
              enum:
                - Chest
                - Back
                - Lats
                - Traps
                - Shoulders
                - Biceps
                - Triceps
                - Forearms
                - Core
                - Abs
                - Obliques
                - Glutes
                - Quads
                - Hamstrings
                - Calves
                - Adductors
                - Abductors
                - Hip Flexors
                - Full Body
                - Cardio / Conditioning
                - Neck
                - Lower Back
          style: form
          explode: false
          description: >-
            Comma-separated muscle groups. Matches `primaryMuscle` OR
            `secondaryMuscles`.
        - in: query
          name: equipments
          schema:
            type: array
            items:
              type: string
              enum:
                - Dumbbells
                - AdjustableDumbbells
                - Kettlebell
                - AdjustableKettlebell
                - CompetitionKettlebell
                - Medicineball
                - SlamBall
                - WallBall
                - Weightplate
                - BumperPlates
                - FractionalPlates
                - LoadableDumbbellHandle
                - Sandbag
                - StrongmanSandbag
                - Bulgarianbag
                - Aquabag
                - Aquaball
                - Hydrovest
                - MagneticBell
                - Macebell
                - SteelClub
                - IndianClub
                - Barbell
                - OlympicBarbell
                - TechniqueBar
                - EZBar
                - TrapBar
                - SafetySquatBar
                - SwissBar
                - CamberedBar
                - AxleBar
                - Landmine
                - Bench
                - FlatBench
                - AdjustableBench
                - InclineBench
                - DeclineBench
                - SealRowBench
                - HipThrustBench
                - BenchPressRack
                - SquatRack
                - SquatStand
                - PowerRack
                - WallMountedRack
                - HalfRack
                - SmithMachine
                - Monolift
                - JammerArms
                - BarbellJack
                - WeightTree
                - PlateStorage
                - DeadliftPlatform
                - Rig
                - StrengthMachinesPlateloaded
                - StrengthMachinesWeightstack
                - StrengthMachinesPneumatic
                - MultiGym
                - LegPressMachine
                - VerticalLegPressMachine
                - LeverageSquatMachine
                - LinearHackSquatMachine
                - BeltSquatMachine
                - PendulumSquatMachine
                - VSquatMachine
                - HackSquatMachine
                - LegExtensionMachine
                - LegCurlMachine
                - SeatedLegCurlMachine
                - LyingLegCurlMachine
                - StandingLegCurlMachine
                - StandingCalfRaiseMachine
                - SeatedCalfRaiseMachine
                - CalfPressMachine
                - HipThrustMachine
                - GluteDriveMachine
                - GluteKickbackMachine
                - HipExtensionMachine
                - HipAbductionMachine
                - HipAdductionMachine
                - ChestPressMachine
                - VerticalChestPressMachine
                - InclineChestPressMachine
                - DeclineChestPressMachine
                - IsoLateralChestPressMachine
                - IsoLateralInclinePressMachine
                - ShoulderPressMachine
                - IsoLateralShoulderPressMachine
                - MultiPressMachine
                - LateralRaiseMachine
                - RearDeltMachine
                - PecDeckMachine
                - PulloverMachine
                - LatPulldownMachine
                - IsoLateralLatPulldownMachine
                - AssistedPullupMachine
                - AssistedDipMachine
                - SeatedDipMachine
                - SeatedRowMachine
                - LowRowMachine
                - HighRowMachine
                - IsoLateralRowMachine
                - ChestSupportedRowMachine
                - TBarRowMachine
                - BicepsCurlMachine
                - PreacherCurlMachine
                - TricepsExtensionMachine
                - AbCrunchMachine
                - AbCoasterMachine
                - RotaryTorsoMachine
                - BackExtensionMachine
                - SeatedBackExtensionMachine
                - HyperextensionBench
                - ReverseHyper
                - GHD
                - Kinesis
                - Pulley
                - CableMachine
                - CableStation
                - CableColumn
                - CableCrossover
                - DualAdjustablePulley
                - SingleCableTower
                - FunctionalTrainer
                - TotalGymGTS
                - Gymstick
                - ViPR
                - RipTrainer
                - Battlerope
                - ProwlerSled
                - FarmersHandles
                - Yoke
                - Tire
                - Sledgehammer
                - TorqueTank
                - SledTrack
                - WallBallTarget
                - AgilityPoles
                - MiniHurdles
                - SprintParachute
                - PullUpBar
                - Parallelbars
                - DipBars
                - Equalizer
                - Suspensiontrainer
                - SuspensionSlingTrainer
                - GymnasticRings
                - MonkeyBars
                - PegBoard
                - RopeClimb
                - Wall
                - StallBars
                - DoorPullUpBar
                - PushUpHandles
                - AbStraps
                - Boxstep
                - SoftPlyoBox
                - Hurdle
                - Speedladder
                - Parallettes
                - NordicBench
                - SissySquatBench
                - Cardio
                - Treadmill
                - CurvedTreadmill
                - AirRunner
                - AssaultRunner
                - StationaryBike
                - UprightBike
                - RecumbentBike
                - BikeErg
                - SpinBike
                - AirBike
                - Rower
                - WaterRower
                - FanRower
                - ArmErgometer
                - SkiErg
                - Elliptical
                - ArcTrainer
                - NuStep
                - StairClimber
                - StepMill
                - JacobsLadder
                - VersaClimber
                - Bosu
                - Balanceball
                - Exerciseball
                - PilatesTennisball
                - PilatesRing
                - YogaMat
                - YogaBlock
                - YogaWheel
                - StretchStrap
                - MobilityStick
                - MassageBall
                - PeanutMassageBall
                - Airpad
                - Balanceboard
                - BalancePad
                - WobbleBoard
                - Glidedisc
                - Foamroller
                - Elasticbands
                - TherapyBand
                - Resistanceband
                - MiniBand
                - PullUpAssistBand
                - Powertube
                - AnkleWeights
                - SlantBoard
                - Vibrationtraining
                - CableRope
                - StraightBarAttachment
                - CurlBarAttachment
                - LatBarAttachment
                - TricepsBarAttachment
                - RowHandle
                - DHandle
                - DoubleDHandle
                - AnkleCuff
                - CableCuff
                - LandmineHandle
                - MagGripAttachment
                - DipBelt
                - AbWheel
                - WristRoller
                - FatGrip
                - Chain
                - DoorAnchor
                - JumpRope
                - SpeedRope
                - WeightedJumpRope
                - SledHarness
                - LiftingStraps
                - LiftingHooks
                - WristWraps
                - WeightliftingBelt
                - Clubbel
                - Stick
                - Bodybow
                - BuddySystem
                - Multinet
                - Flowin
                - Aerialhoop
                - Dancingpole
                - Trapeze
                - HulaHoop
                - Trampoline
                - XCO
                - PilatesReformer
                - PilatesChair
                - PilatesCadillac
                - PilatesBarrel
                - PilatesSpringboard
                - BalanceBeam
                - TreatmentTable
                - RehabTable
                - SlideBoard
          style: form
          explode: false
          description: Comma-separated equipment keys (matches `equipment`).
        - in: query
          name: categories
          schema:
            type: array
            items:
              type: string
              enum:
                - Agility & Speed
                - Strength
                - Hypertrophy
                - Strength - Dynamic
                - Strength - Explosive
                - Strength - Static
                - Cardio
                - Cardio - Duration
                - Cardio - Interval
                - HIIT
                - Crossfit
                - Mobility
                - Stretching
                - Core
                - Coordination & Balance
                - Movement Prep
                - Functional Training
                - Recovery
                - Sports
                - Martial Arts
                - Yoga
                - Other
                - GROUP_WORKOUT_TEMPLATE
                - Plyometric
                - Cycling
                - Cardio - interval
                - Mobilisation
                - Stabilisation
                - Daily Living
                - Target zone
                - Respiration
                - Breathing
                - Massage
                - Outdoor sports
                - Indoor sports
                - Dance
                - Group Lessons
                - Martial arts
                - Material Arts
                - Fight skills
                - Mind and body
                - ''
                - default
          style: form
          explode: false
          description: Comma-separated categories (matches `primaryCategory`).
        - in: query
          name: page
          schema:
            type: integer
            minimum: 1
            example: 1
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 100
            example: 20
        - in: query
          name: primaryCategory
          schema:
            type: string
            enum:
              - Agility & Speed
              - Strength
              - Hypertrophy
              - Strength - Dynamic
              - Strength - Explosive
              - Strength - Static
              - Cardio
              - Cardio - Duration
              - Cardio - Interval
              - HIIT
              - Crossfit
              - Mobility
              - Stretching
              - Core
              - Coordination & Balance
              - Movement Prep
              - Functional Training
              - Recovery
              - Sports
              - Martial Arts
              - Yoga
              - Other
              - GROUP_WORKOUT_TEMPLATE
              - Plyometric
              - Cycling
              - Cardio - interval
              - Mobilisation
              - Stabilisation
              - Daily Living
              - Target zone
              - Respiration
              - Breathing
              - Massage
              - Outdoor sports
              - Indoor sports
              - Dance
              - Group Lessons
              - Martial arts
              - Material Arts
              - Fight skills
              - Mind and body
              - ''
              - default
        - in: query
          name: secondaryCategory
          schema:
            type: string
            enum:
              - Agility & Speed
              - Strength
              - Hypertrophy
              - Strength - Dynamic
              - Strength - Explosive
              - Strength - Static
              - Cardio
              - Cardio - Duration
              - Cardio - Interval
              - HIIT
              - Crossfit
              - Mobility
              - Stretching
              - Core
              - Coordination & Balance
              - Movement Prep
              - Functional Training
              - Recovery
              - Sports
              - Martial Arts
              - Yoga
              - Other
              - GROUP_WORKOUT_TEMPLATE
              - Plyometric
              - Cycling
              - Cardio - interval
              - Mobilisation
              - Stabilisation
              - Daily Living
              - Target zone
              - Respiration
              - Breathing
              - Massage
              - Outdoor sports
              - Indoor sports
              - Dance
              - Group Lessons
              - Martial arts
              - Material Arts
              - Fight skills
              - Mind and body
              - ''
              - default
        - in: query
          name: primaryMuscle
          schema:
            type: string
            enum:
              - Chest
              - Back
              - Lats
              - Traps
              - Shoulders
              - Biceps
              - Triceps
              - Forearms
              - Core
              - Abs
              - Obliques
              - Glutes
              - Quads
              - Hamstrings
              - Calves
              - Adductors
              - Abductors
              - Hip Flexors
              - Full Body
              - Cardio / Conditioning
              - Neck
              - Lower Back
        - in: query
          name: secondaryMuscle
          schema:
            type: string
            enum:
              - Chest
              - Back
              - Lats
              - Traps
              - Shoulders
              - Biceps
              - Triceps
              - Forearms
              - Core
              - Abs
              - Obliques
              - Glutes
              - Quads
              - Hamstrings
              - Calves
              - Adductors
              - Abductors
              - Hip Flexors
              - Full Body
              - Cardio / Conditioning
              - Neck
              - Lower Back
        - in: query
          name: difficulty
          schema:
            type: string
            enum:
              - Beginner
              - Intermediate
              - Advanced
        - in: query
          name: visibility
          schema:
            type: string
            enum:
              - Everyone
              - Company
              - Fitsociety
        - in: query
          name: visibilityScope
          schema:
            type: string
            enum:
              - company
              - everyone
              - fitsociety
        - in: query
          name: createdBy
          schema:
            type: string
            example: 67f1234567890abcdef1234
          description: Filter exercises by the user that created them.
        - in: query
          name: planId
          schema:
            type: string
            example: 67f1234567890abcdef1234
          description: >-
            Optional workout plan/template id. When combined with
            `planMomentId`, returned exercises that are already in that day
            include `planPrescription`.
        - in: query
          name: templateId
          schema:
            type: string
            example: 67f1234567890abcdef1234
          description: Alias for `planId`.
        - in: query
          name: planMomentId
          schema:
            type: string
            example: 67f1234567890abcdef1234
          description: >-
            Optional plan day/moment id used with `planId` to attach day-level
            target sets, reps, and RPE.
        - in: query
          name: dayId
          schema:
            type: string
            example: 67f1234567890abcdef1234
          description: Alias for `planMomentId`.
      responses:
        '200':
          description: Exercise search results.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PublicApiSuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: >-
                          #/components/schemas/PublicWorkoutSourceGETAppV1WorkoutExercisesSearchResponse200
              examples:
                success:
                  summary: Successful response
                  value:
                    data:
                      data:
                        tab: library
                        items:
                          - _id: 67f1234567890abcdef1234
                            name: Barbell Bench Press
                            description: Flat horizontal press.
                            primaryCategory: Strength
                            secondaryCategories:
                              - Agility & Speed
                            primaryMuscle: Chest
                            secondaryMuscles:
                              - Chest
                            primaryJoint: Shoulder
                            equipment:
                              - Dumbbells
                            difficulty: Intermediate
                            intensity: Above Average
                            visibility: Everyone
                            createdAt: '2026-04-12T10:00:00.000Z'
                            media:
                              - type: image
                                url: https://cdn.example.com/exercises/bench.jpg
                                platform: null
                                videoId: null
                                thumbnail: null
                                duration: null
                                width: 1280
                                height: 720
                            defaultType: reps
                            isInSelectedPlanMoment: true
                            planExerciseId: 67f1234567890abcdef1234
                            targetSets: 3
                            targetReps: 15-20
                            targetRpe: 6
                            planPrescription:
                              source: plan
                              planId: 67f1234567890abcdef1234
                              planMomentId: 67f1234567890abcdef1234
                              planExerciseId: 67f1234567890abcdef1234
                              type: reps
                              sets: 3
                              minReps: 15
                              maxReps: 20
                              targetReps: 15-20
                              reps: 15-20
                              rpe: 6
                              restSeconds: 90
                              tempo: 2-0-2
                              rmPercentage: null
                              metric: ''
                              perSetTrackingEnabled: false
                              setsData:
                                - setNumber: 1
                                  setType: 'N'
                                  metric: '12'
                                  repetition: 8-12
                                  weight: 60
                                  rest: 90
                                  rpe: 7.5
                                  duration: 45
                                  distance: 250
                              display:
                                sets: 3 sets
                                reps: 15-20 reps
                                rpe: RPE 6
                                summary: 3 sets · 15-20 reps · RPE 6
                        pagination:
                          page: 1
                          limit: 25
                          totalPages: 5
                          totalItems: 100
                          hasNextPage: true
                          hasPreviousPage: false
                          nextPage: 2
                          previousPage: null
                        availableFilters:
                          muscleGroups:
                            - Chest
                          equipments:
                            - value: Dumbbells
                              label: Dumbbells
                          categories:
                            - Agility & Speed
                        selectedFilters:
                          tab: library
                          muscleGroups:
                            - Chest
                          equipments:
                            - Dumbbells
                          categories:
                            - Strength
                          search: bench
                          planContext:
                            planId: 67f1234567890abcdef1234
                            planMomentId: 67f1234567890abcdef1234
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
        '400':
          description: >-
            Invalid pagination, search query, or plan context.
            `SEARCH_QUERY_TOO_LONG` is returned when the query exceeds 100
            characters; `IDS_INVALID`, `WORKOUTPLAN_NOT_FOUND`, or
            `PLANMOMENT_NOT_FOUND` can be returned for invalid `planId` /
            `planMomentId` context; `WORKOUTEXERCISE_EXERCISEID_INVALID` is
            returned when `excludeExerciseIds` contains a malformed exercise
            ObjectId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
              examples:
                invalidRequest:
                  summary: Invalid request
                  value:
                    error:
                      code: 400
                      key: request.invalid
                      message: The request is invalid.
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
        '401':
          $ref: '#/components/schemas/ErrorResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
              examples:
                missingBearer:
                  summary: Missing Bearer token
                  value:
                    error:
                      code: 401
                      key: auth.missing_bearer
                      message: Authorization Bearer token is required.
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
                invalidToken:
                  summary: Invalid or expired token
                  value:
                    error:
                      code: 401
                      key: auth.invalid_token
                      message: The access token is invalid or expired.
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
                invalidClient:
                  summary: Inactive or revoked client
                  value:
                    error:
                      code: 401
                      key: auth.invalid_client
                      message: The Public API client is inactive or revoked.
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
        '403':
          $ref: '#/components/schemas/ErrorResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
              examples:
                insufficientScopes:
                  summary: Missing required scope
                  value:
                    error:
                      code: 403
                      key: scopes.insufficient
                      message: The access token does not include the required scope.
                      details:
                        requiredScopes:
                          - required:scope
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
        '404':
          $ref: '#/components/schemas/ErrorResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
              examples:
                notFound:
                  summary: Resource not found
                  value:
                    error:
                      code: 404
                      key: resource.not_found
                      message: The requested Public API resource was not found.
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
        '409':
          $ref: '#/components/schemas/ErrorResponse'
        '422':
          $ref: '#/components/schemas/ErrorResponse'
        '429':
          $ref: '#/components/schemas/ErrorResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
              examples:
                rateLimitExceeded:
                  summary: Rate limit exceeded
                  value:
                    error:
                      code: 429
                      key: rate_limit.exceeded
                      message: Too many Public API requests. Retry later.
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 0
                        resetSeconds: 1
                        retryAfterSeconds: 1
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
              examples:
                serverInternalError:
                  summary: Unexpected server error
                  value:
                    error:
                      code: 500
                      key: server.internal_error
                      message: An unexpected Public API server error occurred.
                    meta:
                      requestId: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
                      rateLimit:
                        limit: 10
                        remaining: 9
                        resetSeconds: 1
      security:
        - PublicBearerAuth: []
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: >-
            curl -X GET
            "https://api.fitsociety.io/public/v1/workout/exercises/search" \
              -H "Authorization: Bearer <access_token>"
components:
  schemas:
    PublicApiSuccessResponse:
      type: object
      additionalProperties: false
      required:
        - data
        - meta
      properties:
        data:
          type: object
        meta:
          $ref: '#/components/schemas/PublicApiMeta'
    PublicWorkoutSourceGETAppV1WorkoutExercisesSearchResponse200:
      type: object
      properties:
        data:
          type: object
          properties:
            tab:
              type: string
              enum:
                - library
                - my
                - member
              example: library
            items:
              type: array
              items:
                type: object
                properties:
                  _id:
                    type: string
                    example: 67f1234567890abcdef1234
                  name:
                    type: string
                    example: Barbell Bench Press
                  description:
                    type: string
                    example: Flat horizontal press.
                  primaryCategory:
                    type: string
                    enum:
                      - Agility & Speed
                      - Strength
                      - Hypertrophy
                      - Strength - Dynamic
                      - Strength - Explosive
                      - Strength - Static
                      - Cardio
                      - Cardio - Duration
                      - Cardio - Interval
                      - HIIT
                      - Crossfit
                      - Mobility
                      - Stretching
                      - Core
                      - Coordination & Balance
                      - Movement Prep
                      - Functional Training
                      - Recovery
                      - Sports
                      - Martial Arts
                      - Yoga
                      - Other
                      - GROUP_WORKOUT_TEMPLATE
                      - Plyometric
                      - Cycling
                      - Cardio - interval
                      - Mobilisation
                      - Stabilisation
                      - Daily Living
                      - Target zone
                      - Respiration
                      - Breathing
                      - Massage
                      - Outdoor sports
                      - Indoor sports
                      - Dance
                      - Group Lessons
                      - Martial arts
                      - Material Arts
                      - Fight skills
                      - Mind and body
                      - ''
                      - default
                    example: Strength
                  secondaryCategories:
                    type: array
                    items:
                      type: string
                      enum:
                        - Agility & Speed
                        - Strength
                        - Hypertrophy
                        - Strength - Dynamic
                        - Strength - Explosive
                        - Strength - Static
                        - Cardio
                        - Cardio - Duration
                        - Cardio - Interval
                        - HIIT
                        - Crossfit
                        - Mobility
                        - Stretching
                        - Core
                        - Coordination & Balance
                        - Movement Prep
                        - Functional Training
                        - Recovery
                        - Sports
                        - Martial Arts
                        - Yoga
                        - Other
                        - GROUP_WORKOUT_TEMPLATE
                        - Plyometric
                        - Cycling
                        - Cardio - interval
                        - Mobilisation
                        - Stabilisation
                        - Daily Living
                        - Target zone
                        - Respiration
                        - Breathing
                        - Massage
                        - Outdoor sports
                        - Indoor sports
                        - Dance
                        - Group Lessons
                        - Martial arts
                        - Material Arts
                        - Fight skills
                        - Mind and body
                        - ''
                        - default
                  primaryMuscle:
                    type: string
                    enum:
                      - Chest
                      - Back
                      - Lats
                      - Traps
                      - Shoulders
                      - Biceps
                      - Triceps
                      - Forearms
                      - Core
                      - Abs
                      - Obliques
                      - Glutes
                      - Quads
                      - Hamstrings
                      - Calves
                      - Adductors
                      - Abductors
                      - Hip Flexors
                      - Full Body
                      - Cardio / Conditioning
                      - Neck
                      - Lower Back
                    example: Chest
                  secondaryMuscles:
                    type: array
                    items:
                      type: string
                      enum:
                        - Chest
                        - Back
                        - Lats
                        - Traps
                        - Shoulders
                        - Biceps
                        - Triceps
                        - Forearms
                        - Core
                        - Abs
                        - Obliques
                        - Glutes
                        - Quads
                        - Hamstrings
                        - Calves
                        - Adductors
                        - Abductors
                        - Hip Flexors
                        - Full Body
                        - Cardio / Conditioning
                        - Neck
                        - Lower Back
                  primaryJoint:
                    type: string
                    enum:
                      - ''
                      - Ankle
                      - Combination
                      - Core
                      - Elbow
                      - Fingers
                      - Hip
                      - Knee
                      - Neck
                      - Shoulder
                      - Spine
                      - Wrist
                    example: Shoulder
                  equipment:
                    type: array
                    items:
                      type: string
                      enum:
                        - Dumbbells
                        - AdjustableDumbbells
                        - Kettlebell
                        - AdjustableKettlebell
                        - CompetitionKettlebell
                        - Medicineball
                        - SlamBall
                        - WallBall
                        - Weightplate
                        - BumperPlates
                        - FractionalPlates
                        - LoadableDumbbellHandle
                        - Sandbag
                        - StrongmanSandbag
                        - Bulgarianbag
                        - Aquabag
                        - Aquaball
                        - Hydrovest
                        - MagneticBell
                        - Macebell
                        - SteelClub
                        - IndianClub
                        - Barbell
                        - OlympicBarbell
                        - TechniqueBar
                        - EZBar
                        - TrapBar
                        - SafetySquatBar
                        - SwissBar
                        - CamberedBar
                        - AxleBar
                        - Landmine
                        - Bench
                        - FlatBench
                        - AdjustableBench
                        - InclineBench
                        - DeclineBench
                        - SealRowBench
                        - HipThrustBench
                        - BenchPressRack
                        - SquatRack
                        - SquatStand
                        - PowerRack
                        - WallMountedRack
                        - HalfRack
                        - SmithMachine
                        - Monolift
                        - JammerArms
                        - BarbellJack
                        - WeightTree
                        - PlateStorage
                        - DeadliftPlatform
                        - Rig
                        - StrengthMachinesPlateloaded
                        - StrengthMachinesWeightstack
                        - StrengthMachinesPneumatic
                        - MultiGym
                        - LegPressMachine
                        - VerticalLegPressMachine
                        - LeverageSquatMachine
                        - LinearHackSquatMachine
                        - BeltSquatMachine
                        - PendulumSquatMachine
                        - VSquatMachine
                        - HackSquatMachine
                        - LegExtensionMachine
                        - LegCurlMachine
                        - SeatedLegCurlMachine
                        - LyingLegCurlMachine
                        - StandingLegCurlMachine
                        - StandingCalfRaiseMachine
                        - SeatedCalfRaiseMachine
                        - CalfPressMachine
                        - HipThrustMachine
                        - GluteDriveMachine
                        - GluteKickbackMachine
                        - HipExtensionMachine
                        - HipAbductionMachine
                        - HipAdductionMachine
                        - ChestPressMachine
                        - VerticalChestPressMachine
                        - InclineChestPressMachine
                        - DeclineChestPressMachine
                        - IsoLateralChestPressMachine
                        - IsoLateralInclinePressMachine
                        - ShoulderPressMachine
                        - IsoLateralShoulderPressMachine
                        - MultiPressMachine
                        - LateralRaiseMachine
                        - RearDeltMachine
                        - PecDeckMachine
                        - PulloverMachine
                        - LatPulldownMachine
                        - IsoLateralLatPulldownMachine
                        - AssistedPullupMachine
                        - AssistedDipMachine
                        - SeatedDipMachine
                        - SeatedRowMachine
                        - LowRowMachine
                        - HighRowMachine
                        - IsoLateralRowMachine
                        - ChestSupportedRowMachine
                        - TBarRowMachine
                        - BicepsCurlMachine
                        - PreacherCurlMachine
                        - TricepsExtensionMachine
                        - AbCrunchMachine
                        - AbCoasterMachine
                        - RotaryTorsoMachine
                        - BackExtensionMachine
                        - SeatedBackExtensionMachine
                        - HyperextensionBench
                        - ReverseHyper
                        - GHD
                        - Kinesis
                        - Pulley
                        - CableMachine
                        - CableStation
                        - CableColumn
                        - CableCrossover
                        - DualAdjustablePulley
                        - SingleCableTower
                        - FunctionalTrainer
                        - TotalGymGTS
                        - Gymstick
                        - ViPR
                        - RipTrainer
                        - Battlerope
                        - ProwlerSled
                        - FarmersHandles
                        - Yoke
                        - Tire
                        - Sledgehammer
                        - TorqueTank
                        - SledTrack
                        - WallBallTarget
                        - AgilityPoles
                        - MiniHurdles
                        - SprintParachute
                        - PullUpBar
                        - Parallelbars
                        - DipBars
                        - Equalizer
                        - Suspensiontrainer
                        - SuspensionSlingTrainer
                        - GymnasticRings
                        - MonkeyBars
                        - PegBoard
                        - RopeClimb
                        - Wall
                        - StallBars
                        - DoorPullUpBar
                        - PushUpHandles
                        - AbStraps
                        - Boxstep
                        - SoftPlyoBox
                        - Hurdle
                        - Speedladder
                        - Parallettes
                        - NordicBench
                        - SissySquatBench
                        - Cardio
                        - Treadmill
                        - CurvedTreadmill
                        - AirRunner
                        - AssaultRunner
                        - StationaryBike
                        - UprightBike
                        - RecumbentBike
                        - BikeErg
                        - SpinBike
                        - AirBike
                        - Rower
                        - WaterRower
                        - FanRower
                        - ArmErgometer
                        - SkiErg
                        - Elliptical
                        - ArcTrainer
                        - NuStep
                        - StairClimber
                        - StepMill
                        - JacobsLadder
                        - VersaClimber
                        - Bosu
                        - Balanceball
                        - Exerciseball
                        - PilatesTennisball
                        - PilatesRing
                        - YogaMat
                        - YogaBlock
                        - YogaWheel
                        - StretchStrap
                        - MobilityStick
                        - MassageBall
                        - PeanutMassageBall
                        - Airpad
                        - Balanceboard
                        - BalancePad
                        - WobbleBoard
                        - Glidedisc
                        - Foamroller
                        - Elasticbands
                        - TherapyBand
                        - Resistanceband
                        - MiniBand
                        - PullUpAssistBand
                        - Powertube
                        - AnkleWeights
                        - SlantBoard
                        - Vibrationtraining
                        - CableRope
                        - StraightBarAttachment
                        - CurlBarAttachment
                        - LatBarAttachment
                        - TricepsBarAttachment
                        - RowHandle
                        - DHandle
                        - DoubleDHandle
                        - AnkleCuff
                        - CableCuff
                        - LandmineHandle
                        - MagGripAttachment
                        - DipBelt
                        - AbWheel
                        - WristRoller
                        - FatGrip
                        - Chain
                        - DoorAnchor
                        - JumpRope
                        - SpeedRope
                        - WeightedJumpRope
                        - SledHarness
                        - LiftingStraps
                        - LiftingHooks
                        - WristWraps
                        - WeightliftingBelt
                        - Clubbel
                        - Stick
                        - Bodybow
                        - BuddySystem
                        - Multinet
                        - Flowin
                        - Aerialhoop
                        - Dancingpole
                        - Trapeze
                        - HulaHoop
                        - Trampoline
                        - XCO
                        - PilatesReformer
                        - PilatesChair
                        - PilatesCadillac
                        - PilatesBarrel
                        - PilatesSpringboard
                        - BalanceBeam
                        - TreatmentTable
                        - RehabTable
                        - SlideBoard
                  difficulty:
                    type: string
                    enum:
                      - ''
                      - Beginner
                      - Intermediate
                      - Advanced
                    example: Intermediate
                  intensity:
                    type: string
                    enum:
                      - ''
                      - Beginner
                      - Below Average
                      - Average
                      - Above Average
                      - High Intensity
                    example: Above Average
                  visibility:
                    type: string
                    enum:
                      - Everyone
                      - Company
                      - Fitsociety
                    example: Everyone
                  createdAt:
                    type: string
                    format: date-time
                    example: '2026-04-12T10:00:00.000Z'
                  media:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - image
                            - video
                          example: image
                        url:
                          type: string
                          example: https://cdn.example.com/exercises/bench.jpg
                        platform:
                          type:
                            - string
                            - 'null'
                          enum:
                            - null
                            - s3
                            - youtube
                            - tiktok
                          example: null
                        videoId:
                          type:
                            - string
                            - 'null'
                          example: null
                        thumbnail:
                          type:
                            - string
                            - 'null'
                          example: null
                        duration:
                          type:
                            - number
                            - 'null'
                          example: null
                        width:
                          type:
                            - number
                            - 'null'
                          example: 1280
                        height:
                          type:
                            - number
                            - 'null'
                          example: 720
                  defaultType:
                    type: string
                    enum:
                      - ''
                      - reps
                      - time
                      - distance
                    description: Optional fallback tracking type for freestyle sessions.
                    example: reps
                  isInSelectedPlanMoment:
                    type: boolean
                    description: >-
                      True when this exercise is already present in the
                      requested plan/day context.
                    example: true
                  planExerciseId:
                    type: string
                    example: 67f1234567890abcdef1234
                    nullable: true
                    description: >-
                      Plan exercise subdocument id when `planId` and
                      `planMomentId` match this catalog exercise.
                  targetSets:
                    type: number
                    nullable: true
                    description: Plan-prescribed set count for the selected day.
                    example: 3
                  targetReps:
                    type: string
                    description: >-
                      Plan-prescribed reps label for the selected day, for
                      example `15-20`.
                    example: 15-20
                  targetRpe:
                    type: number
                    nullable: true
                    description: Plan-prescribed RPE for the selected day.
                    example: 6
                  planPrescription:
                    type:
                      - object
                      - 'null'
                    description: >-
                      Plan/day prescription attached when the caller passes
                      `planId` and `planMomentId`; null for plain catalog
                      search.
                    properties:
                      source:
                        type: string
                        enum:
                          - plan
                        example: plan
                      planId:
                        type: string
                        example: 67f1234567890abcdef1234
                      planMomentId:
                        type: string
                        example: 67f1234567890abcdef1234
                      planExerciseId:
                        type: string
                        example: 67f1234567890abcdef1234
                      type:
                        type: string
                        example: reps
                      sets:
                        type: number
                        example: 3
                      minReps:
                        type: number
                        example: 15
                      maxReps:
                        type: number
                        example: 20
                      targetReps:
                        type: string
                        example: 15-20
                      reps:
                        type: string
                        example: 15-20
                      rpe:
                        type: number
                        nullable: true
                        example: 6
                      restSeconds:
                        type: number
                        nullable: true
                        example: 90
                      tempo:
                        type: string
                        example: 2-0-2
                      rmPercentage:
                        type: number
                        nullable: true
                        example: null
                      metric:
                        type: string
                        example: ''
                      perSetTrackingEnabled:
                        type: boolean
                        example: false
                      setsData:
                        type: array
                        items:
                          $ref: >-
                            #/components/schemas/PublicWorkoutSourceWorkoutSetData
                      display:
                        type: object
                        properties:
                          sets:
                            type: string
                            example: 3 sets
                          reps:
                            type: string
                            example: 15-20 reps
                          rpe:
                            type: string
                            example: RPE 6
                          summary:
                            type: string
                            example: 3 sets · 15-20 reps · RPE 6
            pagination:
              type: object
              properties:
                page:
                  type: integer
                  example: 1
                limit:
                  type: integer
                  example: 25
                totalPages:
                  type: integer
                  example: 5
                totalItems:
                  type: integer
                  example: 100
                hasNextPage:
                  type: boolean
                  example: true
                hasPreviousPage:
                  type: boolean
                  example: false
                nextPage:
                  type: integer
                  nullable: true
                  example: 2
                previousPage:
                  type: integer
                  nullable: true
                  example: null
            availableFilters:
              type: object
              properties:
                muscleGroups:
                  type: array
                  items:
                    type: string
                    enum:
                      - Chest
                      - Back
                      - Lats
                      - Traps
                      - Shoulders
                      - Biceps
                      - Triceps
                      - Forearms
                      - Core
                      - Abs
                      - Obliques
                      - Glutes
                      - Quads
                      - Hamstrings
                      - Calves
                      - Adductors
                      - Abductors
                      - Hip Flexors
                      - Full Body
                      - Cardio / Conditioning
                      - Neck
                      - Lower Back
                equipments:
                  type: array
                  items:
                    type: object
                    properties:
                      value:
                        type: string
                        example: Dumbbells
                      label:
                        type: string
                        example: Dumbbells
                categories:
                  type: array
                  items:
                    type: string
                    enum:
                      - Agility & Speed
                      - Strength
                      - Hypertrophy
                      - Strength - Dynamic
                      - Strength - Explosive
                      - Strength - Static
                      - Cardio
                      - Cardio - Duration
                      - Cardio - Interval
                      - HIIT
                      - Crossfit
                      - Mobility
                      - Stretching
                      - Core
                      - Coordination & Balance
                      - Movement Prep
                      - Functional Training
                      - Recovery
                      - Sports
                      - Martial Arts
                      - Yoga
                      - Other
                      - GROUP_WORKOUT_TEMPLATE
                      - Plyometric
                      - Cycling
                      - Cardio - interval
                      - Mobilisation
                      - Stabilisation
                      - Daily Living
                      - Target zone
                      - Respiration
                      - Breathing
                      - Massage
                      - Outdoor sports
                      - Indoor sports
                      - Dance
                      - Group Lessons
                      - Martial arts
                      - Material Arts
                      - Fight skills
                      - Mind and body
                      - ''
                      - default
            selectedFilters:
              type: object
              properties:
                tab:
                  type: string
                  enum:
                    - library
                    - my
                    - member
                  example: library
                muscleGroups:
                  type: array
                  items:
                    type: string
                  example:
                    - Chest
                equipments:
                  type: array
                  items:
                    type: string
                  example:
                    - Dumbbells
                categories:
                  type: array
                  items:
                    type: string
                  example:
                    - Strength
                search:
                  type: string
                  example: bench
                planContext:
                  type:
                    - object
                    - 'null'
                  properties:
                    planId:
                      type: string
                      example: 67f1234567890abcdef1234
                    planMomentId:
                      type: string
                      example: 67f1234567890abcdef1234
          required:
            - tab
            - items
            - pagination
      required:
        - data
    PublicApiError:
      type: object
      additionalProperties: false
      required:
        - error
        - meta
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - key
            - message
          properties:
            code:
              type: integer
              example: 401
            key:
              type: string
              example: auth.invalid_token
            message:
              type: string
              example: The access token is invalid.
            details:
              type: object
              additionalProperties: true
        meta:
          $ref: '#/components/schemas/PublicApiMeta'
    ErrorResponse:
      allOf:
        - $ref: '#/components/schemas/StandardResponse'
        - example:
            status: 401
            error: true
            message: MISSING_AUTH
    PublicApiMeta:
      type: object
      additionalProperties: false
      required:
        - requestId
      properties:
        requestId:
          type: string
          description: Stable request correlation id. Mirrors `X-Request-Id` when supplied.
          example: 4f849d7d-f4f1-45cc-b4b7-3984a3d17f83
        rateLimit:
          $ref: '#/components/schemas/PublicApiRateLimitMeta'
    PublicWorkoutSourceWorkoutSetData:
      type: object
      properties:
        setNumber:
          type: integer
          minimum: 1
          example: 1
        setType:
          type: string
          enum:
            - 'N'
            - W
            - D
            - F
          example: 'N'
          description: 'Planned set type: N normal, W warm-up, D drop set, F to failure.'
        metric:
          type: string
          example: '12'
        repetition:
          type: string
          example: 8-12
        weight:
          type: number
          example: 60
        rest:
          type: number
          example: 90
        rpe:
          type:
            - number
            - 'null'
          minimum: 0
          maximum: 10
          example: 7.5
          description: >-
            Optional target RPE for this set. It does not inherit the
            exercise-level RPE value.
        duration:
          type: number
          example: 45
        distance:
          type: number
          example: 250
    StandardResponse:
      type: object
      properties:
        status:
          type: integer
          example: 200
        error:
          type: boolean
          example: false
        message:
          type: string
          example: SUCCESS
      required:
        - status
        - error
        - message
    PublicApiRateLimitMeta:
      type: object
      additionalProperties: false
      properties:
        limit:
          type: integer
          example: 10
        remaining:
          type: integer
          example: 9
        resetSeconds:
          type: integer
          description: Seconds until the current rate limit window resets.
          example: 1
        retryAfterSeconds:
          type: integer
          description: Present when the request was rate limited.
          example: 1
  securitySchemes:
    PublicBearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Opaque
      description: >-
        Public API access token issued by `/public/v1/oauth/token`. Example:
        `Authorization: Bearer fspt_...`. Each resource request rechecks the
        token company's current provider access. Disabling access blocks
        existing tokens with `403 auth.provider_unavailable`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.