curl --request PUT \
--url https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid} \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"budget": {
"amount": 1000,
"metadata": "Additional information",
"skip_webhook": true
}
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}"
payload = { "budget": {
"amount": 1000,
"metadata": "Additional information",
"skip_webhook": True
} }
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'Accept-Version': '<accept-version>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({budget: {amount: 1000, metadata: 'Additional information', skip_webhook: true}})
};
fetch('https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}', 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/{budget_guid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'budget' => [
'amount' => 1000,
'metadata' => 'Additional information',
'skip_webhook' => true
]
]),
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/{budget_guid}"
payload := strings.NewReader("{\n \"budget\": {\n \"amount\": 1000,\n \"metadata\": \"Additional information\",\n \"skip_webhook\": true\n }\n}")
req, _ := http.NewRequest("PUT", 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.put("https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"budget\": {\n \"amount\": 1000,\n \"metadata\": \"Additional information\",\n \"skip_webhook\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"budget\": {\n \"amount\": 1000,\n \"metadata\": \"Additional information\",\n \"skip_webhook\": true\n }\n}"
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"
}
}Update a specific budget
Update a specific budget.
curl --request PUT \
--url https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid} \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"budget": {
"amount": 1000,
"metadata": "Additional information",
"skip_webhook": true
}
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}"
payload = { "budget": {
"amount": 1000,
"metadata": "Additional information",
"skip_webhook": True
} }
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'Accept-Version': '<accept-version>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({budget: {amount: 1000, metadata: 'Additional information', skip_webhook: true}})
};
fetch('https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}', 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/{budget_guid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'budget' => [
'amount' => 1000,
'metadata' => 'Additional information',
'skip_webhook' => true
]
]),
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/{budget_guid}"
payload := strings.NewReader("{\n \"budget\": {\n \"amount\": 1000,\n \"metadata\": \"Additional information\",\n \"skip_webhook\": true\n }\n}")
req, _ := http.NewRequest("PUT", 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.put("https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"budget\": {\n \"amount\": 1000,\n \"metadata\": \"Additional information\",\n \"skip_webhook\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/budgets/{budget_guid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"budget\": {\n \"amount\": 1000,\n \"metadata\": \"Additional information\",\n \"skip_webhook\": true\n }\n}"
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-.
The unique identifier for the budget. Defined by MX.
Body
Hide child attributes
Hide child attributes
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"

