curl --request POST \
--url https://int-api.mx.com/users/{user_guid}/budgets \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://int-api.mx.com/users/{user_guid}/budgets"
payload = {}
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Accept-Version': '<accept-version>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://int-api.mx.com/users/{user_guid}/budgets', 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}/budgets",
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([
]),
CURLOPT_HTTPHEADER => [
"Accept-Version: <accept-version>",
"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}/budgets"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept-Version", "<accept-version>")
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}/budgets")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/budgets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"budget": {
"amount": 153,
"category_guid": "CAT-b6d61a19-30a7-e852-2703-bdfb4072289e",
"created_at": "2025-02-13T18:08:00+00:00",
"guid": "BGT-6ca0e3ef-c65e-4655-8b5a-275a3c19c21d",
"is_exceeded": true,
"is_off_track": true,
"metadata": "some metadata",
"name": "Food & Dining",
"off_track_percentage": 123,
"parent_guid": "<string>",
"percent_spent": 1276.34,
"projected_spending": 3562.4,
"revision": 561,
"transaction_total": 1952.8,
"updated_at": "2022-06-14T21:17:11+00:00",
"user_guid": "USR-11141024-90b3-1bce-cac9-c06ced52ab4c"
}
}Create a budget
Create a budget. This endpoint accepts the optional MX-Skip-Webhook header and skip_webhook parameter.
curl --request POST \
--url https://int-api.mx.com/users/{user_guid}/budgets \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://int-api.mx.com/users/{user_guid}/budgets"
payload = {}
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Accept-Version': '<accept-version>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://int-api.mx.com/users/{user_guid}/budgets', 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}/budgets",
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([
]),
CURLOPT_HTTPHEADER => [
"Accept-Version: <accept-version>",
"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}/budgets"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept-Version", "<accept-version>")
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}/budgets")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/budgets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"budget": {
"amount": 153,
"category_guid": "CAT-b6d61a19-30a7-e852-2703-bdfb4072289e",
"created_at": "2025-02-13T18:08:00+00:00",
"guid": "BGT-6ca0e3ef-c65e-4655-8b5a-275a3c19c21d",
"is_exceeded": true,
"is_off_track": true,
"metadata": "some metadata",
"name": "Food & Dining",
"off_track_percentage": 123,
"parent_guid": "<string>",
"percent_spent": 1276.34,
"projected_spending": 3562.4,
"revision": 561,
"transaction_total": 1952.8,
"updated_at": "2022-06-14T21:17:11+00:00",
"user_guid": "USR-11141024-90b3-1bce-cac9-c06ced52ab4c"
}
}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 identifier for a user, beginning with the prefix USR-.
Body
Hide child attributes
Hide child attributes
The unique identifier for the category.
"CAT-b6d61a19-30a7-e852-2703-bdfb4072289e"
Unique identifier of the parent budget. This is only required when creating a budget on a sub-category.
"BGT-6be44a91-e105-f68a-4770-8c7c0a5c9778"
Amount of the budget.
1000
Additional information you can store on the budget.
"Additional information"
When set to true, this parameter will prevent a webhook from being triggered by the request.
true
Response
OK
Hide child attributes
Hide child attributes
A goal amount set by the user for a category's transaction total during a month.
153
The unique identifier for the category. Defined by MX.
"CAT-b6d61a19-30a7-e852-2703-bdfb4072289e"
The date and time the budget was created, represented in ISO 8601 format with a timestamp.
"2025-02-13T18:08:00+00:00"
Unique identifier for the budget. Defined by MX.
"BGT-6ca0e3ef-c65e-4655-8b5a-275a3c19c21d"
If the budget has been exceeded, this field will be true. Otherwise, this field will be false.
true
If the budget is off track, this field will be true. Otherwise, this field will be false.
true
Additional information you stored about the budget.
"some metadata"
The name of the budget that is visible to the user (ie "Food", "Bills", "Entertainment", etc).
"Food & Dining"
The percentage amount of off track spending. (Deprecated).
Unique identifier for the parent budget. Defined by MX.
The percentage of a budget that has been spent during the current calendar month Calculated as the transaction total divided by the amount and then multiplied by 100.A value of zero will be returned when amount is zero.
1276.34
The projected amount of spending for the budget.
3562.4
The revision number of this budget record.
561
The cumulative amount of all transactions under the budget.
1952.8
Date and time the budget was updated, represented in ISO 8601 format with timestamp.
"2022-06-14T21:17:11+00:00"
Unique identifier for the user. Defined by MX.
"USR-11141024-90b3-1bce-cac9-c06ced52ab4c"

