Comienza a construir tu proyecto usando la API MuscleLib

URL base

Todos los endpoints utilizan la URL base. La URL base de MuscleLib API es:

https://libapi.vercel.app/api

Primeros pasos

Todos los ejercicios

Obtiene una lista de todos los ejercicios disponibles en la base de datos. Este endpoint admite varios parámetros de consulta para filtros y paginación.

Ejemplos de respuesta

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": "tirar",
  "level": "principiante",
  "mechanic": "compuesto",
  "equipment": "peso corporal",
  "primaryMuscles": [
    "abdominales"
  ],
  "secondaryMuscles": [],
  "instructions": [
    "Acuéstese en el suelo y asegure los pies."
  ],
  "category": "fuerza",
  "images": [
    "3_4_Sit-Up/0.jpg",
    "3_4_Sit-Up/1.jpg"
  ],
  "id": "3_4_Sit-Up"
}
{
  "message": "Error al obtener los ejercicios.",
  "error": "Error al obtener los ejercicios."
}
Idioma

Idioma de la respuesta. El valor predeterminado es en. Valores admitidos: en, pt, es. Si se omite, la API puede utilizar el encabezado Accept-Language.

Ejemplo de solicitud:

Ejemplos de respuesta

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": "Molino avanzado con pesa rusa",
    "force": "empuje",
    "level": "intermedio",
    "mechanic": "aislamiento",
    "equipment": "pesas rusas",
    "primaryMuscles": [
      "abdominales"
    ],
    "secondaryMuscles": [
      "glúteos",
      "isquiotibiales",
      "hombros"
    ],
    "instructions": [
      "Limpie y presione una pesa rusa por encima de la cabeza con un brazo."
    ],
    "category": "fuerza",
    "images": [
      "Advanced_Kettlebell_Windmill/0.jpg",
      "Advanced_Kettlebell_Windmill/1.jpg"
    ],
    "id": "Advanced_Kettlebell_Windmill"
  }
]
{
  "message": "Idioma no válido. Use 'en', 'pt' o 'es'."
}
Campos

Lista de campos separados por comas que se devolverán. Ej.: (name,instructions).

Ejemplo de solicitud:

Ejemplos de respuesta

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": "Curl de Martillo Alternado",
  "instructions": [
    "Póngase de pie con el torso erguido y una mancuerna en cada mano.",
    "Las palmas de las manos deben estar orientadas hacia el torso."
  ]
}
{
  "message": "El/los parámetro(s) de campo(s) no puede(n) estar vacío(s). Los campos válidos son: force, level, mechanic, equipment, primaryMuscles, secondaryMuscles, instructions, category, images, name."
}
Página

El número de página debe ser un entero ≥ 1. El valor predeterminado es 1.

Ejemplo de solicitud:

Ejemplos de respuesta

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 con kettlebell a una mano y palma abierta",
  "force": "tirar",
  "level": "intermedio",
  "mechanic": "compuesto",
  "equipment": "pesas rusas",
  "primaryMuscles": [
    "isquiotibiales"
  ],
  "secondaryMuscles": [
    "antebrazos",
    "glúteos",
    "zona lumbar",
    "cuádriceps",
    "hombros"
  ],
  "instructions": [
    "Coloque una pesa rusa entre los pies."
  ],
  "category": "fuerza",
  "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": "El parámetro 'page' no es válido. use un valor mayor o igual a 0."
}
Límite

Número de elementos por página. Debe ser un entero ≥ 1. El valor predeterminado es 10.

Ejemplo de solicitud:

Ejemplos de respuesta

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": "Remo inclinado con barra larga a dos brazos",
    "force": "tirar"
  }
]
{
  "message": "El parámetro 'limit' debe ser mayor que 0"
}
Filtros dinámicos

Aplica filtros según los atributos de los ejercicios. Ejemplo: (level=expert&force=push&primaryMuscles=chest).

Ejemplo de solicitud:

Ejemplos de respuesta

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": "677471831533c77a3a55b4ff",
    "name": "Flexiones pliométricas con pesa rusa",
    "force": "empuje",
    "level": "experto",
    "mechanic": "compuesto",
    "equipment": "pesas rusas",
    "primaryMuscles": [
      "pecho"
    ],
    "secondaryMuscles": [
      "hombros",
      "tríceps"
    ],
    "instructions": [
      "Coloque una pesa rusa en el suelo y adopte la posición de flexión."
    ],
    "category": "fuerza",
    "images": [
      "Plyo_Kettlebell_Pushups/0.jpg",
      "Plyo_Kettlebell_Pushups/1.jpg"
    ],
    "id": "Plyo_Kettlebell_Pushups",
    "__v": 0
  }
]
{
  "message": "No se encontraron ejercicios."
}
Obtener imágenes de ejercicios

Este endpoint permite obtener las imágenes asociadas a los ejercicios de MuscleLib API. Cada ejercicio tiene sus imágenes almacenadas en un directorio específico.

Ejemplos de respuesta

RESPONSE SCHEMA: image/jpeg

Exercise Image Example

RESPONSE SCHEMA: application/json


  • type: object
    • properties:
      • message: string
      • availableOptions: array
        • items: string
{
  "message": "El $exerciseName proporcionado es incorrecto o no existe en la base de datos. Pruebe:",
  "availableOptions": [
    "Stiff-Legged_Barbell_Deadlift"
  ]
}
Estructura de las imágenes

Las imágenes de los ejercicios están organizadas en carpetas, donde cada carpeta corresponde a un ejercicio. Dentro de cada carpeta hay dos imágenes llamadas 0.jpg y 1.jpg.
Por ejemplo:

  • Rutas de imágenes para el ejercicio "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
  • Rutas de imágenes para el ejercicio "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