curl --request GET \
--url https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status"
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Accept-Version': '<accept-version>', Authorization: 'Basic <encoded-value>'}
};
fetch('https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status', 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_identifier}/members/{member_identifier}/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept-Version: <accept-version>",
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept-Version", "<accept-version>")
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"member": {
"aggregated_at": "2016-10-13T18:07:57.000Z",
"challenges": [
{
"field_name": "Who is this guy?",
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"image_data": "Who is this guy?",
"image_options": [
{
"data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...",
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"label": "IMAGE_1",
"value": "image_data"
}
],
"label": "Who is this guy?",
"options": [
{
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"label": "IMAGE_1",
"value": "image_data"
}
],
"type": "IMAGE_DATA"
}
],
"connection_status": "CONNECTED",
"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",
"has_processed_account_numbers": true,
"has_processed_accounts": true,
"has_processed_transactions": false,
"is_authenticated": false,
"is_being_aggregated": false,
"successfully_aggregated_at": "2016-10-13T17:57:38.000Z"
}
}Read member status
This endpoint provides the status of the members most recent aggregation event. The results returned by this endpoint should determine what you do next in order to successfully aggregate a member.
curl --request GET \
--url https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status"
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Accept-Version': '<accept-version>', Authorization: 'Basic <encoded-value>'}
};
fetch('https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status', 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_identifier}/members/{member_identifier}/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept-Version: <accept-version>",
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept-Version", "<accept-version>")
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"member": {
"aggregated_at": "2016-10-13T18:07:57.000Z",
"challenges": [
{
"field_name": "Who is this guy?",
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"image_data": "Who is this guy?",
"image_options": [
{
"data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ...",
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"label": "IMAGE_1",
"value": "image_data"
}
],
"label": "Who is this guy?",
"options": [
{
"guid": "CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5",
"label": "IMAGE_1",
"value": "image_data"
}
],
"type": "IMAGE_DATA"
}
],
"connection_status": "CONNECTED",
"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",
"has_processed_account_numbers": true,
"has_processed_accounts": true,
"has_processed_transactions": false,
"is_authenticated": false,
"is_being_aggregated": false,
"successfully_aggregated_at": "2016-10-13T17:57:38.000Z"
}
}Authorizations
To authenticate with the Platform API, include your Base64-encoded client_id and api_key in the Authorization header of every request:
-H 'Authorization: Basic BASE_64_ENCODING_OF{client_id:api_key}'
Headers
MX Platform API version.
"v20250224"
The desired language of the widget, member.error.user_message field, and member.error.error_message field.
Path Parameters
Use either the member id you defined or the MX-defined member guid. See MX-Defined GUIDs vs IDs Defined by You.
Use either the user id you defined or the MX-defined user guid. See MX-Defined GUIDs vs IDs Defined by You.
Response
OK
Hide child attributes
Hide child attributes
The date and time the most recent aggregation-type job was started, given in ISO 8601 format with a time component.
A job will automatically be started when a member is created or its credentials are updated, unless the skip_aggregation parameter is used.
Jobs can also be started via manual aggregations, background aggregations, API endpoints, or when opening an MX widget.
A job can be a normal aggregation, or a premium job such as identification, verification, fetching statements, or fetching an extended transaction history.
If a member is deleted and then re-created with the skip_aggregation parameter set to true or if it is re-created within the throttle window (typically three hours), the previous value will be returned.
"2016-10-13T18:07:57.000Z"
Hide child attributes
Hide child attributes
"Who is this guy?"
"CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5"
"Who is this guy?"
Hide child attributes
Hide child attributes
"data:image/png;base64,iVBORw0KGgoAAAANSUh ... more image data ..."
"CRD-ce76d2e3-86bd-ec4a-ec52-eb53b5194bf5"
"IMAGE_1"
"image_data"
"Who is this guy?"
"IMAGE_DATA"
The status of a user's connection to an institution. See Member Connection Status.
CREATED, PREVENTED, DENIED, CHALLENGED, REJECTED, LOCKED, CONNECTED, IMPEDED, RECONNECTED, DEGRADED, DISCONNECTED, DISCONTINUED, CLOSED, DELAYED, FAILED, UPDATED, DISABLED, IMPORTED, RESUMED, EXPIRED, IMPAIRED, PENDING "CONNECTED"
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"
The unique identifier for the member. Defined by MX.
"MBR-7c6f361b-e582-15b6-60c0-358f12466b4b"
Indicates whether the member has processed account numbers.
true
Indicates whether the member has processed accounts.
true
Indicates whether the member has processed transactions.
false
false
false
The date and time when the member was last successfully aggregated, represented in ISO 8601 format with a timestamp.
"2016-10-13T17:57:38.000Z"

