Claim referral

Records that the caller's org signed up through a referral code.

POST /v1/referral/claim

Addresshttps://api.hanzo.ai/v1/referral/claim
MethodPOST
Operationpost_referral_claim
AuthAuthorization: Bearer $HANZO_API_KEY

Records that the caller's org signed up through a referral code.

The REFEREE is the validated caller, never a client field, and the referrer is resolved from the code — so a caller can only ever attach THEMSELVES to someone else's code. Referring yourself is 400 and an unknown code is 404.

It is idempotent and first-touch: an org can be referred once, ever. A repeat call returns the referral already on file with created=false and 200, where the first call answers 201.

Recording a referral grants nothing, and neither does anything downstream of it: the edge later advances to qualified when the referee makes metered spend (POST /v1/admin/referral/sweep), and that is the end of it. No credit is ever issued from this package.

Request

1 field, body application/json (required).

FieldInTypeRequiredDescription
codebodystring—Code is the referrer's referral code, as it appeared in their ?ref= link.

Response

StatusBodyMeaning
200referral.claimViewok
defaultproblem-detailsrefused

200 body — 5 fields.

FieldInTypeAlwaysDescription
codebodystring—Code is the referral code the referral was recorded against.
createdbodyboolean—Created is true when this call recorded the referral and false when it found one already recorded for this referee — the idempotent replay.
createdAtbodyinteger (int64)—CreatedAt is when the referral was first recorded, as a Unix timestamp.
idbodystring—ID is the referral's handle.
statusbodystring—Status is the referral's lifecycle state: "signup" until the referee makes metered spend, then "qualified", then "credited".

Failure carries the platform error shape — see Errors.

Examples

hanzo referral claim
import { Configuration, ReferralApi } from 'hanzoai';

const api = new ReferralApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postReferralClaim({ code: "<code>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ReferralApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ReferralApi(client).post_referral_claim(code="<code>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

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

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

let result = referral_api::post_referral_claim(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ReferralApi;

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

var result = new ReferralApi(client).postReferralClaim();
curl -X POST https://api.hanzo.ai/v1/referral/claim \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "code": "<code>"
     }'

MCP reaches referral through the referral tool, which names its 2 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_referrals"
         }
       }
     }'

Referral API · All Hanzo APIs · Interactive reference

Was this page useful?