What are Members?
Members are users who belong to your network. The Members API allows you to list, search, view, and manage member data, profiles, permissions, and roles.
Member Properties
Each member includes:
- Member ID - Unique identifier for the member
- Email - Member’s email address
- Name - First and last name
- Profile Data - Avatar, location, timezone, bio
- Role - Admin, host, or member
- Created At - When they joined the network
- Activity - Engagement metrics and participation
- Custom Fields - Additional profile information
Listing Members
Get all members in your network:
curl https://api.mn.co/admin/v1/networks/{network_id}/members \
-H "Authorization: Bearer YOUR_API_TOKEN"
Use pagination parameters to navigate through large member lists:
curl "https://api.mn.co/admin/v1/networks/{network_id}/members?page=2&per_page=50" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Getting a Specific Member
Retrieve details about a single member by their ID:
curl https://api.mn.co/admin/v1/networks/{network_id}/members/{member_id}/ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Example Response
{
"id": 12345,
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"avatar": "https://cdn.mn.co/avatars/12345.jpg",
"location": "San Francisco, CA",
"time_zone": "America/Los_Angeles",
"permalink": "https://yournetwork.mn.co/members/12345",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-03-20T14:22:00Z"
}
Member Roles
Members can have different roles within your network:
Role Types
- Admin - Full network management access, can manage all settings and content
- Host - Can manage specific spaces and moderate content
- Member - Standard network access with basic permissions
- Guest - Limited access to specific content (if enabled)
Updating Member Roles
Change a member’s role in the network:
curl -X PATCH https://api.mn.co/admin/v1/networks/{network_id}/members/{member_id}/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"role": "host"}'
Space Membership
Members can belong to specific spaces within your network.
Listing Members in a Space
Get members of a specific space:
curl https://api.mn.co/admin/v1/networks/{network_id}/spaces/{space_id}/members \
-H "Authorization: Bearer YOUR_API_TOKEN"
Getting Space Member Details
Get a specific member’s details within a space:
curl https://api.mn.co/admin/v1/networks/{network_id}/spaces/{space_id}/members/{user_id}/ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Banning Members
Ban a user from the network:
curl -X POST https://api.mn.co/admin/v1/networks/{network_id}/spaces/{space_id}/members/{user_id}/ban \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ban_reason": "Spam"}'
Banning a member removes them from the network and prevents them from rejoining.
Common Use Cases
Member Search
Search for members by email or name:
async function findMemberByEmail(networkId, email, apiToken) {
const response = await fetch(
`https://api.mn.co/admin/v1/networks/${networkId}/members`,
{ headers: { 'Authorization': `Bearer ${apiToken}` } }
);
const members = await response.json();
return members.items.find(m =>
m.email.toLowerCase() === email.toLowerCase()
);
}
Member Activity Report
Generate a report of member activity:
async function generateMemberReport(networkId, apiToken) {
let allMembers = [];
let page = 1;
let hasMore = true;
while (hasMore) {
const response = await fetch(
`https://api.mn.co/admin/v1/networks/${networkId}/members?page=${page}&per_page=100`,
{ headers: { 'Authorization': `Bearer ${apiToken}` } }
);
const data = await response.json();
allMembers = allMembers.concat(data.items);
hasMore = data.links?.next != null;
page++;
}
return {
totalMembers: allMembers.length,
recentJoins: allMembers.filter(m => {
const joinDate = new Date(m.created_at);
const daysAgo = (Date.now() - joinDate) / (1000 * 60 * 60 * 24);
return daysAgo <= 30;
}).length
};
}
Bulk Role Updates
Update roles for multiple members:
async function promoteToHosts(networkId, memberIds, apiToken) {
const results = [];
for (const memberId of memberIds) {
try {
const response = await fetch(
`https://api.mn.co/admin/v1/networks/${networkId}/members/${memberId}/`,
{
method: 'PATCH',
headers: {
'Authorization': `Bearer ${apiToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ role: 'host' })
}
);
if (response.ok) {
results.push({ memberId, success: true });
}
} catch (error) {
results.push({ memberId, success: false, error: error.message });
}
// Rate limiting: wait between requests
await new Promise(resolve => setTimeout(resolve, 100));
}
return results;
}
CRM Integration
Sync member data with external CRM:
async function syncToCRM(networkId, apiToken, crmEndpoint) {
const response = await fetch(
`https://api.mn.co/admin/v1/networks/${networkId}/members`,
{ headers: { 'Authorization': `Bearer ${apiToken}` } }
);
const members = await response.json();
for (const member of members.items) {
await fetch(crmEndpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: member.email,
firstName: member.first_name,
lastName: member.last_name,
source: 'Mighty Networks',
customFields: {
mightyNetworksId: member.id,
joinDate: member.created_at
}
})
});
}
}
Best Practices
- Use Pagination - Always paginate through member lists to avoid timeouts
- Respect Rate Limits - Add delays when performing bulk operations
- Cache Member Data - Store frequently accessed member data locally
- Validate Permissions - Ensure your API token has the necessary member scopes
- Handle Errors Gracefully - Check for 404 errors when accessing specific members
- Protect Privacy - Never expose sensitive member data publicly
Next Steps