FunnelMates Member API
A REST API that gives members programmatic access to their FunnelMates account — profile, spaces, community, gamification, commerce, and affiliates.
https://manus.lineartstudioai.com/api/v1Bearer fm_live_…60/min · 1k/hr · 10k/dayAuthentication
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.
curl -H "Authorization: Bearer fm_live_your_api_key_here" \
https://manus.lineartstudioai.com/api/v1/identity/meKey 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)
curl https://manus.lineartstudioai.com/api/v1/health{ "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.
| Window | Limit | Header |
|---|---|---|
| Per minute | 60 requests | X-RateLimit-Limit-Minute |
| Per hour | 1,000 requests | X-RateLimit-Limit-Hour |
| Per day | 10,000 requests | X-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.
/api/v1/identity/meGet authenticated member profile
/api/v1/identity/meUpdate profile fields (name, bio, avatar, visibility)
/api/v1/identity/me/spacesList all spaces the member has access to
/api/v1/identity/me/access-grantsList all active access grants
/api/v1/identity/me/followersList members following you
/api/v1/identity/me/followingList members you are following
/api/v1/identity/follow/:contactIdFollow another member
/api/v1/identity/follow/:contactIdUnfollow a member
Example: Get your profile
curl -H "Authorization: Bearer fm_live_…" \
https://manus.lineartstudioai.com/api/v1/identity/me{
"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
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/meSpaces & Courses
Browse spaces, access course content, and track lesson completion progress.
/api/v1/spacesList all spaces the member has access to
/api/v1/spaces/:spaceIdGet space details and member status
/api/v1/spaces/:spaceId/modulesList course modules in a space
/api/v1/spaces/:spaceId/lessonsList all lessons in a space
/api/v1/spaces/:spaceId/lessons/:lessonIdGet lesson content and completion status
/api/v1/spaces/:spaceId/lessons/:lessonId/completeMark a lesson as complete
/api/v1/spaces/:spaceId/lessons/:lessonId/completeUnmark a lesson as complete
/api/v1/spaces/:spaceId/progressGet overall course progress percentage
/api/v1/spaces/:spaceId/membersList members in a space
Community
Create and manage posts, comments, reactions, and bookmarks within community spaces.
/api/v1/spaces/:spaceId/postsList posts (paginated, filterable)
/api/v1/spaces/:spaceId/postsCreate a new post
/api/v1/spaces/:spaceId/posts/:postIdGet a single post with comments
/api/v1/spaces/:spaceId/posts/:postIdUpdate your own post
/api/v1/spaces/:spaceId/posts/:postIdDelete your own post
/api/v1/spaces/:spaceId/posts/:postId/likeLike a post
/api/v1/spaces/:spaceId/posts/:postId/likeUnlike a post
/api/v1/spaces/:spaceId/posts/:postId/commentsList comments on a post
/api/v1/spaces/:spaceId/posts/:postId/commentsAdd a comment
/api/v1/spaces/:spaceId/posts/:postId/comments/:commentIdEdit your comment
/api/v1/spaces/:spaceId/posts/:postId/comments/:commentIdDelete your comment
/api/v1/spaces/:spaceId/posts/:postId/reactAdd an emoji reaction to a post
/api/v1/spaces/:spaceId/posts/:postId/reactRemove your reaction
/api/v1/bookmarksList your bookmarked posts
/api/v1/spaces/:spaceId/posts/:postId/bookmarkBookmark a post
/api/v1/spaces/:spaceId/posts/:postId/bookmarkRemove a bookmark
/api/v1/members/:contactIdGet a member's public profile
/api/v1/members/:contactId/followFollow a member
/api/v1/members/:contactId/followUnfollow a member
Example: Create a post
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/postsGamification
Access points, badges, levels, and leaderboard data.
/api/v1/spaces/:spaceId/pointsGet your points balance in a space
/api/v1/spaces/:spaceId/badgesList your earned badges in a space
/api/v1/spaces/:spaceId/levelGet your current level and XP progress
/api/v1/spaces/:spaceId/leaderboardGet the top-N leaderboard for a space
/api/v1/leaderboardGet the global leaderboard
/api/v1/achievementsList all your achievements
Commerce
View your purchases, orders, and available products.
/api/v1/purchasesList all your purchases
/api/v1/orders/:orderIdGet order details
/api/v1/storeList available products in the store
Affiliates
Access your affiliate profile, referrals, commissions, and generate tracking links.
/api/v1/affiliates/meGet your affiliate profile and stats
/api/v1/affiliates/referralsList your referrals
/api/v1/affiliates/commissionsList your commissions
/api/v1/affiliates/commissions/summaryGet commission totals by status
/api/v1/affiliates/linksGenerate a tracking link for a URL
/api/v1/affiliates/resourcesList affiliate marketing resources
Example: Get affiliate stats
curl -H "Authorization: Bearer fm_live_…" \
https://manus.lineartstudioai.com/api/v1/affiliates/me{
"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.
{
"error": "UNAUTHORIZED",
"message": "Missing or malformed Authorization header."
}| Status | Code | Meaning |
|---|---|---|
| 200 | — | Success |
| 400 | VALIDATION_ERROR | Invalid request body or parameters |
| 401 | UNAUTHORIZED | Missing, invalid, revoked, or expired API key |
| 403 | FORBIDDEN | Valid key but insufficient permissions |
| 404 | NOT_FOUND | Resource does not exist |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests — check X-RateLimit-* headers |
| 500 | INTERNAL_SERVER_ERROR | Unexpected server error |
| 503 | SERVICE_UNAVAILABLE | Database temporarily unavailable |
Integrations
Use the FunnelMates API with popular automation platforms.
Use Zapier's Webhooks by Zapier action to call the FunnelMates API from any Zap.
- Generate an API key from Account Settings → API Access
- In Zapier, add a Webhooks by Zapier action
- Set URL to
https://manus.lineartstudioai.com/api/v1/identity/me - Add a header:
Authorization: Bearer fm_live_… - Set Method to GET (or POST for mutations)
Use the HTTP → Make a Request module to call the FunnelMates API from any Make scenario.
- Add an HTTP → Make a Request module
- Set URL to
https://manus.lineartstudioai.com/api/v1/identity/me - Under Headers, add
Authorizationwith valueBearer fm_live_… - Set Parse response to Yes to get structured data
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"])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.