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/v1

GET /api/v1/plans — Listar planos

Retorna a lista de planos da academia, ordenados por sort_order.

Query Parameters

ParâmetroTipoPadrãoDescrição
is_activebooleanFiltrar 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

CampoTipoDescrição
idstringUUID do plano
namestringNome do plano
descriptionstringDescrição do plano
billing_periodstringPeríodo de cobrança: monthly, quarterly, semiannual, annual
price_centsintegerPreço em centavos (ex: 9990 = R$ 99,90)
enrollment_fee_centsintegerTaxa de matrícula em centavos
duration_daysintegerDuração em dias
trial_daysintegerDias de teste gratuito
grace_period_daysintegerDias de carência após vencimento
max_classes_per_weekintegerMáximo de aulas por semana (null = ilimitado)
has_group_classesbooleanInclui aulas em grupo?
has_personal_trainerbooleanInclui personal trainer?
has_lockerbooleanInclui armário?
max_freezes_per_yearintegerMáximo de congelamentos por ano
max_freeze_daysintegerMáximo de dias de congelamento por solicitação
is_activebooleanPlano está ativo e disponível para venda?
sort_orderintegerOrdem de exibição
created_atstringData 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"
  }
}

On this page