Get subscribers

Returns one subscriber of one of the org's lists, with their consent evidence and engagement.

GET /v1/marketing/lists/{id}/subscribers/{sid}

Addresshttps://api.hanzo.ai/v1/marketing/lists/{id}/subscribers/{sid}
MethodGET
Operationget_marketing_lists_by_id_subscribers_by_sid
AuthAuthorization: Bearer $HANZO_API_KEY

Returns one subscriber of one of the org's lists, with their consent evidence and engagement.

Request

2 fields.

FieldInTypeRequiredDescription
idpathstringyesID is the list, by id or slug.
sidpathintegeryesSID is the subscriber's id.

Response

StatusBodyMeaning
200marketing.Subscriberok
defaultproblem-detailsrefused

200 body — 30 fields.

FieldInTypeAlwaysDescription
clicksbodyinteger (int64)—Clicks counts the clicks reported.
confirmedAtbodyinteger (int64)—ConfirmedAt is when the subscription was confirmed or, for one that needed no confirmation, began; 0 while pending.
consentbodymarketing.Consent—
consent.atbodyinteger (int64)—At is when it was given, unix seconds; for an import, the date the file carried when it carried one.
consent.basisbodystring—Basis is explicit, legitimate_interest or unverified.
consent.dntbodyboolean—DNT records that the request carried Do Not Track (DNT: 1).
consent.gpcbodyboolean—GPC records that the request carried Global Privacy Control (Sec-GPC: 1).
consent.ipbodystring—IP is the network address it was given from, when it was given here.
consent.languagebodystring—Language is the language it was asked in.
consent.methodbodystring—Method is how it was given: double_opt_in, single_opt_in, import, api, preferences or commerce.
consent.pagebodystring—Page is the form or page it was given on.
createdAtbodyinteger (int64)—CreatedAt is when the row was created, unix seconds.
emailbodystring—Email is the address, lower-cased and trimmed; one row per address per list.
fieldsbodyobject—Fields are the values of the org's custom fields, by key.
fields.*bodystring—
idbodyinteger (int64)—ID is the subscriber's id within the org.
languagebodystring—Language is the subscriber's language, a BCP 47 tag.
lastClickAtbodyinteger (int64)—LastClickAt is the last click the email plane reported.
lastOpenAtbodyinteger (int64)—LastOpenAt is the last open the email plane reported.
lastSentAtbodyinteger (int64)—LastSentAt is the last broadcast sent to them.
listbodystring—List is the list's id.
namebodystring—Name is the person's name, as given.
opensbodyinteger (int64)—Opens counts the opens reported.
personbodystring—Person is the CRM person the address is: the key the event stream, the CRM and Insights join on.
refbodystring—Ref is that place: a form id, a page, an import batch id.
sourcebodystring—Source is the kind of place the membership came from: form, page, api, import or commerce.
statusbodystring—Status is pending, subscribed, unsubscribed, bounced, complained or cleaned.
tagsbodystring[]—Tags label the subscriber; each at most 64 characters.
unsubscribedAtbodyinteger (int64)—UnsubscribedAt is when the subscriber left; 0 while they have not.
updatedAtbodyinteger (int64)—UpdatedAt is the last change, unix seconds.

Failure carries the platform error shape — see Errors.

Examples

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

const api = new MarketingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getMarketingListsByIdSubscribersBySid({ id: 'id', sid: 'sid' });
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).get_marketing_lists_by_id_subscribers_by_sid(id='id', sid='sid')
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.MarketingAPI.GetMarketingListsByIdSubscribersBySid(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::get_marketing_lists_by_id_subscribers_by_sid(&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).getMarketingListsByIdSubscribersBySid();

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 https://api.hanzo.ai/v1/marketing/lists/<id>/subscribers/1 \
  -H "Authorization: Bearer $HANZO_API_KEY"

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.