Update a card
curl --request PATCH \
--url https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>"
}
'import requests
url = "https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}"
payload = { "title": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>'})
};
fetch('https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}', 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://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}"
payload := strings.NewReader("{\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"actions": {
"baseUrls": [
"<string>"
]
},
"auditHistory": [
{
"applicationId": 123,
"changedAt": 123,
"initiatingUserId": 123,
"objectTypeId": 123
}
],
"display": {
"properties": [
{
"label": "<string>",
"name": "<string>",
"options": [
{
"label": "<string>",
"name": "<string>"
}
]
}
]
},
"fetch": {
"objectTypes": [
{
"propertiesToSend": [
"<string>"
]
}
],
"targetUrl": "<string>"
},
"id": "<string>",
"title": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}CRM cards
Update a card
Update a card definition with new details.
PATCH
/
crm
/
extensions
/
cards-dev
/
2026-03
/
{appId}
/
{cardId}
Update a card
curl --request PATCH \
--url https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>"
}
'import requests
url = "https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}"
payload = { "title": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>'})
};
fetch('https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}', 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://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}"
payload := strings.NewReader("{\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/{cardId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"actions": {
"baseUrls": [
"<string>"
]
},
"auditHistory": [
{
"applicationId": 123,
"changedAt": 123,
"initiatingUserId": 123,
"objectTypeId": 123
}
],
"display": {
"properties": [
{
"label": "<string>",
"name": "<string>",
"options": [
{
"label": "<string>",
"name": "<string>"
}
]
}
]
},
"fetch": {
"objectTypes": [
{
"propertiesToSend": [
"<string>"
]
}
],
"targetUrl": "<string>"
},
"id": "<string>",
"title": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
The appId of the app containing the Legacy CRM Card(s)
The ID of the card to update.
Body
application/json
Response
successful operation
Show child attributes
Show child attributes
A list of actions performed on the card, including creation, deletion, and updates.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The unique id of the card.
The top-level title for this card. Displayed to users in the CRM UI.
The date and time when the card was created.
The date and time when the card was last updated.
Last modified on March 31, 2026
Was this page helpful?
⌘I