Create routes

Creates or replaces one routing rule and hot-applies the new table — there is no config file and no restart.

POST /v1/ingress/routes

Addresshttps://api.hanzo.ai/v1/ingress/routes
MethodPOST
Operationpost_ingress_routes
AuthAuthorization: Bearer $HANZO_API_KEY

Creates or replaces one routing rule and hot-applies the new table — there is no config file and no restart. POST mints an id when the body omits one; PUT takes the id from the URL, which wins over any id in the body. A route's host is a GLOBALLY unique DNS claim: a host another org's route already holds is refused 409, so no tenant can hijack another's hostname.

Request

7 fields, body application/json (required).

FieldInTypeRequiredDescription
hostbodystring—Host is the exact hostname this route matches, lowercased with any trailing dot stripped.
idbodystring—ID identifies the route within the org: [A-Za-z0-9-_.], at most 128 chars.
middlewaresbodystring[]—Middlewares are the ids of the edge transforms to apply, in this order, before the request reaches the service.
pathPrefixbodystring—PathPrefix narrows the match to requests under this path; it must start with "/".
prioritybodyinteger (int64)—Priority orders routes that share a host: higher wins, and equal priorities fall back to the longer PathPrefix.
servicebodystring—Service is the id of the backend pool this route dispatches to.
tlsbodyboolean—TLS asks the edge to terminate TLS for Host with an ACME-managed certificate.

Response

StatusBodyMeaning
200ingress.Routeok
defaultproblem-detailsrefused

200 body — 7 fields.

FieldInTypeAlwaysDescription
hostbodystring—Host is the exact hostname this route matches, lowercased with any trailing dot stripped.
idbodystring—ID identifies the route within the org: [A-Za-z0-9-_.], at most 128 chars.
middlewaresbodystring[]—Middlewares are the ids of the edge transforms to apply, in this order, before the request reaches the service.
pathPrefixbodystring—PathPrefix narrows the match to requests under this path; it must start with "/".
prioritybodyinteger (int64)—Priority orders routes that share a host: higher wins, and equal priorities fall back to the longer PathPrefix.
servicebodystring—Service is the id of the backend pool this route dispatches to.
tlsbodyboolean—TLS asks the edge to terminate TLS for Host with an ACME-managed certificate.

Failure carries the platform error shape — see Errors.

Examples

hanzo ingress routes create
import { Configuration, IngressApi } from 'hanzoai';

const api = new IngressApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postIngressRoutes({ host: "<host>", id: "<id>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import IngressApi

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

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

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

let result = ingress_api::post_ingress_routes(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.IngressApi;

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

var result = new IngressApi(client).postIngressRoutes();
curl -X POST https://api.hanzo.ai/v1/ingress/routes \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "host": "<host>",
       "id": "<id>"
     }'

MCP reaches ingress through the ingress tool, which names its 18 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_ingress_middlewares"
         }
       }
     }'

Ingress API · All Hanzo APIs · Interactive reference

Was this page useful?