Create renew

Extends a domain your org already owns and answers the updated record with its new expiry alongside what was paid.

POST /v1/domain/renew

Addresshttps://api.hanzo.ai/v1/domain/renew
MethodPOST
Operationpost_domain_renew
AuthAuthorization: Bearer $HANZO_API_KEY

Extends a domain your org already owns and answers the updated record with its new expiry alongside what was paid.

Ownership is the gate: a name the caller's org does not hold is 404, so a renewal can never reach another tenant's domain.

The price is re-quoted at the CURRENT renewal rate rather than the one paid at purchase. If the registrar returns no renewal price the org's original price is charged instead, so a renewal is never accidentally free. The balance is authorized before the registrar is called and captured after it confirms — 402 when the prepaid balance cannot cover it, 503 when the deployment has no registrar credentials. Requires a validated principal.

Request

2 fields, body application/json (required).

FieldInTypeRequiredDescription
domainbodystringyesDomain is the name to extend.
yearsbodyinteger (int64)—Years is how much longer to hold it, defaulting to 1.

Response

StatusBodyMeaning
200domain.RenewResultok
defaultproblem-detailsrefused

200 body — 10 fields.

FieldInTypeAlwaysDescription
paidCentsbodyinteger (int64)—what this renewal cost, in cents
recordbodydomain.Holding—
record.costCentsbodyinteger (int64)—wholesale cost
record.domainbodystring—the name owned
record.expiresAtbodystring—when the registration lapses, RFC3339
record.nameserversbodystring[]—the authoritative nameservers the name points at
record.orderbodyinteger (int64)—registrar order id
record.orgbodystring—the org that owns the domain
record.priceCentsbodyinteger (int64)—what the customer paid (sell)
record.registeredAtbodyinteger (int64)—unix seconds

Failure carries the platform error shape — see Errors.

Examples

hanzo domain renew --domain <domain>
import { Configuration, DomainApi } from 'hanzoai';

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

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

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

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

let result = domain_api::post_domain_renew(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.DomainApi;

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

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

MCP reaches domain through the domain tool, which names its 7 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": "get_domain_availability"
         }
       }
     }'

Domain API · All Hanzo APIs · Interactive reference

Was this page useful?