curl --request PUT \
--url https://int-api.mx.com/users/{user_guid}/goals/{goal_guid} \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"goal": {
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 4500,
"goal_type_name": "SAVE_AMOUNT",
"meta_type_name": "VACATION",
"name": "Save for Europe",
"completed_at": "2025-08-15T10:30:00+00:00",
"has_been_spent": false,
"is_complete": false,
"metadata": "Additional information",
"position": 3,
"targeted_to_complete_at": "2026-12-08 00:00:00.000000"
}
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/goals/{goal_guid}"
payload = { "goal": {
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 4500,
"goal_type_name": "SAVE_AMOUNT",
"meta_type_name": "VACATION",
"name": "Save for Europe",
"completed_at": "2025-08-15T10:30:00+00:00",
"has_been_spent": False,
"is_complete": False,
"metadata": "Additional information",
"position": 3,
"targeted_to_complete_at": "2026-12-08 00:00:00.000000"
} }
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({
goal: {
account_guid: 'ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1',
amount: 4500,
goal_type_name: 'SAVE_AMOUNT',
meta_type_name: 'VACATION',
name: 'Save for Europe',
completed_at: '2025-08-15T10:30:00+00:00',
has_been_spent: false,
is_complete: false,
metadata: 'Additional information',
position: 3,
targeted_to_complete_at: '2026-12-08 00:00:00.000000'
}
})
};
fetch('https://int-api.mx.com/users/{user_guid}/goals/{goal_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}/goals/{goal_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([
'goal' => [
'account_guid' => 'ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1',
'amount' => 4500,
'goal_type_name' => 'SAVE_AMOUNT',
'meta_type_name' => 'VACATION',
'name' => 'Save for Europe',
'completed_at' => '2025-08-15T10:30:00+00:00',
'has_been_spent' => false,
'is_complete' => false,
'metadata' => 'Additional information',
'position' => 3,
'targeted_to_complete_at' => '2026-12-08 00:00:00.000000'
]
]),
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}/goals/{goal_guid}"
payload := strings.NewReader("{\n \"goal\": {\n \"account_guid\": \"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1\",\n \"amount\": 4500,\n \"goal_type_name\": \"SAVE_AMOUNT\",\n \"meta_type_name\": \"VACATION\",\n \"name\": \"Save for Europe\",\n \"completed_at\": \"2025-08-15T10:30:00+00:00\",\n \"has_been_spent\": false,\n \"is_complete\": false,\n \"metadata\": \"Additional information\",\n \"position\": 3,\n \"targeted_to_complete_at\": \"2026-12-08 00:00:00.000000\"\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}/goals/{goal_guid}")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"goal\": {\n \"account_guid\": \"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1\",\n \"amount\": 4500,\n \"goal_type_name\": \"SAVE_AMOUNT\",\n \"meta_type_name\": \"VACATION\",\n \"name\": \"Save for Europe\",\n \"completed_at\": \"2025-08-15T10:30:00+00:00\",\n \"has_been_spent\": false,\n \"is_complete\": false,\n \"metadata\": \"Additional information\",\n \"position\": 3,\n \"targeted_to_complete_at\": \"2026-12-08 00:00:00.000000\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/goals/{goal_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 \"goal\": {\n \"account_guid\": \"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1\",\n \"amount\": 4500,\n \"goal_type_name\": \"SAVE_AMOUNT\",\n \"meta_type_name\": \"VACATION\",\n \"name\": \"Save for Europe\",\n \"completed_at\": \"2025-08-15T10:30:00+00:00\",\n \"has_been_spent\": false,\n \"is_complete\": false,\n \"metadata\": \"Additional information\",\n \"position\": 3,\n \"targeted_to_complete_at\": \"2026-12-08 00:00:00.000000\"\n }\n}"
response = http.request(request)
puts response.read_body{
"goal": {
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 4500,
"completed_at": "2025-08-15T10:30:00+00:00",
"current_amount": 1500,
"goal_type_name": "SAVE_AMOUNT",
"guid": "GOL-f223463-4355-48d0-rce7-fe2rb345617c",
"has_been_spent": false,
"is_complete": false,
"metadata": "Additional information",
"meta_type_name": "VACATION",
"name": "Save for Europe",
"position": 3,
"projected_to_complete_at": "2022-06-14T16:03:53-00:00",
"targeted_to_complete_at": "2026-12-08 00:00:00.000000",
"track_type_name": "SAVINGS_TRACK",
"user_guid": "USR-11141024-90b3-1bce-cac9-c06ced52ab4c"
}
}Update a goal
Use this endpoint to update a specific goal.
curl --request PUT \
--url https://int-api.mx.com/users/{user_guid}/goals/{goal_guid} \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"goal": {
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 4500,
"goal_type_name": "SAVE_AMOUNT",
"meta_type_name": "VACATION",
"name": "Save for Europe",
"completed_at": "2025-08-15T10:30:00+00:00",
"has_been_spent": false,
"is_complete": false,
"metadata": "Additional information",
"position": 3,
"targeted_to_complete_at": "2026-12-08 00:00:00.000000"
}
}
'import requests
url = "https://int-api.mx.com/users/{user_guid}/goals/{goal_guid}"
payload = { "goal": {
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 4500,
"goal_type_name": "SAVE_AMOUNT",
"meta_type_name": "VACATION",
"name": "Save for Europe",
"completed_at": "2025-08-15T10:30:00+00:00",
"has_been_spent": False,
"is_complete": False,
"metadata": "Additional information",
"position": 3,
"targeted_to_complete_at": "2026-12-08 00:00:00.000000"
} }
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({
goal: {
account_guid: 'ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1',
amount: 4500,
goal_type_name: 'SAVE_AMOUNT',
meta_type_name: 'VACATION',
name: 'Save for Europe',
completed_at: '2025-08-15T10:30:00+00:00',
has_been_spent: false,
is_complete: false,
metadata: 'Additional information',
position: 3,
targeted_to_complete_at: '2026-12-08 00:00:00.000000'
}
})
};
fetch('https://int-api.mx.com/users/{user_guid}/goals/{goal_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}/goals/{goal_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([
'goal' => [
'account_guid' => 'ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1',
'amount' => 4500,
'goal_type_name' => 'SAVE_AMOUNT',
'meta_type_name' => 'VACATION',
'name' => 'Save for Europe',
'completed_at' => '2025-08-15T10:30:00+00:00',
'has_been_spent' => false,
'is_complete' => false,
'metadata' => 'Additional information',
'position' => 3,
'targeted_to_complete_at' => '2026-12-08 00:00:00.000000'
]
]),
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}/goals/{goal_guid}"
payload := strings.NewReader("{\n \"goal\": {\n \"account_guid\": \"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1\",\n \"amount\": 4500,\n \"goal_type_name\": \"SAVE_AMOUNT\",\n \"meta_type_name\": \"VACATION\",\n \"name\": \"Save for Europe\",\n \"completed_at\": \"2025-08-15T10:30:00+00:00\",\n \"has_been_spent\": false,\n \"is_complete\": false,\n \"metadata\": \"Additional information\",\n \"position\": 3,\n \"targeted_to_complete_at\": \"2026-12-08 00:00:00.000000\"\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}/goals/{goal_guid}")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"goal\": {\n \"account_guid\": \"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1\",\n \"amount\": 4500,\n \"goal_type_name\": \"SAVE_AMOUNT\",\n \"meta_type_name\": \"VACATION\",\n \"name\": \"Save for Europe\",\n \"completed_at\": \"2025-08-15T10:30:00+00:00\",\n \"has_been_spent\": false,\n \"is_complete\": false,\n \"metadata\": \"Additional information\",\n \"position\": 3,\n \"targeted_to_complete_at\": \"2026-12-08 00:00:00.000000\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/goals/{goal_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 \"goal\": {\n \"account_guid\": \"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1\",\n \"amount\": 4500,\n \"goal_type_name\": \"SAVE_AMOUNT\",\n \"meta_type_name\": \"VACATION\",\n \"name\": \"Save for Europe\",\n \"completed_at\": \"2025-08-15T10:30:00+00:00\",\n \"has_been_spent\": false,\n \"is_complete\": false,\n \"metadata\": \"Additional information\",\n \"position\": 3,\n \"targeted_to_complete_at\": \"2026-12-08 00:00:00.000000\"\n }\n}"
response = http.request(request)
puts response.read_body{
"goal": {
"account_guid": "ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1",
"amount": 4500,
"completed_at": "2025-08-15T10:30:00+00:00",
"current_amount": 1500,
"goal_type_name": "SAVE_AMOUNT",
"guid": "GOL-f223463-4355-48d0-rce7-fe2rb345617c",
"has_been_spent": false,
"is_complete": false,
"metadata": "Additional information",
"meta_type_name": "VACATION",
"name": "Save for Europe",
"position": 3,
"projected_to_complete_at": "2022-06-14T16:03:53-00:00",
"targeted_to_complete_at": "2026-12-08 00:00:00.000000",
"track_type_name": "SAVINGS_TRACK",
"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 goal. Defined by MX.
The unique identifier for a user, beginning with the prefix USR-.
Body
Hide child attributes
Hide child attributes
The unique identifier for an account. Defined by MX.
"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1"
The amount of the goal.
4500
The type of goal. Can be SAVE_AMOUNT or PAYOFF.
SAVE_AMOUNT, PAYOFF "SAVE_AMOUNT"
The category of the goal.
"VACATION"
The name of the goal.
"Save for Europe"
Date and time the goal was completed, represented in ISO 8601 format with a timestamp.
"2025-08-15T10:30:00+00:00"
Determines if the goal has been spent.
false
Determines if the goal is complete.
false
Additional information you can store about the goal.
"Additional information"
The priority of the goal in relation to multiple goals.
3
Date and time the goal is to complete. Intended for users to set their own goal completion dates.
"2026-12-08 00:00:00.000000"
Response
OK
Hide child attributes
Hide child attributes
The unique identifier for an account. Defined by MX.
"ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1"
The amount of the goal.
4500
Date and time the goal was completed, represented in ISO 8601 format with a timestamp.
"2025-08-15T10:30:00+00:00"
The current amount of the goal.
1500
The type of goal.
SAVE_AMOUNT, PAYOFF "SAVE_AMOUNT"
Unique identifier for the goal. Defined by MX.
"GOL-f223463-4355-48d0-rce7-fe2rb345617c"
Determines if the goal has been spent.
false
Determines if the goal is complete.
false
Additional information you stored about the goal.
"Additional information"
The category of the goal.
"VACATION"
The name of the goal.
"Save for Europe"
The priority of the goal in relation to multiple goals.
3
Date and time the goal is projected to be completed.
"2022-06-14T16:03:53-00:00"
Date and time the goal is to complete. Intended for users to set their own goal completion dates.
"2026-12-08 00:00:00.000000"
The track of the goal.
DEBT_TRACK, SAVINGS_TRACK, RETIREMENT_TRACK, EMERGENCY_FUND_TRACK "SAVINGS_TRACK"
The unique identifier for the the user. Defined by MX.
"USR-11141024-90b3-1bce-cac9-c06ced52ab4c"

