curl --request PUT \
--url https://int-api.mx.com/users/{user_guid}/categories/{category_guid} \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"category": {
"metadata": "some metadata",
"name": "Web shopping"
}
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/categories/{category_guid}"
payload = { "category": {
"metadata": "some metadata",
"name": "Web shopping"
} }
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({category: {metadata: 'some metadata', name: 'Web shopping'}})
};
fetch('https://int-api.mx.com/users/{user_guid}/categories/{category_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}/categories/{category_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([
'category' => [
'metadata' => 'some metadata',
'name' => 'Web shopping'
]
]),
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}/categories/{category_guid}"
payload := strings.NewReader("{\n \"category\": {\n \"metadata\": \"some metadata\",\n \"name\": \"Web shopping\"\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}/categories/{category_guid}")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"category\": {\n \"metadata\": \"some metadata\",\n \"name\": \"Web shopping\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/categories/{category_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 \"category\": {\n \"metadata\": \"some metadata\",\n \"name\": \"Web shopping\"\n }\n}"
response = http.request(request)
puts response.read_body{
"category": {
"created_at": "2025-02-13T18:08:00+00:00",
"guid": "CAT-7829f71c-2e8c-afa5-2f55-fa3634b89874",
"is_default": true,
"is_income": false,
"metadata": "some metadata",
"name": "Auto Insurance",
"parent_guid": "CAT-7829f71c-2e8c-afa5-2f55-fa3634b89874",
"updated_at": "2025-02-13T18:09:00+00:00"
}
}Update category
curl --request PUT \
--url https://int-api.mx.com/users/{user_guid}/categories/{category_guid} \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"category": {
"metadata": "some metadata",
"name": "Web shopping"
}
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/categories/{category_guid}"
payload = { "category": {
"metadata": "some metadata",
"name": "Web shopping"
} }
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({category: {metadata: 'some metadata', name: 'Web shopping'}})
};
fetch('https://int-api.mx.com/users/{user_guid}/categories/{category_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}/categories/{category_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([
'category' => [
'metadata' => 'some metadata',
'name' => 'Web shopping'
]
]),
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}/categories/{category_guid}"
payload := strings.NewReader("{\n \"category\": {\n \"metadata\": \"some metadata\",\n \"name\": \"Web shopping\"\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}/categories/{category_guid}")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"category\": {\n \"metadata\": \"some metadata\",\n \"name\": \"Web shopping\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/categories/{category_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 \"category\": {\n \"metadata\": \"some metadata\",\n \"name\": \"Web shopping\"\n }\n}"
response = http.request(request)
puts response.read_body{
"category": {
"created_at": "2025-02-13T18:08:00+00:00",
"guid": "CAT-7829f71c-2e8c-afa5-2f55-fa3634b89874",
"is_default": true,
"is_income": false,
"metadata": "some metadata",
"name": "Auto Insurance",
"parent_guid": "CAT-7829f71c-2e8c-afa5-2f55-fa3634b89874",
"updated_at": "2025-02-13T18:09:00+00:00"
}
}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 a category.
"CAT-7829f71c-2e8c-afa5-2f55-fa3634b89874"
The unique identifier for a user, beginning with the prefix USR-.
Body
Category object to be updated (While no single parameter is required, the category object cannot be empty)
Response
OK
Hide child attributes
Hide child attributes
The date and time the category was created, represented in ISO 8601 format with a timestamp.
"2025-02-13T18:08:00+00:00"
The unique identifier for the category. Defined by MX.
"CAT-7829f71c-2e8c-afa5-2f55-fa3634b89874"
Indicates whether the category is an MX-created default category. This will always be false for custom categories.
true
Indicates whether the transaction is income.
false
Additional information you stored on the category.
"some metadata"
The name of the category.
"Auto Insurance"
The unique identifier for the parent category. Defined by MX.
"CAT-7829f71c-2e8c-afa5-2f55-fa3634b89874"
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"

