Skip to main content
PATCH
/
marketing
/
campaigns
/
2026-03
/
{campaignGuid}
Update campaign
curl --request PATCH \
  --url https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "properties": {}
}
'
import requests

url = "https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}"

payload = { "properties": {} }
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({properties: {}})
};

fetch('https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}', 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/marketing/campaigns/2026-03/{campaignGuid}",
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([
'properties' => [

]
]),
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/marketing/campaigns/2026-03/{campaignGuid}"

payload := strings.NewReader("{\n \"properties\": {}\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/marketing/campaigns/2026-03/{campaignGuid}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"properties\": {}\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}")

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 \"properties\": {}\n}"

response = http.request(request)
puts response.read_body
{
  "businessUnits": [
    {
      "id": 123
    }
  ],
  "createdAt": "2023-11-07T05:31:56Z",
  "id": "<string>",
  "properties": {},
  "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

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

campaignGuid
string
required

The UUID of the campaign, required Example: 9dbec438-53e2-4b28-8c0f-38f56574a6e8

Body

application/json
properties
object
required

A collection of key-value pairs representing the properties of the campaign. Each key is a property name, and the corresponding value is the property's value.

Response

successful operation

businessUnits
object[]
required

An array of business units associated with the campaign, each represented by a PublicBusinessUnit object.

createdAt
string<date-time>
required

The date and time when the campaign was created, formatted as a date-time string.

id
string
required

The unique identifier for the campaign.

properties
object
required

A collection of key-value pairs representing additional properties of the campaign.

updatedAt
string<date-time>
required

The date and time when the campaign was last updated, formatted as a date-time string.

Last modified on March 31, 2026