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.
https://libapi.vercel.app/api/exercises
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
-
items: object
RESPONSE SCHEMA: application/json
-
type: object
-
properties:
- message: string
- error: string
-
properties:
{
"_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:
https://libapi.vercel.app/api/exercises?lang=pt
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
-
items: object
RESPONSE SCHEMA: application/json
-
type: object
-
properties:
- message: string
-
properties:
[
{
"_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:
https://libapi.vercel.app/api/exercises?fields=instructions
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)
-
items: object
RESPONSE SCHEMA: application/json
-
type: object
-
properties:
- message: string
-
properties:
{
"_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:
https://libapi.vercel.app/api/exercises?page=10
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
-
items: object
RESPONSE SCHEMA: application/json
-
type: obeject
-
properties:
- message: string
-
properties:
{
"_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:
https://libapi.vercel.app/api/exercises?limit=5
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
-
items: object
RESPONSE SCHEMA: application/json
-
type: object
-
properties:
- message: string
-
properties:
[
{
"_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:
https://libapi.vercel.app/api/exercises?level=expert&force=push&primaryMuscles=chest
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
-
items: object
RESPONSE SCHEMA: application/json
-
type: object
-
properties:
- message: string
-
properties:
[
{
"_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."
}
Busca
Este endpoint permite buscar exercícios no banco de dados da API MuscleLib. Ele suporta diversos parâmetros para filtrar e paginar os resultados.
Exemplo de Requisição:
https://libapi.vercel.app/api/exercises/search?query=push
Exemplos de Resposta
RESPONSE SCHEMA: application/json
- type: object
- exercises: array (items: object)
RESPONSE SCHEMA: application/json
- type: object
- properties: object
- message: string
- properties: object
{
"exercises": [
{
"_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": "Por favor, insira um termo de pesquisa."
}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.
https://libapi.vercel.app/api/exercises/Stiff-Legged_Barbell_Deadlift/0.jpg
Exemplos de Resposta
RESPONSE SCHEMA: image/jpeg
RESPONSE SCHEMA: application/json
-
type: object
-
properties:
- message: string
-
availableOptions: array
- items: string
-
properties:
{
"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":
-
0.jpg
1.jpghttps://libapi.vercel.app/api/exercises/3_4_Sit-Up/0.jpghttps://libapi.vercel.app/api/exercises/3_4_Sit-Up/1.jpg - Caminhos das imagens para o exercício "Stiff-Legged_Barbell_Deadlift":
-
0.jpg
1.jpghttps://libapi.vercel.app/api/exercises/Stiff-Legged_Barbell_Deadlift/0.jpghttps://libapi.vercel.app/api/exercises/Stiff-Legged_Barbell_Deadlift/1.jpg