FunnelMates Member API

A REST API that gives members programmatic access to their FunnelMates account — profile, spaces, community, gamification, commerce, and affiliates.

Base URL
https://manus.lineartstudioai.com/api/v1
Auth
Bearer fm_live_…
Rate Limit
60/min · 1k/hr · 10k/day

Authentication

All API requests must include your API key in the Authorization header as a Bearer token. You can generate API keys from your Account Settings → API Access page.

bash
curl -H "Authorization: Bearer fm_live_your_api_key_here" \
  https://manus.lineartstudioai.com/api/v1/identity/me

Key format

All keys begin with fm_live_ followed by 48 random hex characters. Keys are stored as SHA-256 hashes — the raw key is shown only once at creation and cannot be recovered.

Health check (no auth)

bash
curl https://manus.lineartstudioai.com/api/v1/health
json
{ "status": "ok", "version": "1.0", "timestamp": "2026-03-08T00:00:00.000Z" }

Rate Limits

Each API key is subject to three sliding-window rate limits. Every response includes headers showing your current usage.

WindowLimitHeader
Per minute60 requestsX-RateLimit-Limit-Minute
Per hour1,000 requestsX-RateLimit-Limit-Hour
Per day10,000 requestsX-RateLimit-Limit-Day

When a limit is exceeded the API returns 429 Too Many Requests with a retryAfter Unix timestamp in the response body.

Identity & Profile

Retrieve and update the authenticated member's profile, list their spaces and access grants, and manage follow relationships.

GET
/api/v1/identity/me

Get authenticated member profile

PATCH
/api/v1/identity/me

Update profile fields (name, bio, avatar, visibility)

GET
/api/v1/identity/me/spaces

List all spaces the member has access to

GET
/api/v1/identity/me/access-grants

List all active access grants

GET
/api/v1/identity/me/followers

List members following you

GET
/api/v1/identity/me/following

List members you are following

POST
/api/v1/identity/follow/:contactId

Follow another member

DELETE
/api/v1/identity/follow/:contactId

Unfollow a member

Example: Get your profile

bash
curl -H "Authorization: Bearer fm_live_…" \
  https://manus.lineartstudioai.com/api/v1/identity/me
json
{
  "data": {
    "id": 42,
    "email": "[email protected]",
    "firstName": "Jane",
    "lastName": "Smith",
    "bio": "Creator & entrepreneur",
    "avatarUrl": "https://cdn.example.com/avatar.jpg",
    "profileVisibility": "public",
    "emailVerified": true,
    "createdAt": "2025-01-15T10:00:00.000Z"
  }
}

Example: Update your profile

bash
curl -X PATCH \
  -H "Authorization: Bearer fm_live_…" \
  -H "Content-Type: application/json" \
  -d '{"firstName":"Jane","bio":"Updated bio"}' \
  https://manus.lineartstudioai.com/api/v1/identity/me

Spaces & Courses

Browse spaces, access course content, and track lesson completion progress.

GET
/api/v1/spaces

List all spaces the member has access to

GET
/api/v1/spaces/:spaceId

Get space details and member status

GET
/api/v1/spaces/:spaceId/modules

List course modules in a space

GET
/api/v1/spaces/:spaceId/lessons

List all lessons in a space

GET
/api/v1/spaces/:spaceId/lessons/:lessonId

Get lesson content and completion status

POST
/api/v1/spaces/:spaceId/lessons/:lessonId/complete

Mark a lesson as complete

DELETE
/api/v1/spaces/:spaceId/lessons/:lessonId/complete

Unmark a lesson as complete

GET
/api/v1/spaces/:spaceId/progress

Get overall course progress percentage

GET
/api/v1/spaces/:spaceId/members

List members in a space

Community

Create and manage posts, comments, reactions, and bookmarks within community spaces.

Posts
GET
/api/v1/spaces/:spaceId/posts

List posts (paginated, filterable)

POST
/api/v1/spaces/:spaceId/posts

Create a new post

GET
/api/v1/spaces/:spaceId/posts/:postId

Get a single post with comments

PATCH
/api/v1/spaces/:spaceId/posts/:postId

Update your own post

DELETE
/api/v1/spaces/:spaceId/posts/:postId

Delete your own post

POST
/api/v1/spaces/:spaceId/posts/:postId/like

Like a post

DELETE
/api/v1/spaces/:spaceId/posts/:postId/like

Unlike a post

Comments
GET
/api/v1/spaces/:spaceId/posts/:postId/comments

List comments on a post

POST
/api/v1/spaces/:spaceId/posts/:postId/comments

Add a comment

PATCH
/api/v1/spaces/:spaceId/posts/:postId/comments/:commentId

Edit your comment

DELETE
/api/v1/spaces/:spaceId/posts/:postId/comments/:commentId

Delete your comment

Reactions & Bookmarks
POST
/api/v1/spaces/:spaceId/posts/:postId/react

Add an emoji reaction to a post

DELETE
/api/v1/spaces/:spaceId/posts/:postId/react

