Skip to content
Get started

Create ingress

post/ingresses

Create ingress

Body ParametersExpand Collapse
name: string

Human-readable name (lowercase letters, digits, and dashes only; cannot start or end with a dash)

maxLength63
rules: array of IngressRule { match, target, redirect_http, tls }

Routing rules for this ingress

match: IngressMatch { hostname, port }
hostname: string

Hostname to match. Can be:

  • Literal: "api.example.com" (exact match on Host header)
  • Pattern: "{instance}.example.com" (dynamic routing based on subdomain)

Pattern hostnames use named captures in curly braces (e.g., {instance}, {app}) that extract parts of the hostname for routing. The extracted values can be referenced in the target.instance field.

port: optional number

Host port to listen on for this rule (default 80)

target: IngressTarget { instance, port }
instance: string

Target instance name, ID, or capture reference.

  • For literal hostnames: Use the instance name or ID directly (e.g., "my-api")
  • For pattern hostnames: Reference a capture from the hostname (e.g., "{instance}")

When using pattern hostnames, the instance is resolved dynamically at request time.

port: number

Target port on the instance

redirect_http: optional boolean

Auto-create HTTP to HTTPS redirect for this hostname (only applies when tls is enabled)

tls: optional boolean

Enable TLS termination (certificate auto-issued via ACME).

ReturnsExpand Collapse
Ingress = object { id, created_at, name, rules }
id: string

Auto-generated unique identifier

created_at: string

Creation timestamp (RFC3339)

formatdate-time
name: string

Human-readable name

rules: array of IngressRule { match, target, redirect_http, tls }

Routing rules for this ingress

match: IngressMatch { hostname, port }
hostname: string

Hostname to match. Can be:

  • Literal: "api.example.com" (exact match on Host header)
  • Pattern: "{instance}.example.com" (dynamic routing based on subdomain)

Pattern hostnames use named captures in curly braces (e.g., {instance}, {app}) that extract parts of the hostname for routing. The extracted values can be referenced in the target.instance field.

port: optional number

Host port to listen on for this rule (default 80)

target: IngressTarget { instance, port }
instance: string

Target instance name, ID, or capture reference.

  • For literal hostnames: Use the instance name or ID directly (e.g., "my-api")
  • For pattern hostnames: Reference a capture from the hostname (e.g., "{instance}")

When using pattern hostnames, the instance is resolved dynamically at request time.

port: number

Target port on the instance

redirect_http: optional boolean

Auto-create HTTP to HTTPS redirect for this hostname (only applies when tls is enabled)

tls: optional boolean

Enable TLS termination (certificate auto-issued via ACME).

Create ingress
curl http://localhost:8080/ingresses \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $HYPEMAN_API_KEY" \
    -d '{
          "name": "my-api-ingress",
          "rules": [
            {
              "match": {
                "hostname": "{instance}.example.com"
              },
              "target": {
                "instance": "{instance}",
                "port": 8080
              }
            }
          ]
        }'
{
  "id": "2OgJqXsP7j1qLVVYvGJDNiYVlPO",
  "created_at": "2025-01-15T10:00:00Z",
  "name": "my-api-ingress",
  "rules": [
    {
      "match": {
        "hostname": "{instance}.example.com",
        "port": 8080
      },
      "target": {
        "instance": "{instance}",
        "port": 8080
      },
      "redirect_http": true,
      "tls": true
    }
  ]
}
Returns Examples
{
  "id": "2OgJqXsP7j1qLVVYvGJDNiYVlPO",
  "created_at": "2025-01-15T10:00:00Z",
  "name": "my-api-ingress",
  "rules": [
    {
      "match": {
        "hostname": "{instance}.example.com",
        "port": 8080
      },
      "target": {
        "instance": "{instance}",
        "port": 8080
      },
      "redirect_http": true,
      "tls": true
    }
  ]
}