Skip to main content
POST
/
users
/
{user_guid}
/
budgets
/
generate
Auto-generate budgets
curl --request POST \
  --url https://int-api.mx.com/users/{user_guid}/budgets/generate \
  --header 'Accept-Version: <accept-version>' \
  --header 'Authorization: Basic <encoded-value>'
import requests

url = "https://int-api.mx.com/users/{user_guid}/budgets/generate"

headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>"
}

response = requests.post(url, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'Accept-Version': '<accept-version>', Authorization: 'Basic <encoded-value>'}
};

fetch('https://int-api.mx.com/users/{user_guid}/budgets/generate', 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/generate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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}/budgets/generate"

req, _ := http.NewRequest("POST", 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.post("https://int-api.mx.com/users/{user_guid}/budgets/generate")
.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}/budgets/generate")

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>'

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"
  }
}
This endpoint will automatically create budgets for several categories based on existing transactions; these budgets are returned as an array. Specifically, budgets will only be generated if the user has at least one transaction in a given category during each of the two previous calendar months. For example, if the request is made on March 6, and there is at least one “Bills & Utilities” transaction in both January and February, a budget will be generated for “Bills & Utilities.” If there are two “Bills & Utilities” transactions in February but none in January, no budget will be generated for that category. If budgets already exist for particular categories, new budgets will be generated and returned based on the available transactions. If one or more budgets remain unchanged, they will nevertheless be returned in the response. If no transaction data for the user meet the above criteria, a 422 Unprocessable Entity error will be returned with status code 4221 along with the message, There aren't enough transactions to automatically create any budgets.

Authorizations

Authorization
string
header
required

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

Accept-Version
string
default:v20250224
required

MX Platform API version.

Example:

"v20250224"

Path Parameters

user_guid
string
required

The unique identifier for a user, beginning with the prefix USR-.

Response

200 - application/json

OK

budget
object