Comece a construir seu projeto usando a API MuscleLib

URL Base

Todos os endpoints utilizam a URL base. A URL base da API MuscleLib é:

https://libapi.vercel.app/api

Primeiros Passos

Todos os Exercícios

Retorna uma lista de todos os exercícios disponíveis no banco de dados. Este endpoint suporta vários parâmetros de consulta para filtros e paginação.

Exemplos de Resposta

RESPONSE SCHEMA: application/json


  • type: array
    • items: object
      • _id: string
      • name: string (localized by lang)
      • force: string (localized by lang)
      • level: string (localized by lang)
      • mechanic: string (localized by lang)
      • equipment: string (localized by lang)
      • primaryMuscles: array (items: string, localized by lang)
      • secondaryMuscles: array (items: string, localized by lang)
      • instructions: array (items: string, localized by lang)
      • category: string (localized by lang)
      • images: array (items: string)
      • id: string

RESPONSE SCHEMA: application/json


  • type: object
    • properties:
      • message: string
      • error: string
{
  "_id": "677471831533c77a3a55b2e0",
  "name": "Abdominal 3/4",
  "force": "puxar",
  "level": "iniciante",
  "mechanic": "composto",
  "equipment": "peso corporal",
  "primaryMuscles": [
    "abdominais"
  ],
  "secondaryMuscles": [],
  "instructions": [
    "Deite-se no chão e prenda os pés."
  ],
  "category": "força",
  "images": [
    "3_4_Sit-Up/0.jpg",
    "3_4_Sit-Up/1.jpg"
  ],
  "id": "3_4_Sit-Up"
}
{
  "message": "Erro ao buscar os exercícios.",
  "error": "Falha ao buscar exercícios."
}
Idioma

Idioma da resposta. O padrão é en. Valores suportados: en, pt, es. Se omitido, a API pode usar o cabeçalho Accept-Language.

Exemplo de Requisição:

Exemplos de Resposta

RESPONSE SCHEMA: application/json


  • type: array
    • items: object
      • _id: string
      • name: string (localized by lang)
      • force: string (localized by lang)
      • level: string (localized by lang)
      • mechanic: string (localized by lang)
      • equipment: string (localized by lang)
      • primaryMuscles: array (items: string, localized by lang)
      • secondaryMuscles: array (items: string, localized by lang)
      • instructions: array (items: string, localized by lang)
      • category: string (localized by lang)
      • images: array (items: string)
      • id: string

RESPONSE SCHEMA: application/json


  • type: object
    • properties:
      • message: string
[
  {
    "_id": "677471841533c77a3a55b2e6",
    "name": "Moinho Avançado com Kettlebell",
    "force": "empurrar",
    "level": "intermediário",
    "mechanic": "isolamento",
    "equipment": "kettlebells",
    "primaryMuscles": [
      "abdominais"
    ],
    "secondaryMuscles": [
      "glúteos",
      "posteriores de coxa",
      "ombros"
    ],
    "instructions": [
      "Faça a limpeza e pressione um kettlebell acima da cabeça com um braço."
    ],
    "category": "força",
    "images": [
      "Advanced_Kettlebell_Windmill/0.jpg",
      "Advanced_Kettlebell_Windmill/1.jpg"
    ],
    "id": "Advanced_Kettlebell_Windmill"
  }
]
{
  "message": "Idioma inválido. Use 'en', 'pt' ou 'es'."
}
Campos

Lista de campos separados por vírgula a serem retornados. Ex.: (name,instructions).

Exemplo de Requisição:

Exemplos de Resposta

RESPONSE SCHEMA: application/json


  • type: object
    • items: object
      • _id: string
      • name: string (localized by lang)
      • instructions: array (items: string, localized by lang)

RESPONSE SCHEMA: application/json


  • type: object
    • properties:
      • message: string
{
  "_id": "677471841533c77a3a55b2e9",
  "name": "Rosca Martelo Alternada",
  "instructions": [
    "Fique em pé com o tronco ereto e um haltere em cada mão.",
    "As palmas das mãos devem estar voltadas para o tronco."
  ]
}
{
  "message": "O(s) parâmetro(s) de campo(s) não pode(m) estar vazio(s). Campos válidos são: force, level, mechanic, equipment, primaryMuscles, secondaryMuscles, instructions, category, images, name."
}
Página

Número da página para paginação deve ser um inteiro ≥ 1. O padrão é 1.

Exemplo de Requisição:

Exemplos de Resposta

RESPONSE SCHEMA: application/json


  • type: array
    • items: object
      • _id: string
      • name: string (localized by lang)
      • force: string (localized by lang)
      • level: string (localized by lang)
      • mechanic: string (localized by lang)
      • equipment: string (localized by lang)
      • primaryMuscles: array (items: sstring)
      • secondaryMuscles: array (items: object - details not specified)
      • instructions: array (items: string, localized by lang)
      • category: string (localized by lang)
      • images: array (items: string)
      • id: string

