curl --request GET \
--url https://int-api.mx.com/users/{user_guid}/accounts/{account_guid}/insights \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://int-api.mx.com/users/{user_guid}/accounts/{account_guid}/insights"
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_guid}/accounts/{account_guid}/insights', 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}/accounts/{account_guid}/insights",
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_guid}/accounts/{account_guid}/insights"
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_guid}/accounts/{account_guid}/insights")
.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_guid}/accounts/{account_guid}/insights")
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{
"insights": [
{
"active_at": "2022-01-07T12:00:00Z",
"client_guid": "CLT-abcd-1234",
"created_at": "2025-02-13T18:08:00+00:00",
"cta_clicked_at": "2022-01-13T18:13:51Z",
"description": "Gold's Gym charged you $36.71 more this month than normal. Did you upgrade your service?",
"guid": "BET-abcd-1234",
"has_associated_accounts": false,
"has_associated_categories": false,
"has_associated_merchants": false,
"has_associated_scheduled_payments": false,
"has_associated_transactions": true,
"has_been_displayed": true,
"is_dismissed": false,
"localization_payload": {
"is_enabled": false
},
"micro_call_to_action": "Learn more",
"micro_description": "Netflix charged you $5.00 more this month than normal.",
"micro_title": "Price Increase",
"template": "SubscriptionPriceIncrease",
"title": "Price increase",
"updated_at": "2025-02-13T18:09:00+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54",
"user_id": "u-1234"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}List insights by account
curl --request GET \
--url https://int-api.mx.com/users/{user_guid}/accounts/{account_guid}/insights \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://int-api.mx.com/users/{user_guid}/accounts/{account_guid}/insights"
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_guid}/accounts/{account_guid}/insights', 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}/accounts/{account_guid}/insights",
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_guid}/accounts/{account_guid}/insights"
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_guid}/accounts/{account_guid}/insights")
.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_guid}/accounts/{account_guid}/insights")
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{
"insights": [
{
"active_at": "2022-01-07T12:00:00Z",
"client_guid": "CLT-abcd-1234",
"created_at": "2025-02-13T18:08:00+00:00",
"cta_clicked_at": "2022-01-13T18:13:51Z",
"description": "Gold's Gym charged you $36.71 more this month than normal. Did you upgrade your service?",
"guid": "BET-abcd-1234",
"has_associated_accounts": false,
"has_associated_categories": false,
"has_associated_merchants": false,
"has_associated_scheduled_payments": false,
"has_associated_transactions": true,
"has_been_displayed": true,
"is_dismissed": false,
"localization_payload": {
"is_enabled": false
},
"micro_call_to_action": "Learn more",
"micro_description": "Netflix charged you $5.00 more this month than normal.",
"micro_title": "Price Increase",
"template": "SubscriptionPriceIncrease",
"title": "Price increase",
"updated_at": "2025-02-13T18:09:00+00:00",
"user_guid": "USR-fa7537f3-48aa-a683-a02a-b18940482f54",
"user_id": "u-1234"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total_entries": 1,
"total_pages": 1
}
}Authorizations
The MX Platform API requires basic access authentication using your client_id and api_key. These credentials must be Base64 encoded and included in the Authorization header of each API request to ensure secure access.
Here's an example using curl to access v20250224. Replace https://int-api.mx.com/endpoint with the actual API endpoint you wish to access and your Base64 encoded client_id and api_key.
curl -L -X POST `https://int-api.mx.com/endpoint' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Accept-Version: v20250224'
-H 'Authorization: Basic BASE_64_ENCODING_OF{client_id:api_key}'
Headers
MX Platform API version.
"v20250224"
Path Parameters
The unique id for an account.
The unique identifier for a user, beginning with the prefix USR-.
Query Parameters
Results are paginated. Specify current page.
This specifies the number of records to be returned on each page. Defaults to 25. The valid range is from 10 to 100. If the value exceeds 100, the default value of 25 will be used instead.
Opt in to receiving additional data on insights. Pass
?includes=localization_payload to populate the
localization_payload object on each insight.
- When included, insights with a supported template return
localization_payloadwithis_enabled: trueand the template-specific fields populated. Unsupported templates returnlocalization_payloadwithis_enabled: false. - If the parameter is omitted entirely, the
localization_payloadkey is not included in the response at all (it is absent, notnull). - Currently supported templates:
BillAmountNotStandard,MonthlySubscriptionAggregateV2,SubscriptionPriceIncrease. This list may grow as more templates are enabled.
Response
OK
Hide child attributes
Hide child attributes
The date and time when the insight was activated, represented in ISO 8601 format with a timestamp.
"2022-01-07T12:00:00Z"
The unique identifier for the client associated with the insight. Defined by MX.
"CLT-abcd-1234"
The date and time the insight was created, represented in ISO 8601 format with a timestamp.
"2025-02-13T18:08:00+00:00"
The date and time when a call-to-action was clicked, represented in ISO 8601 format with a timestamp.
"2022-01-13T18:13:51Z"
The human-readable information being delivered to the end user.
"Gold's Gym charged you $36.71 more this month than normal. Did you upgrade your service?"
The unique identifier for the insight. Defined by MX.
"BET-abcd-1234"
Indicates whether there are accounts associated with the insight.
false
Indicates whether there are categories associated with the insight.
false
Indicates whether there are merchants associated with the insight.
false
Indicates whether there are scheduled payments associated with the insight.
false
Indicates whether there are transactions associated with the insight.
true
Indicates whether the insight has been shown to the end user.
true
Indicates whether the insight has been dismissed by the user.
false
Structured, per-template values used to render the insight description and micro_description. The shape depends on the insight template. Opt-in: returned only when ?includes=localization_payload is passed (otherwise the key is absent). When the insight's template is supported, is_enabled is true and the template-specific fields are populated. When the template is not yet supported, is_enabled is false.
- Option 1
- Option 2
- Option 3
- Option 4
Hide child attributes
Hide child attributes
Whether the localization payload is populated for this insight's template.
false false
A short call-to-action text for prompting user engagement.
"Learn more"
A shorter version (300 characters or less) of description. This is the insight's description we display to the end user in the Micro Widget
"Netflix charged you $5.00 more this month than normal."
A shorter version (60 characters or less) of title. This is the insight's title we display to the end user in the Micro Insights Widget. For example, Price Increase or Paycheck Deposit.
"Price Increase"
A short label for the type of insight being delivered, for example, SubscriptionPriceIncrease or MonthlyCategoryTotal.
"SubscriptionPriceIncrease"
The title for the specific insight, for example, Price Increase or Paycheck Deposit.
"Price increase"
The date and time the resource was last updated in ISO 8601 format with a timestamp.
For categories, this field will always be null when is_default is true.
"2025-02-13T18:09:00+00:00"
The unique identifier for the user. Defined by MX.
"USR-fa7537f3-48aa-a683-a02a-b18940482f54"
The unique partner-defined identifier for the user.
"u-1234"
Hide child attributes
Hide child attributes
The page delivered by the current response.
1
The number of records delivered with each page.
25
The total number of records available.
1
The total number of pages available.
1

