Create actions

Counts one action of the signed-in caller: a star on a Hanzo repository, verified on GitHub for the login named, or a follow of a founder's link, taken on trust.

POST /v1/marketing/beta/actions

Addresshttps://api.hanzo.ai/v1/marketing/beta/actions
MethodPOST
Operationpost_marketing_beta_actions
AuthAuthorization: Bearer $HANZO_API_KEY

Counts one action of the signed-in caller: a star on a Hanzo repository, verified on GitHub for the login named, or a follow of a founder's link, taken on trust. An action already counted changes nothing. A star GitHub does not show answers 422, and a login another account's stars are counted for, 409.

Request

3 fields, body application/json (required).

FieldInTypeRequiredDescription
actionbodystring—Action is star or follow.
githubbodystring—GitHub is the person's GitHub login, for a star.
targetbodystring—Target is the repository starred (hanzoai/<name>) or the founder's link followed (antje or zach, then github, linkedin or x: zach/github).

Response

StatusBodyMeaning
200marketing.Betaok
defaultproblem-detailsrefused

200 body — 21 fields.

FieldInTypeAlwaysDescription
actionsbodymarketing.BetaAction[]—Actions are the actions that earned points, oldest first.
actions[].actionbodystring—Action is what was done: star, verified on GitHub, or follow, counted on trust.
actions[].atbodystring—At is when it was counted, RFC 3339 in UTC.
actions[].pointsbodyinteger (int64)—Points is what the action earned.
actions[].targetbodystring—Target is what it was done to: a repository (hanzoai/ai) for a star, a founder's link (zach/github) for a follow.
answersbodymarketing.BetaAnswer[]—Answers are the application's answers.
answers[].answerbodystring[]—Answer is what the person answered: one entry for a typed answer or a single choice, one entry per option for several.
answers[].idbodystring—ID is the question's id on the form, such as "builds".
answers[].questionbodystring—Question is the question as the form asked it.
appliedbodyboolean—Applied is whether the account has applied: its record names a program.
betasbodystring[]—Betas are the ids of the unreleased products asked for.
githubbodystring—GitHub is the GitHub login the account's stars are counted for.
leadbodystring—Lead is the reference the application was filed under as a lead.
ofbodyinteger (int64)—Of is how many people are on the waitlist, as the board counts them.
placebodyinteger (int64)—Place is the record's place on the waitlist, 1 first; 0 with no record, or when the board did not answer.
pointsbodyinteger (int64)—Points is the sum of what Actions earned.
programbodystring—Program is the program applied to: beta, research or partner.
requestedbodyobject—Requested is when each of Betas was asked for, RFC 3339 in UTC, by id.
requested.*bodystring—
scorebodyinteger (int64)—Score is what the waitlist ranks the record by: Points, the account's referrals and its token usage (GET /v1/leaderboard/beta says how).
sincebodystring—Since is when the record began, as the CRM stamped it; empty with no record.

Failure carries the platform error shape — see Errors.

Examples

hanzo marketing beta actions
import { Configuration, MarketingApi } from 'hanzoai';

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

resp, _, err := client.MarketingAPI.PostMarketingBetaActions(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::post_marketing_beta_actions(&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).postMarketingBetaActions();
curl -X POST https://api.hanzo.ai/v1/marketing/beta/actions \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "action": "<action>",
       "github": "<github>"
     }'

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.