Remove your reaction

GET
/api/v1/bookmarks

List your bookmarked posts

POST
/api/v1/spaces/:spaceId/posts/:postId/bookmark

Bookmark a post

DELETE
/api/v1/spaces/:spaceId/posts/:postId/bookmark

Remove a bookmark

Members
GET
/api/v1/members/:contactId

Get a member's public profile

POST
/api/v1/members/:contactId/follow

Follow a member

DELETE
/api/v1/members/:contactId/follow

Unfollow a member

Example: Create a post

bash
curl -X POST \
  -H "Authorization: Bearer fm_live_…" \
  -H "Content-Type: application/json" \
  -d '{"title":"Hello community!","content":"<p>My first post via API</p>"}' \
  https://manus.lineartstudioai.com/api/v1/spaces/1/posts

Gamification

Access points, badges, levels, and leaderboard data.

GET
/api/v1/spaces/:spaceId/points

Get your points balance in a space

GET
/api/v1/spaces/:spaceId/badges

List your earned badges in a space

GET
/api/v1/spaces/:spaceId/level

Get your current level and XP progress

GET
/api/v1/spaces/:spaceId/leaderboard

Get the top-N leaderboard for a space

GET
/api/v1/leaderboard

Get the global leaderboard

GET
/api/v1/achievements

List all your achievements

Commerce

View your purchases, orders, and available products.

GET
/api/v1/purchases

List all your purchases

GET
/api/v1/orders/:orderId

Get order details

GET
/api/v1/store

List available products in the store

Affiliates

Access your affiliate profile, referrals, commissions, and generate tracking links.

GET
/api/v1/affiliates/me

Get your affiliate profile and stats

GET
/api/v1/affiliates/referrals

List your referrals

GET
/api/v1/affiliates/commissions

List your commissions

GET
/api/v1/affiliates/commissions/summary

Get commission totals by status

POST
/api/v1/affiliates/links

Generate a tracking link for a URL

GET
/api/v1/affiliates/resources

List affiliate marketing resources

Example: Get affiliate stats

bash
curl -H "Authorization: Bearer fm_live_…" \
  https://manus.lineartstudioai.com/api/v1/affiliates/me
json
{
  "data": {
    "affiliateCode": "JANE2025",
    "totalReferrals": 12,
    "totalCommissions": "450.00",
    "pendingCommissions": "75.00",
    "paidCommissions": "375.00"
  }
}

Error Handling

The API uses standard HTTP status codes and returns a consistent JSON error envelope.

json
{
  "error": "UNAUTHORIZED",
  "message": "Missing or malformed Authorization header."
}
StatusCodeMeaning
200Success
400VALIDATION_ERRORInvalid request body or parameters
401UNAUTHORIZEDMissing, invalid, revoked, or expired API key
403FORBIDDENValid key but insufficient permissions
404NOT_FOUNDResource does not exist
429RATE_LIMIT_EXCEEDEDToo many requests — check X-RateLimit-* headers
500INTERNAL_SERVER_ERRORUnexpected server error
503SERVICE_UNAVAILABLEDatabase temporarily unavailable

Integrations

Use the FunnelMates API with popular automation platforms.

Zapier

Use Zapier's Webhooks by Zapier action to call the FunnelMates API from any Zap.

  1. Generate an API key from Account Settings → API Access
  2. In Zapier, add a Webhooks by Zapier action
  3. Set URL to https://manus.lineartstudioai.com/api/v1/identity/me
  4. Add a header: Authorization: Bearer fm_live_…
  5. Set Method to GET (or POST for mutations)
Make (Integromat)

Use the HTTP → Make a Request module to call the FunnelMates API from any Make scenario.

  1. Add an HTTP → Make a Request module
  2. Set URL to https://manus.lineartstudioai.com/api/v1/identity/me
  3. Under Headers, add Authorization with value Bearer fm_live_…
  4. Set Parse response to Yes to get structured data
Python
python
import requests

API_KEY = "fm_live_your_key_here"
BASE_URL = "https://manus.lineartstudioai.com/api/v1"

headers = {"Authorization": f"Bearer {API_KEY}"}

# Get your profile
profile = requests.get(f"{BASE_URL}/identity/me", headers=headers).json()
print(profile["data"]["firstName"])

# List your spaces
spaces = requests.get(f"{BASE_URL}/spaces", headers=headers).json()
for space in spaces["data"]:
    print(space["name"])
JavaScript / Node.js
javascript
const API_KEY = "fm_live_your_key_here";
const BASE_URL = "https://manus.lineartstudioai.com/api/v1";

const headers = { Authorization: `Bearer ${API_KEY}` };

// Get your profile
const res = await fetch(`${BASE_URL}/identity/me`, { headers });
const { data } = await res.json();
console.log(data.firstName);

// Create a post
await fetch(`${BASE_URL}/spaces/1/posts`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({ title: "Hello!", content: "<p>Posted via API</p>" }),
});

Questions? Visit your Account Settings to manage API keys, or contact support.