API
Planos
Consultar planos da academia via API.
Planos
Endpoints para consultar os planos disponíveis na academia.
A criação e edição de planos é feita exclusivamente pelo painel do OctaGym em Planos. A API permite apenas consulta (leitura).
Base URL
https://dashboard.octagym.ai/api/v1GET /api/v1/plans — Listar planos
Retorna a lista de planos da academia, ordenados por sort_order.
Query Parameters
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
is_active | boolean | — | Filtrar por planos ativos (true) ou inativos (false) |
Exemplo de Requisição
curl -X GET "https://dashboard.octagym.ai/api/v1/plans" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"curl -X GET "https://dashboard.octagym.ai/api/v1/plans?is_active=true" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"Exemplo de Resposta
{
"success": true,
"data": [
{
"id": "plan_uuid_001",
"name": "Plano Mensal Básico",
"description": "Acesso à musculação e cardio",
"billing_period": "monthly",
"price_cents": 9990,
"enrollment_fee_cents": 4990,
"duration_days": 30,
"trial_days": 7,
"grace_period_days": 5,
"max_classes_per_week": 0,
"has_group_classes": false,
"has_personal_trainer": false,
"has_locker": false,
"max_freezes_per_year": 1,
"max_freeze_days": 15,
"is_active": true,
"sort_order": 1,
"created_at": "2026-01-01T00:00:00Z"
},
{
"id": "plan_uuid_002",
"name": "Plano Trimestral Completo",
"description": "Acesso total com aulas em grupo e armário",
"billing_period": "quarterly",
"price_cents": 24990,
"enrollment_fee_cents": 0,
"duration_days": 90,
"trial_days": 0,
"grace_period_days": 7,
"max_classes_per_week": 5,
"has_group_classes": true,
"has_personal_trainer": false,
"has_locker": true,
"max_freezes_per_year": 2,
"max_freeze_days": 30,
"is_active": true,
"sort_order": 2,
"created_at": "2026-01-01T00:00:00Z"
},
{
"id": "plan_uuid_003",
"name": "Plano Semestral Premium",
"description": "Acesso completo com personal trainer incluso",
"billing_period": "semiannual",
"price_cents": 44990,
"enrollment_fee_cents": 0,
"duration_days": 180,
"trial_days": 0,
"grace_period_days": 10,
"max_classes_per_week": null,
"has_group_classes": true,
"has_personal_trainer": true,
"has_locker": true,
"max_freezes_per_year": 3,
"max_freeze_days": 45,
"is_active": true,
"sort_order": 3,
"created_at": "2026-01-01T00:00:00Z"
},
{
"id": "plan_uuid_004",
"name": "Plano Anual Black",
"description": "O plano mais completo — acesso ilimitado a tudo",
"billing_period": "annual",
"price_cents": 79990,
"enrollment_fee_cents": 0,
"duration_days": 365,
"trial_days": 0,
"grace_period_days": 15,
"max_classes_per_week": null,
"has_group_classes": true,
"has_personal_trainer": true,
"has_locker": true,
"max_freezes_per_year": 4,
"max_freeze_days": 60,
"is_active": true,
"sort_order": 4,
"created_at": "2026-01-01T00:00:00Z"
}
]
}Campos do Plano
| Campo | Tipo | Descrição |
|---|---|---|
id | string | UUID do plano |
name | string | Nome do plano |
description | string | Descrição do plano |
billing_period | string | Período de cobrança: monthly, quarterly, semiannual, annual |
price_cents | integer | Preço em centavos (ex: 9990 = R$ 99,90) |
enrollment_fee_cents | integer | Taxa de matrícula em centavos |
duration_days | integer | Duração em dias |
trial_days | integer | Dias de teste gratuito |
grace_period_days | integer | Dias de carência após vencimento |
max_classes_per_week | integer | Máximo de aulas por semana (null = ilimitado) |
has_group_classes | boolean | Inclui aulas em grupo? |
has_personal_trainer | boolean | Inclui personal trainer? |
has_locker | boolean | Inclui armário? |
max_freezes_per_year | integer | Máximo de congelamentos por ano |
max_freeze_days | integer | Máximo de dias de congelamento por solicitação |
is_active | boolean | Plano está ativo e disponível para venda? |
sort_order | integer | Ordem de exibição |
created_at | string | Data de criação (ISO 8601) |
Valores monetários são sempre em centavos (integer). Para exibir ao usuário, divida por 100.
Exemplo: 9990 → R$ 99,90.
GET /api/v1/plans/:id — Buscar plano
Retorna os detalhes completos de um plano específico.
Exemplo de Requisição
curl -X GET "https://dashboard.octagym.ai/api/v1/plans/plan_uuid_002" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"Exemplo de Resposta
{
"success": true,
"data": {
"id": "plan_uuid_002",
"name": "Plano Trimestral Completo",
"description": "Acesso total com aulas em grupo e armário",
"billing_period": "quarterly",
"price_cents": 24990,
"enrollment_fee_cents": 0,
"duration_days": 90,
"trial_days": 0,
"grace_period_days": 7,
"max_classes_per_week": 5,
"has_group_classes": true,
"has_personal_trainer": false,
"has_locker": true,
"max_freezes_per_year": 2,
"max_freeze_days": 30,
"is_active": true,
"sort_order": 2,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-02-10T14:00:00Z"
}
}