---
title: "Search and filter"
method: GET
path: "/exercises"
---

# Search and filter

`GET /exercises`

## Request

- Base URL: `https://exercisebank.net/v1`
- URL: `https://exercisebank.net/v1/exercises`
- Auth: HTTP bearer

## Query parameters

- `q` string
- `muscle` string
- `equipment` string
- `pattern` string
- `maxDifficulty` integer
- `minDifficulty` integer
- `excludeJoints` string
- `impact` string
- `unilateral` boolean
- `ids` string
- `limit` integer
- `offset` integer

## Response `200`

OK

- object
  - `data` Exercise[]
    - `id` string
    - `name` string
    - `nameFr` string
    - `variant` string: Coach-style name: Region- Movement- Position- Equipment
    - `description` string
    - `descriptionFr` string
    - `media` object: Which assets the exercise has. Signed URLs come from POST /media/urls.
      - `mp4` boolean
      - `still` boolean
    - `primaryMuscles` string[]
    - `secondaryMuscles` string[]
    - `equipment` string[]
    - `movementPattern` string
    - `difficulty` integer
    - `loadedJoints` string[]
    - `impact` 'low' | 'moderate' | 'high'
    - `unilateral` boolean
    - `cues` string[]
    - `cuesFr` string[]
    - `aliases` string[]
    - `hash` string: Changes when any field changes; use it to sync
  - `total` integer
  - `next` integer, nullable

## Other responses

- `401`: Bad key
- `429`: A limit was hit

---

[API](https://skmtc.dev/exercisebank/apis/exercisebank-api.md) · [All operations](https://skmtc.dev/exercisebank/apis/exercisebank-api/llms.txt) · [OpenAPI document](https://skmtc.dev/exercisebank/apis/exercisebank-api/revisions/4fac525c959e?raw)
