On this page:
- Creating member profiles with the API
- Obtaining the access token
- Sending your request
- Request fields
- Request examples
- API responses
Creating member profiles with the API
The MC Professional API profile request allows third-party clients to create new member profiles in MC Professional. For example, you might want to transfer all of your event attendee information from Registration Tech into member profiles in your MC Professional account. This endpoint lets you automate that process.
The type of member profile you create depends on the information you send in the API request. You can create the following profile types:
- Prospect profiles
- Custom member type profiles
- Organization profiles
- Member profiles linked to organization member types (linked profiles)
- Profiles belonging to multiple groups
Important note: The API does not support creating ASA or admin member profiles (those belonging to the Admin group type or group types with admin permissions).
Continue reading for detailed information on:
- How to obtain an access token
- How to format your request
- A complete list of request fields for filling out profile attributes
- Example requests for specific member types
- Examples of specific API responses, such as success and error messages
Obtaining the access token
In your MC Professional account, you must create an API client and ensure the following settings are selected:
- Scope: The access token must have the Write scope.
- Permissions: This resource is only available to administrators. Under Groups, ensure that a group with full administrative access is selected, such as the default Admin group.
Use the Client ID and Secret generated in MC Professional to retrieve the access token for your API request.
Sending your request
To create a profile, send an HTTP POST request to the /api/v1/profile endpoint.
Request format
POST /api/v1/profile HTTP/1.1
Host: <orgId>.memberclicks.net
Accept: application/json
Authorization: Bearer <accessToken>
Cache-Control: no-cache
-
orgId: Your MC Professional organization ID. -
accessToken: The access token provided by the authorization server.
Request fields
To create member profiles and fill out their attributes, you can include the following fields (profile attributes) in the request body.
Important note: The API does not support creating ASA or admin member profiles (those with the Admin group type or group types with admin permissions). Furthermore, the Email field is mandatory and must be included in the request body for all API requests to create member profiles.
Attribute
|
Data type and formatting example
|
Description
|
Requirement
|
|
[Email] |
String "example@gmail.com" |
The email address used for the member profile. This field must be formatted correctly and included in each request ("youraddress@emailclient.com"). |
Required |
|
[Name | Prefix] |
String "Mr." |
The member’s name prefix. |
Not-required |
|
[Name | First] |
String "Gary" |
The first name of the member. |
Not-required |
|
[Name | Middle] |
String "Charles" |
The middle name of the member. |
Not-required |
|
[Name | Last] |
String "Green" |
The last name of the member. |
Not-required |
|
[Name | Suffix] |
String "Jr." |
The member’s name suffix. |
Not-required |
|
[Username] |
String "GaryGreen01" |
The member’s username (used for login). Defaults to the member’s email address if not provided. |
Not-required |
|
[Member Type] |
String "Full" |
The member type. Defaults to Prospect if not provided. Member types with admin permissions are not supported and will return an error. |
Not-required |
|
[Member Status] |
String “Active" |
A valid member status. Defaults to Active if not provided. |
Not-required |
|
[Groups] |
Array of strings "Full-time", "Swimmer", "Runner" |
An array of group names. Defaults to the group of the selected member type. Groups with admin permissions are not supported and will return an error. |
Not-required |
|
[Join Date] |
String "01/01/2025" |
The join date. Must be in |
Not-required |
|
[Expiration Date] |
String "01/01/225" |
The expiration date. Must be in |
Not-required |
|
[Last Renewal Date] |
String "01/01/2025" |
The last renewal date. Must be in |
Not-required |
|
[Organization Name] |
String "MemberClicks U" |
The organization's name. |
Required for Organization member types. |
|
[Linked Organization Id] |
Integer 2060721341 |
The ID of the linked organization. |
Required for Linked member types. |
Request examples
POST /api/v1/profile HTTP/1.1
Host: apiexample.memberclicks.net
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NjgzNTE5NzcsInVzZXJfbmFtZSI6IjEwMDEzNDU2MzAiLCJzY29wZSI6WyJyZWFkIl0sInNlcnZpY2VJZCI6NzM0MCwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiIsIlJPTEVfRklOQU5DSUFMX0FETUlOIiwiUk9MRV9VU0VSIiwiUk9MRV9DTVNfQURNSU4iLCJST0xFX1BST0ZJTEVfSU1QT1JUX0FETUlOIiwiUk9MRV9QUk9GSUxFX0FETUlOIiwiUk9MRV9DT01NVU5JVFlfQURNSU4iLCJST0xFX01FTUJFUlNISVBfQURNSU4iLCJST0xFX0ZPUk1TX0FETUlOIiwiUk9MRV9SRVBPUlRJTkdfQURNSU4iXSwidXNlcklkIjoxMDAxMzQ1NjMwLCJqdGkiOiJkZDkwM2YwNC03Y2FjLTQyMDctOTY3Zi1jOTg2MmY1NDI5ZWYiLCJjbGllbnRfaWQiOiI4WmdaeFY5QjhyZHdWWEo4bHp1aCJ9.CyE4PPH9ZH9uvPSoUFRDZh6pO7VjAkF0MZ9IBcCRaxk
Cache-Control: no-cache
{
"[Member Type]": "Member",
"[Name | Prefix]": "Mrs.",
"[Name | First]": "First01",
"[Name | Middle]": "D",
"[Name | Last]": "Last01",
"[Name | Suffix]": "Jr.",
"[Email]": "test@gmail.com",
"[Username]": "thisiscreatedviaAPIv7"
}
The examples below demonstrate requests for specific types of member profiles.
Prospect profile
{
"[Name | First]": "Prospect",
"[Name | Last]": "Profile",
"[Email]": "testprospect@gmail.com",
"[Username]": "ThisIsProspectProfile"
}
Custom member type profile
{
"[Member Type]": "Custom Member Type",
"[Name | First]": "Custom Member Type",
"[Name | Last]": "Profile",
"[Email]": "testcustommembertype@gmail.com",
"[Username]": "ThisIsCustomMemberTypeProfile"
}
Profile belonging to multiple groups
{
"[Member Type]": "Member",
"[Groups]": ["Group01", "Group02"],
"[Name | First]": "Multiple Groups",
"[Name | Last]": "Profile",
"[Email]": "testmultiplegroupsprofile@gmail.com",
"[Username]": "ThisIsMultipleGroupsProfile"
}
Organization profile
{
"[Member Type]": "Organization Member Type",
"[Email]": "testorganizationprofile@gmail.com",
"[Organization Name]": "ThisIsOrganizationProfile"
}
Profile linked to an organization profile
{
"[Member Type]": "Member",
"[Name | First]": "Linked Organization",
"[Name | Last]": "Profile",
"[Email]": "testlinkedorganization@gmail.com",
"[Username]": "ThisIsLinkedOrganizationProfile",
"[Linked Organization Id]": 2060721341
}
API responses
The API returns different responses for successful and failed requests. You can use these responses to troubleshoot and correct your API requests. The body of error messages will explain why the request failed. See below for examples of a successful request and some of the most common examples of failed requests.
Success message
A successful request will return an HTTP status 201 Created with a response body containing the new profile's details. The response will include the unique id of the newly created profile.
HTTP/1.1 201 Created
{
"timestamp": 1755884637513,
"status": 201,
"message": "Created",
"id": 23012,
"url": "",
"item": null
}
Error messages
An unsuccessful request will return an HTTP status code indicating the error. See below for some common error responses.
Payload malformation (e.g., incorrect field types)
{
"timestamp": 1756409498132,
"status": 400,
"error": "Bad Request",
"message": "Failed body validation",
"messageDetails": [
{
"field": "Request Data",
"message": "Cannot construct instance of `java.util.ArrayList`: no String-argument constructor/factory method to deserialize from String value ('Test')"
}
],
"path": "http://jpim-test.localhost:8080/api/v1/profile",
"parameters": {}
}
Missing required fields (e.g., email)
{
"timestamp": 1756409875351,
"status": 400,
"error": "Bad Request",
"message": "Failed field validation",
"messageDetails": [
{
"field": "email",
"message": "must not be empty"
}
],
"path": "http://jpim-test.localhost:8080/api/v1/profile",
"parameters": {}
}
Other errors (e.g., invalid data)
Username already in use
{
"timestamp": 1756409309567,
"status": 400,
"error": "Bad Request",
"message": "Error creating profile",
"messageDetails": [
{
"field": "[Username]",
"message": "Username is already in use"
}
],
"path": "/api/v1/profile",
"parameters": {}
}
Member type contains admin permissions
{
"timestamp": 1756409370643,
"status": 400,
"error": "Bad Request",
"message": "Error creating profile",
"messageDetails": [
{
"field": "[Member Type]",
"message": "MemberType ID is invalid. You cannot create a profile with a member type that has admin permissions."
}
],
"path": "/api/v1/profile",
"parameters": {}
}
Member groups contain admin permissions
{
"timestamp": 1756409429453,
"status": 400,
"error": "Bad Request",
"message": "Error creating profile",
"messageDetails": [
{
"field": "[Group]",
"message": "This group has admin permissions and cannot be added to a profile."
}
],
"path": "/api/v1/profile",
"parameters": {}
}