Answers the caller's share links, each with its URL and its funnel: clicks…
Answers the caller's share links, each with its URL and its funnel: clicks tracked, signups — orgs attributed with that code — and conversions, meaning…
GET /v1/affiliate/me/links
| Address | https://api.hanzo.ai/v1/affiliate/me/links |
| Method | GET |
| Operation | get_affiliate_me_links |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Answers the caller's share links, each with its URL and its funnel: clicks tracked, signups — orgs attributed with that code — and conversions, meaning how many of those signups have actually produced commission.
Signups and conversions are DERIVED from the commission ledger and never stored, so they cannot drift from the money. Clicks are the one stored counter and the one that is pure vanity.
Any pending public click pings are folded into the store before the read, in
one batch — which is how the counters stay current without a database write
per click. Scoped to the validated caller's own affiliate; a non-affiliate
gets isAffiliate:false and the link cap.
Request
GET /v1/affiliate/me/links takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | affiliateLinks | ok |
200 body — 11 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
isAffiliate | body | boolean | — | IsAffiliate says whether the caller org has an affiliate record. |
links | body | codeView[] | — | Links is the caller's share links, each with its URL and funnel. |
links[].clicks | body | integer | — | Clicks is how many pings this code has taken. |
links[].code | body | string | — | Code is the link's slug — 3–32 chars of a–z, 0–9 and hyphen — unique across the WHOLE directory, so any affiliate's code resolves an attribution. |
links[].conversions | body | integer | — | Conversions is how many of those signups have actually produced positive commission for the caller. |
links[].createdAt | body | integer | — | CreatedAt is when the link was minted, Unix seconds UTC. |
links[].label | body | string | — | Label is the caller's own note for the link ("twitter", "newsletter"). |
links[].signups | body | integer | — | Signups is how many orgs were attributed with this code — DERIVED by counting attribution edges, never stored, so it cannot drift from the ledger. |
links[].url | body | string | — | URL is the full shareable link, the brand host plus ?aff=<code>. |
maxLinks | body | integer | — | MaxLinks is how many share links one affiliate may hold. |
status | body | string | — | Status is the caller's affiliate status: "applied", "approved" or "suspended"; absent for a non-affiliate. |
Failure carries the platform error shape — see Errors.
Examples
hanzo affiliates me links getimport { Configuration, AffiliateApi } from 'hanzoai';
const api = new AffiliateApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getAffiliateMeLinks();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import AffiliateApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = AffiliateApi(client).get_affiliate_me_links()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.AffiliateAPI.GetAffiliateMeLinks(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, affiliate_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = affiliate_api::get_affiliate_me_links(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.AffiliateApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new AffiliateApi(client).getAffiliateMeLinks();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/affiliate/me/links \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches affiliate through the affiliates tool, which names its 17 operations with its own verbs — this one among them, under a name only the door 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_admin_affiliates"
}
}
}'How is this guide?