Skip to content

Subdomains

Every Invoker deployment gets a unique subdomain on invoker.page. This page explains how subdomain routing works.

URL structure

When you deploy a page, it becomes available at:

https://{slug}.invoker.page

For example, deploying with the slug my-waitlist produces:

https://my-waitlist.invoker.page

Custom vs auto-generated slugs

Custom slugs

You can specify a slug at deploy time. Slugs must be:

  • Lowercase letters, numbers, and hyphens only
  • No leading or trailing hyphens
bash
curl -X POST https://api.invoker.page/deploy \
  -H "Authorization: Bearer inv_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "html": "<h1>Hello</h1>",
    "slug": "acme-launch"
  }'

Result: https://acme-launch.invoker.page

Auto-generated slugs

If you omit the slug field, Invoker generates one automatically. Auto-generated slugs are short random strings.

json
{
  "id": "d_abc123",
  "url": "https://kf7x2m.invoker.page",
  "slug": "kf7x2m"
}

How routing works

Subdomain routing relies on two pieces of infrastructure:

Wildcard DNS

A wildcard DNS record on *.invoker.page points all subdomains to the Cloudflare Worker. Any request to anything.invoker.page reaches the same worker.

Worker routing

When the Cloudflare Worker receives a request, it:

  1. Extracts the subdomain from the Host header (e.g., my-waitlist from my-waitlist.invoker.page)
  2. Looks up {slug}/index.html in Cloudflare KV
  3. If found, serves the HTML with appropriate headers
  4. If not found, returns a 404 page
Request: GET https://my-waitlist.invoker.page/
    -> Host: my-waitlist.invoker.page
    -> Slug: my-waitlist
    -> KV lookup: my-waitlist/index.html
    -> Serve HTML

Reserved subdomains

The following subdomains are reserved and cannot be used as deployment slugs:

SubdomainPurpose
apiAPI endpoint (api.invoker.page)
docsDocumentation site (docs.invoker.page)
wwwMain website (www.invoker.page)

Attempting to deploy with a reserved slug returns a 400 error.

Legacy path routing

For backward compatibility, deployments are also accessible via path-based URLs:

https://invoker.page/s/{slug}

This redirects to the subdomain URL. New integrations should use the subdomain format directly.

Deploy forms and sites from AI conversations.