curl --request POST \
--url https://int-api.mx.com/users/{user_guid}/members \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"client_redirect_url": "https://{yoursite.com}",
"enable_app2app": false,
"referral_source": "APP",
"ui_message_webview_url_scheme": "<string>"
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/members"
payload = {
"client_redirect_url": "https://{yoursite.com}",
"enable_app2app": False,
"referral_source": "APP",
"ui_message_webview_url_scheme": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_redirect_url: 'https://{yoursite.com}',
enable_app2app: false,
referral_source: 'APP',
ui_message_webview_url_scheme: '<string>'
})
};
fetch('https://int-api.mx.com/users/{user_guid}/members', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://int-api.mx.com/users/{user_guid}/members",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'client_redirect_url' => 'https://{yoursite.com}',
'enable_app2app' => false,
'referral_source' => 'APP',
'ui_message_webview_url_scheme' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://int-api.mx.com/users/{user_guid}/members"
payload := strings.NewReader("{\n \"client_redirect_url\": \"https://{yoursite.com}\",\n \"enable_app2app\": false,\n \"referral_source\": \"APP\",\n \"ui_message_webview_url_scheme\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://int-api.mx.com/users/{user_guid}/members")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"client_redirect_url\": \"https://{yoursite.com}\",\n \"enable_app2app\": false,\n \"referral_source\": \"APP\",\n \"ui_message_webview_url_scheme\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_redirect_url\": \"https://{yoursite.com}\",\n \"enable_app2app\": false,\n \"referral_source\": \"APP\",\n \"ui_message_webview_url_scheme\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"member": {
"aggregated_at": "2016-10-13T18:07:57.000Z",
"background_aggregation_is_disabled": false,
"connection_status": "CONNECTED",
"connection_status_message": "Connected to MX Bank",
"error": {
"error_type": "MEMBER",
"error_code": "NO_VERIFIABLE_ACCOUNTS",
"error_message": "This Member has no eligible checking, savings, or money market accounts.",
"user_message": "We couldn't find any accounts eligible for transfers. Please link a checking or savings account.",
"locale": "en"
},
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"id": "unique_id",
"institution_code": "mxbank",
"institution_guid": "INST-12345678-90ab-cdef-1234-567890abcdef",
"is_being_aggregated": false,
"is_managed_by_user": false,
"is_manual": false,
"is_oauth": false,
"metadata": "\\\"credentials_last_refreshed_at\\\": \\\"2015-10-15\\",
"most_recent_job_detail_code": null,
"most_recent_job_detail_text": null,
"most_recent_job_guid": "JOB-12345678-90ab-cdef-1234-567890abcdef",
"name": "MX Bank",
"needs_updated_credentials": false,
"oauth_window_uri": "https://mxbank.mx.com/oauth/authorize?client_id=b8OikQ4Ep3NuSUrQ13DdvFuwpNx-qqoAsJDVAQCyLkQ&redirect_uri=https%3A%2F%2Fint-app.moneydesktop.com%2Foauth%2Fredirect_from&response_type=code&scope=openid&state=d745bd4ee6f0f9c184757f574bcc2df2",
"successfully_aggregated_at": "2016-10-13T17:57:38.000Z",
"use_cases": [
"PFM"
],
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54",
"user_id": "user123"
}
}{
"member": {
"aggregated_at": "2016-10-13T18:07:57.000Z",
"background_aggregation_is_disabled": false,
"connection_status": "CONNECTED",
"connection_status_message": "Connected to MX Bank",
"error": {
"error_type": "MEMBER",
"error_code": "NO_VERIFIABLE_ACCOUNTS",
"error_message": "This Member has no eligible checking, savings, or money market accounts.",
"user_message": "We couldn't find any accounts eligible for transfers. Please link a checking or savings account.",
"locale": "en"
},
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"id": "unique_id",
"institution_code": "mxbank",
"institution_guid": "INST-12345678-90ab-cdef-1234-567890abcdef",
"is_being_aggregated": false,
"is_managed_by_user": false,
"is_manual": false,
"is_oauth": false,
"metadata": "\\\"credentials_last_refreshed_at\\\": \\\"2015-10-15\\",
"most_recent_job_detail_code": null,
"most_recent_job_detail_text": null,
"most_recent_job_guid": "JOB-12345678-90ab-cdef-1234-567890abcdef",
"name": "MX Bank",
"needs_updated_credentials": false,
"oauth_window_uri": "https://mxbank.mx.com/oauth/authorize?client_id=b8OikQ4Ep3NuSUrQ13DdvFuwpNx-qqoAsJDVAQCyLkQ&redirect_uri=https%3A%2F%2Fint-app.moneydesktop.com%2Foauth%2Fredirect_from&response_type=code&scope=openid&state=d745bd4ee6f0f9c184757f574bcc2df2",
"successfully_aggregated_at": "2016-10-13T17:57:38.000Z",
"use_cases": [
"PFM"
],
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54",
"user_id": "user123"
}
}Create member
This endpoint allows you to create a new member. Members are created with the required parameters credentials and institution_code, and the optional parameters id and metadata. When creating a member, youll need to include the correct type of credential required by the financial institution and provided by the user. You can find out which credential type is required with the /institutions/{institution_code}/credentials endpoint. If successful, the MX Platform API will respond with the newly-created member object. Once you successfully create a member, MX will immediately validate the provided credentials and attempt to aggregate data for accounts and transactions.
curl --request POST \
--url https://int-api.mx.com/users/{user_guid}/members \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"client_redirect_url": "https://{yoursite.com}",
"enable_app2app": false,
"referral_source": "APP",
"ui_message_webview_url_scheme": "<string>"
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/members"
payload = {
"client_redirect_url": "https://{yoursite.com}",
"enable_app2app": False,
"referral_source": "APP",
"ui_message_webview_url_scheme": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_redirect_url: 'https://{yoursite.com}',
enable_app2app: false,
referral_source: 'APP',
ui_message_webview_url_scheme: '<string>'
})
};
fetch('https://int-api.mx.com/users/{user_guid}/members', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://int-api.mx.com/users/{user_guid}/members",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'client_redirect_url' => 'https://{yoursite.com}',
'enable_app2app' => false,
'referral_source' => 'APP',
'ui_message_webview_url_scheme' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://int-api.mx.com/users/{user_guid}/members"
payload := strings.NewReader("{\n \"client_redirect_url\": \"https://{yoursite.com}\",\n \"enable_app2app\": false,\n \"referral_source\": \"APP\",\n \"ui_message_webview_url_scheme\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://int-api.mx.com/users/{user_guid}/members")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"client_redirect_url\": \"https://{yoursite.com}\",\n \"enable_app2app\": false,\n \"referral_source\": \"APP\",\n \"ui_message_webview_url_scheme\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_redirect_url\": \"https://{yoursite.com}\",\n \"enable_app2app\": false,\n \"referral_source\": \"APP\",\n \"ui_message_webview_url_scheme\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"member": {
"aggregated_at": "2016-10-13T18:07:57.000Z",
"background_aggregation_is_disabled": false,
"connection_status": "CONNECTED",
"connection_status_message": "Connected to MX Bank",
"error": {
"error_type": "MEMBER",
"error_code": "NO_VERIFIABLE_ACCOUNTS",
"error_message": "This Member has no eligible checking, savings, or money market accounts.",
"user_message": "We couldn't find any accounts eligible for transfers. Please link a checking or savings account.",
"locale": "en"
},
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"id": "unique_id",
"institution_code": "mxbank",
"institution_guid": "INST-12345678-90ab-cdef-1234-567890abcdef",
"is_being_aggregated": false,
"is_managed_by_user": false,
"is_manual": false,
"is_oauth": false,
"metadata": "\\\"credentials_last_refreshed_at\\\": \\\"2015-10-15\\",
"most_recent_job_detail_code": null,
"most_recent_job_detail_text": null,
"most_recent_job_guid": "JOB-12345678-90ab-cdef-1234-567890abcdef",
"name": "MX Bank",
"needs_updated_credentials": false,
"oauth_window_uri": "https://mxbank.mx.com/oauth/authorize?client_id=b8OikQ4Ep3NuSUrQ13DdvFuwpNx-qqoAsJDVAQCyLkQ&redirect_uri=https%3A%2F%2Fint-app.moneydesktop.com%2Foauth%2Fredirect_from&response_type=code&scope=openid&state=d745bd4ee6f0f9c184757f574bcc2df2",
"successfully_aggregated_at": "2016-10-13T17:57:38.000Z",
"use_cases": [
"PFM"
],
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54",
"user_id": "user123"
}
}{
"member": {
"aggregated_at": "2016-10-13T18:07:57.000Z",
"background_aggregation_is_disabled": false,
"connection_status": "CONNECTED",
"connection_status_message": "Connected to MX Bank",
"error": {
"error_type": "MEMBER",
"error_code": "NO_VERIFIABLE_ACCOUNTS",
"error_message": "This Member has no eligible checking, savings, or money market accounts.",
"user_message": "We couldn't find any accounts eligible for transfers. Please link a checking or savings account.",
"locale": "en"
},
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"id": "unique_id",
"institution_code": "mxbank",
"institution_guid": "INST-12345678-90ab-cdef-1234-567890abcdef",
"is_being_aggregated": false,
"is_managed_by_user": false,
"is_manual": false,
"is_oauth": false,
"metadata": "\\\"credentials_last_refreshed_at\\\": \\\"2015-10-15\\",
"most_recent_job_detail_code": null,
"most_recent_job_detail_text": null,
"most_recent_job_guid": "JOB-12345678-90ab-cdef-1234-567890abcdef",
"name": "MX Bank",
"needs_updated_credentials": false,
"oauth_window_uri": "https://mxbank.mx.com/oauth/authorize?client_id=b8OikQ4Ep3NuSUrQ13DdvFuwpNx-qqoAsJDVAQCyLkQ&redirect_uri=https%3A%2F%2Fint-app.moneydesktop.com%2Foauth%2Fredirect_from&response_type=code&scope=openid&state=d745bd4ee6f0f9c184757f574bcc2df2",
"successfully_aggregated_at": "2016-10-13T17:57:38.000Z",
"use_cases": [
"PFM"
],
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54",
"user_id": "user123"
}
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Headers
The base64 encoded string defined in this header will be returned in the Member and Member Data Updated webhooks. This allows you to trace user interactions and workflows initiated externally and internally in the MX Platform. Max 1024 characters.
Path Parameters
The unique identifier for a user, beginning with the prefix USR-.
Body
Member object to be created with optional parameters (id and metadata) and required parameters (credentials and institution_code)
"https://{yoursite.com}"
This indicates whether OAuth app2app behavior is enabled for institutions that support it. Defaults to true. When set to false, any oauth_window_uri generated will not direct the end user to the institution's mobile application. This setting is not persistent. This setting currently only affects Chase institutions.
false
Hide child attributes
Hide child attributes
"mxbank"
false
"unique_id"
false
"\\\"credentials_last_refreshed_at\\\": \\\"2015-10-15\\"
false
The use case associated with the member. Valid values are PFM and/or MONEY_MOVEMENT. Only set this if you've met with MX and have opted in to using this field.
MONEY_MOVEMENT, PFM ["PFM"]
"APP"
Response
OK
Hide child attributes
Hide child attributes
"2016-10-13T18:07:57.000Z"
false
"CONNECTED"
"Connected to MX Bank"
Details about why the member's most recent aggregation failed. This is null unless the aggregation failed for one of the reasons in Member Connection Errors.
Hide child attributes
Hide child attributes
The category of the error.
"MEMBER"
The code that identifies the error.
"NO_VERIFIABLE_ACCOUNTS"
A description of the error for logging and troubleshooting.
"This Member has no eligible checking, savings, or money market accounts."
A message you can display to the end user.
"We couldn't find any accounts eligible for transfers. Please link a checking or savings account."
The language of error_message and user_message, such as en, es, or fr.
"en"
"MBR-7c6f361b-e582-15b6-60c0-358f12466b4b"
"unique_id"
"mxbank"
"INST-12345678-90ab-cdef-1234-567890abcdef"
false
false
false
false
"\\\"credentials_last_refreshed_at\\\": \\\"2015-10-15\\"
null
null
"JOB-12345678-90ab-cdef-1234-567890abcdef"
"MX Bank"
false
"https://mxbank.mx.com/oauth/authorize?client_id=b8OikQ4Ep3NuSUrQ13DdvFuwpNx-qqoAsJDVAQCyLkQ&redirect_uri=https%3A%2F%2Fint-app.moneydesktop.com%2Foauth%2Fredirect_from&response_type=code&scope=openid&state=d745bd4ee6f0f9c184757f574bcc2df2"
"2016-10-13T17:57:38.000Z"
The use case associated with the member. Valid values are PFM and/or MONEY_MOVEMENT. Only set this if you've met with MX and have opted in to using this field.
MONEY_MOVEMENT, PFM ["PFM"]
"USR-fa7537f3-48aa-a683-a02a-b18940482f54"
"user123"

