Skip to main content

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"

Pagination

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

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

  1. Use Pagination - Always paginate through member lists to avoid timeouts
  2. Respect Rate Limits - Add delays when performing bulk operations
  3. Cache Member Data - Store frequently accessed member data locally
  4. Validate Permissions - Ensure your API token has the necessary member scopes
  5. Handle Errors Gracefully - Check for 404 errors when accessing specific members
  6. Protect Privacy - Never expose sensitive member data publicly

Next Steps