RESPONSE SCHEMA: application/json


  • type: obeject
    • properties:
      • message: string
{
  "_id": "677471841533c77a3a55b4d4",
  "name": "Clean com Kettlebell de Uma Mão e Palma Aberta",
  "force": "puxar",
  "level": "intermediário",
  "mechanic": "composto",
  "equipment": "kettlebells",
  "primaryMuscles": [
    "posteriores de coxa"
  ],
  "secondaryMuscles": [
    "antebraços",
    "glúteos",
    "lombar",
    "quadríceps",
    "ombros"
  ],
  "instructions": [
    "Coloque um kettlebell entre os pés."
  ],
  "category": "força",
  "images": [
    "One-Arm_Open_Palm_Kettlebell_Clean/0.jpg",
    "One-Arm_Open_Palm_Kettlebell_Clean/1.jpg"
  ],
  "id": "One-Arm_Open_Palm_Kettlebell_Clean",
  "__v": 0
}
{
  "message": "Parâmetro 'page' inválido. use um valor maior ou igual a 0."
}
Limite

Número de itens por página. Deve ser um inteiro ≥ 1. O padrão é 10.

Exemplo de Requisição:

Exemplos de Resposta

RESPONSE SCHEMA: application/json


  • type: array
    • items: object
      • _id: string
      • name: string (localized by lang)
      • force: string (localized by lang)
      • level: string (localized by lang)
      • mechanic: string (localized by lang)
      • equipment: string (localized by lang)
      • primaryMuscles: array
      • secondaryMuscles: array
      • instructions: array
      • category: string (localized by lang)
      • images: array
      • id: string

RESPONSE SCHEMA: application/json


  • type: object
    • properties:
      • message: string
[
  {
    "_id": "677471841533c77a3a55b4c1",
    "name": "Remada Curvada com Barra Longa e Dois Braços",
    "force": "puxar"
  }
]
{
  "message": "Parâmetro 'limit' deve ser maior que 0"
}
Filtros Dinâmicos

Aplique filtros com base nos atributos dos exercícios. Exemplo: (level=expert&force=push&primaryMuscles=chest).

Exemplo de Requisição:

Exemplos de Resposta

RESPONSE SCHEMA: application/json


  • type: array
    • items: object
      • _id: string
      • name: string (localized by lang)
      • force: string (localized by lang)
      • level: string (localized by lang)
      • mechanic: string (localized by lang)
      • equipment: string (localized by lang)
      • primaryMuscles: array (items: string, localized by lang)
      • secondaryMuscles: array (items: object - details not specified)
      • instructions: array (items: string, localized by lang)
      • category: string (localized by lang)
      • images: array (items: string)
      • id: string

RESPONSE SCHEMA: application/json


  • type: object
    • properties:
      • message: string
[
  {
    "_id": "677471841533c77a3a55b4ff",
    "name": "Flexões Pliométricas com Kettlebell",
    "force": "empurrar",
    "level": "expert",
    "mechanic": "composto",
    "equipment": "kettlebells",
    "primaryMuscles": [
      "peito"
    ],
    "secondaryMuscles": [
      "ombros",
      "tríceps"
    ],
    "instructions": [
      "Coloque um kettlebell no chão e fique na posição de flexão."
    ],
    "category": "força",
    "images": [
      "Plyo_Kettlebell_Pushups/0.jpg",
      "Plyo_Kettlebell_Pushups/1.jpg"
    ],
    "id": "Plyo_Kettlebell_Pushups",
    "__v": 0
  }
]
{
  "message": "Nenhum exercício encontrado."
}
Buscar Imagens dos Exercícios

Este endpoint permite recuperar imagens associadas aos exercícios da API MuscleLib. Cada exercício possui suas imagens armazenadas em um diretório específico.

Exemplos de Resposta

RESPONSE SCHEMA: image/jpeg

Exercise Image Example

RESPONSE SCHEMA: application/json


  • type: object
    • properties:
      • message: string
      • availableOptions: array
        • items: string
{
  "message": "O $exerciseName inserido está incorreto ou não existe no banco de dados. Tente:",
  "availableOptions": [
    "Stiff-Legged_Barbell_Deadlift"
  ]
}
Estrutura das Imagens

As imagens dos exercícios são organizadas em pastas, onde cada pasta corresponde a um exercício. Dentro de cada pasta existem duas imagens chamadas 0.jpg e 1.jpg.
Por exemplo:

  • Caminhos das imagens para o exercício "3/4 Sit-Up":
  • First Image
    0.jpg
    Second Image
    1.jpg
    https://libapi.vercel.app/api/exercises/3_4_Sit-Up/0.jpg
    https://libapi.vercel.app/api/exercises/3_4_Sit-Up/1.jpg
  • Caminhos das imagens para o exercício "Stiff-Legged_Barbell_Deadlift":
  • First Image
    0.jpg
    Second Image
    1.jpg
    https://libapi.vercel.app/api/exercises/Stiff-Legged_Barbell_Deadlift/0.jpg
    https://libapi.vercel.app/api/exercises/Stiff-Legged_Barbell_Deadlift/1.jpg