Update lists

Changes the fields the body names on one of the org's lists and answers the list.

PATCH /v1/marketing/lists/{id}

Addresshttps://api.hanzo.ai/v1/marketing/lists/{id}
MethodPATCH
Operationpatch_marketing_lists_by_id
AuthAuthorization: Bearer $HANZO_API_KEY

Changes the fields the body names on one of the org's lists and answers the list. A field left out keeps its value; an empty string clears a sender field back to the org's.

Org admin only.

Request

15 fields, body application/json (required).

FieldInTypeRequiredDescription
idpathstringyesID is the list to change, from the path; ignored on create.
companybodystring—Company is the sender's legal name in the footer; at most 200 characters.
descriptionbodystring—Description says what subscribers receive; at most 2000 characters.
doubleOptInbodyboolean—DoubleOptIn is whether a public subscription must be confirmed; a new list asks for confirmation.
footerbodystring—Footer is text closing every mail of the list; at most 2000 characters.
fromAddressbodystring—FromAddress is the sender's address.
fromNamebodystring—FromName is the sender's name; at most 200 characters.
idbodystring—ID is the list to change, from the path; ignored on create.
languagebodystring—Language is a BCP 47 tag; a new list takes the platform's default.
namebodystring—Name is what the list is called.
postalbodystring—Postal is the sender's physical postal address; at most 500 characters.
providerbodystring—Provider is ses, sendgrid, or empty for the org's own.
replyTobodystring—ReplyTo is where replies go.
slugbodystring—Slug is the list's name in a URL: lower-case letters, digits and hyphens, at most 63.
visibilitybodystring—Visibility is public or private; a new list is private.

Response

StatusBodyMeaning
200marketing.Listok
defaultproblem-detailsrefused

200 body — 18 fields.

FieldInTypeAlwaysDescription
companybodystring—Company is the sender's legal name in the footer; empty takes the org's.
countsbodyobject—Counts are the list's subscribers by status.
counts.*bodyinteger (int64)—
createdAtbodyinteger (int64)—CreatedAt is when the list was created, unix seconds.
descriptionbodystring—Description says what subscribers receive.
doubleOptInbodyboolean—DoubleOptIn is whether a public subscription waits for the address to confirm before it is subscribed.
footerbodystring—Footer is text closing every mail of the list, above the unsubscribe line.
fromAddressbodystring—FromAddress is the sender's address; empty takes the org's.
fromNamebodystring—FromName is the sender's name on the list's mail; empty takes the org's.
idbodystring—ID is the list's id ("lst_" and 96 random bits in hex).
languagebodystring—Language is the list's language, a BCP 47 tag.
namebodystring—Name is what the list is called.
postalbodystring—Postal is the sender's physical postal address, which every commercial mail carries (CAN-SPAM); empty takes the org's.
providerbodystring—Provider is ses or sendgrid; empty takes the org's.
replyTobodystring—ReplyTo is where replies go; empty takes the org's.
slugbodystring—Slug is the list's name in a URL, unique in the org: a public form may name the list by it ("newsletter").
updatedAtbodyinteger (int64)—UpdatedAt is the last change to the list itself, unix seconds.
visibilitybodystring—Visibility is public, which the public subscribe and the preference page offer, or private, which only the org's own calls fill.

Failure carries the platform error shape — see Errors.

Examples

hanzo marketing lists update <id>
import { Configuration, MarketingApi } from 'hanzoai';

const api = new MarketingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.patchMarketingListsById({ id: 'id', company: "<company>", description: "<description>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import MarketingApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = MarketingApi(client).patch_marketing_lists_by_id(id='id', company="<company>", description="<description>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.MarketingAPI.PatchMarketingListsById(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, marketing_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = marketing_api::patch_marketing_lists_by_id(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MarketingApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new MarketingApi(client).patchMarketingListsById();

The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →

curl -X PATCH https://api.hanzo.ai/v1/marketing/lists/<id> \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "company": "<company>",
       "description": "<description>"
     }'

MCP reaches marketing through the marketing tool, which names its 82 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_marketing_audiences"
         }
       }
     }'

Marketing API · All Hanzo APIs · Interactive reference

Was this page useful?
Broken link or missing step? Drop it in #docs on Discord or open a PR.