Skip to content
Home
Business OS Blog How it works Hosting Compare
Language
العربية Coming soon
বাংলা Coming soon
Dansk Coming soon
Deutsch Coming soon
Español Coming soon
Suomi Coming soon
Français Coming soon
עברית Coming soon
हिन्दी Coming soon
Magyar Coming soon
Bahasa Indonesia Coming soon
Italiano Coming soon
한국어 Coming soon
Latviešu Coming soon
Nederlands Coming soon
Norsk Coming soon
Polski Coming soon
Português Coming soon
Српски Coming soon
Svenska Coming soon
Türkçe Coming soon
Українська Coming soon
中文 Coming soon
Currency

Site routes

Which hostname serves which folder. The hostname must be, or sit under, a domain connected to that business. HTTPS is issued automatically.

List hostnames

GET/businesses/{business}/routes

Every published hostname and where it points.

Needs the routes:read scope.

Parameters

business integer, in path, required
The business id, from GET /businesses.
curl "https://helstify.com/api/v1/businesses/60/routes" \
  -H "Authorization: Bearer $HELSTIFY_KEY"
const res = await fetch("https://helstify.com/api/v1/businesses/60/routes", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://helstify.com/api/v1/businesses/60/routes",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
)
print(res.json())
Response200
{
    "routes": [
        {
            "hostname": "shop.northwind.coffee",
            "status": "live",
            "url": "https://shop.northwind.coffee",
            "error": null,
            "live_since": "2026-10-30T12:04:00+00:00"
        }
    ]
}

Publish a hostname

POST/businesses/{business}/routes

Serve a hostname from this business. Poll the list until its status is live.

Needs the routes:write scope.

Parameters

business integer, in path, required
The business id, from GET /businesses.

Body

hostname string
For example shop.northwind.coffee
curl -X POST "https://helstify.com/api/v1/businesses/60/routes" \
  -H "Authorization: Bearer $HELSTIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hostname":"shop.northwind.coffee"}'
const res = await fetch("https://helstify.com/api/v1/businesses/60/routes", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
      "hostname": "shop.northwind.coffee"
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://helstify.com/api/v1/businesses/60/routes",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    json={
        "hostname": "shop.northwind.coffee"
    },
)
print(res.json())
Response201
{
    "route": {
        "hostname": "shop.northwind.coffee",
        "status": "pending",
        "url": "https://shop.northwind.coffee",
        "error": null,
        "live_since": null
    },
    "note": "Serving is being set up. Poll GET /routes until status is \"live\"."
}

Unpublish a hostname

DELETE/businesses/{business}/routes/{hostname}

Takes that hostname offline.

Needs the routes:write scope.

Parameters

business integer, in path, required
The business id, from GET /businesses.
hostname string, in path, required
e.g. shop.northwind.coffee
curl -X DELETE "https://helstify.com/api/v1/businesses/60/routes/shop.northwind.coffee" \
  -H "Authorization: Bearer $HELSTIFY_KEY"
const res = await fetch("https://helstify.com/api/v1/businesses/60/routes/shop.northwind.coffee", {
  method: "DELETE",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
  },
});
const data = await res.json();
import os, requests

res = requests.delete(
    "https://helstify.com/api/v1/businesses/60/routes/shop.northwind.coffee",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
)
print(res.json())
Response200
{
    "ok": true
}