RESTful JSON API with scoped API keys, rate limiting, and full coverage of chat, members, content, courses, events, and more.
Authenticate every request by including your API key in the X-Api-Key header. Create keys from Admin → Developer API in your community dashboard.
# Include your API key in every request
curl -X GET https://api.memberpad.com/dev/v1/members \
-H "X-Api-Key: sk_live_your_api_key_here" \
-H "Content-Type: application/json"https://api.memberpad.com/dev/v1All endpoints are relative to this base URL. HTTPS is required — HTTP requests are rejected.
The API uses standard HTTP status codes. Error responses include a JSON body with error and message fields.
| Status | Code | Description |
|---|---|---|
| 400 | bad_request | Invalid request body or parameters |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks the required scope |
| 404 | not_found | Resource does not exist or belongs to another community |
| 429 | rate_limited | Too many requests — check X-RateLimit-Remaining header |
| 500 | server_error | Internal server error |
{
"error": "forbidden",
"message": "API key lacks required scope: chat:write"
}| Limit | Description | |
|---|---|---|
| 100/min | Overall requests per API key per minute | |
| 30/min | Write operations (POST, PUT, DELETE) per key per minute | |
| 10/sec | Burst limit — max requests per second |
Check X-RateLimit-Remaining in response headers to monitor your budget. On 429, use the retryAfter field (seconds) before retrying.
Post messages to chat rooms from bots and external systems. Messages appear in real-time with a bot indicator badge.
List all chat rooms in your community.
{
"rooms": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "General",
"description": "General discussion",
"memberCount": 142
}
]
}Post a message to a chat room. Supports plain text, HTML, and structured card format. Messages are delivered in real-time via WebSocket.
| Field | Type | Description |
|---|---|---|
| content | string | required The message text |
| format | string | optional"text", "html", or "card" (default: "text") |
| card | object | optional Structured card for rich displays (when format is "card") |
| card.title | string | Card heading |
| card.fields | array | Array of {label, value} pairs |
| card.color | string | Hex color for the card accent (e.g. "#22c55e") |
{
"content": "Hello from my trading bot!"
}{
"content": "BUY Signal - AAPL",
"format": "card",
"card": {
"title": "BUY Signal - AAPL",
"fields": [
{ "label": "Entry", "value": "$185.20" },
{ "label": "Target", "value": "$192.00 (+3.7%)" },
{ "label": "Stop Loss", "value": "$181.50 (-2.0%)" }
],
"color": "#22c55e"
}
}{
"success": true,
"message": {
"id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"roomId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"content": "BUY Signal - AAPL",
"createdAt": "2026-03-28T14:30:00Z",
"isBot": true,
"botName": "Trading Bot"
}
}Retrieve recent messages from a chat room.
| Param | Type | Description |
|---|---|---|
| limit | integer | optional Number of messages, 1-100 (default 50) |
| before | string | optional ISO 8601 timestamp for cursor-based pagination (returns messages before this time) |
Delete a message posted by this API key. Only messages created by the same key can be deleted.
Read member data for CRM sync, analytics, or external dashboards. Invite new members programmatically.
List community members with pagination and search.
| Param | Type | Description |
|---|---|---|
| page | integer | optional Page number (default 1) |
| pageSize | integer | optional Items per page, 1-100 (default 25) |
| search | string | optional Search by name or email |
{
"members": [
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"displayName": "Jane Smith",
"email": "jane@example.com",
"role": "PaidMember",
"planName": "Pro Monthly",
"joinedAt": "2026-01-15T10:00:00Z",
"avatarUrl": "https://cdn.memberpad.com/avatars/..."
}
],
"totalCount": 1432,
"page": 1,
"pageSize": 25
}Get a single member's profile and subscription details.
Send an invitation email to join your community.
{
"email": "newmember@example.com",
"name": "New Member",
"message": "Welcome! Join our community."
}Create and manage community posts from external content systems, AI pipelines, or RSS feeds.
List published posts with pagination.
| Param | Type | Description |
|---|---|---|
| page | integer | optional Page number (default 1) |
| pageSize | integer | optional Items per page, 1-50 (default 20) |
Create a new community post.
| Field | Type | Description |
|---|---|---|
| title | string | required Post title |
| htmlBody | string | required HTML content |
| isPublished | boolean | optional Publish immediately (default false) |
| accessLevel | string | optional"all" or "paid" (default "all") |
{
"title": "Weekly Market Recap",
"htmlBody": "<p>This week the S&P 500 rallied...</p>",
"isPublished": true,
"accessLevel": "paid"
}Update an existing post. Only include the fields you want to change.
Read course data and track member progress from external learning systems.
List all courses with lesson counts and enrollment data.
Get a member's progress in a specific course, including completed lessons and overall percentage.
{
"courseId": "...",
"memberId": "...",
"totalLessons": 24,
"completedLessons": 18,
"progressPercent": 75,
"completedAt": null
}Mark a lesson as completed for a member. Triggers certificate generation if the course is now fully complete.
{ "memberId": "b2c3d4e5-f6a7-8901-bcde-f12345678901" }Create and manage community events from external calendar or scheduling systems.
List upcoming and past community events.
Create a new event.
| Field | Type | Description |
|---|---|---|
| title | string | required Event title |
| description | string | optional Event description (HTML supported) |
| startsAt | string | required ISO 8601 date-time |
| endsAt | string | optional ISO 8601 date-time |
| location | string | optional Location or meeting URL |
| accessLevel | string | optional"all" or "paid" |
{
"title": "Live Trading Session",
"description": "Join us for live market analysis.",
"startsAt": "2026-04-15T14:00:00Z",
"endsAt": "2026-04-15T15:30:00Z",
"location": "https://zoom.us/j/123456789",
"accessLevel": "paid"
}Update an existing event. Only include the fields you want to change.
Post stock picks and trade alerts from automated trading systems.
List all stock pick lists in your community.
Get paginated stock picks for a specific list.
| Field | Type | Description |
|---|---|---|
| page | int | optional Page number (default 1) |
| pageSize | int | optional Items per page, 1–100 (default 50) |
{
"totalCount": 12,
"page": 1,
"pageSize": 50,
"picks": [
{
"id": "...",
"ticker": "AAPL",
"action": "BUY",
"entryPrice": 185.20,
"targetPrice": 192.00,
"stopLoss": 181.50,
"notes": "Strong support at 184",
"createdAt": "2026-03-29T..."
}
]
}Add a new stock pick to a list.
| Field | Type | Description |
|---|---|---|
| ticker | string | required Stock symbol (e.g. "AAPL") |
| action | string | required"BUY" or "SELL" |
| entryPrice | number | optional Entry price |
| targetPrice | number | optional Target price |
| stopLoss | number | optional Stop loss price |
| notes | string | optional Analysis or reasoning |
{
"ticker": "AAPL",
"action": "BUY",
"entryPrice": 185.20,
"targetPrice": 192.00,
"stopLoss": 181.50,
"notes": "Strong support at 184, earnings catalyst next week"
}Read-only access to subscription and payment data for external dashboards and accounting.
List active subscriptions with plan details and revenue.
List payment transactions with amounts, dates, and status.
Read product catalog and purchase data.
List digital products with pricing and purchase counts.
List purchases for a specific product with buyer details and timestamps.