> ## Documentation Index
> Fetch the complete documentation index at: https://docs.member.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Member journey

> How a visitor becomes a member and starts using a hub.

A typical member journey touches several modules, but the story is straightforward.

## 1. Resolve the hub

The frontend starts with a slug:

```bash theme={null}
curl -s "$MIO_BASE_URL/api/v1/hubs/member-academy" | jq
```

Use the returned hub id for hub-scoped routes.

## 2. Authenticate or register the contact

Use contact auth to register, request a magic link, log in, or refresh a member token.

```text theme={null}
POST /api/v1/contact-auth/register
POST /api/v1/contact-auth/magic
POST /api/v1/contact-auth/login
POST /api/v1/contact-auth/refresh
```

## 3. Join or purchase

For a free hub, a member can join:

```text theme={null}
POST /api/v1/contact-auth/me/hubs/{hub_id}/join
```

For a paid hub, checkout creates the order and Stripe session:

```text theme={null}
POST /api/v1/hub/{hub_id}/checkout
```

## 4. Complete onboarding

Members can accept terms, fill onboarding/profile attributes, and mark onboarding complete.

```text theme={null}
POST /api/v1/contact-auth/me/hubs/{hub_id}/tos/accept
GET  /api/v1/hub/{team_id}/hubs/{hub_id}/onboarding-attributes
POST /api/v1/hub/{team_id}/hubs/{hub_id}/onboarding-attributes
POST /api/v1/contact-auth/me/hubs/{hub_id}/onboarding/complete
```

## 5. Use the hub

Once authorized, the member can read pages, content, media, community, billing, and notification settings. Access rules still run on protected content, so the frontend should handle locked or hidden resources.
