Skip to content

curl / direct HTTP

The Hee API is plain REST over HTTPS. Every endpoint is callable with curl. Use this when:

  • Your language doesn’t have an official SDK yet
  • You’re testing or debugging
  • You prefer shell scripts over npm packages

All endpoints use HTTP Bearer authentication. Set your token once:

Terminal window
export HEE_API_TOKEN="hee_0000000000000000000000000000000000000000000000000000000000000000"
export HEE_API_URL="https://api.hee.la"
Terminal window
curl -X POST "$HEE_API_URL/v1/edge/domains" \
-H "Authorization: Bearer $HEE_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"hostname": "docs.customer.com",
"metadata": { "workspaceId": "ws_abc123" }
}'
Terminal window
curl "$HEE_API_URL/v1/edge/domains" \
-H "Authorization: Bearer $HEE_API_TOKEN" | jq .
Terminal window
curl -X DELETE "$HEE_API_URL/v1/edge/domains/docs.customer.com" \
-H "Authorization: Bearer $HEE_API_TOKEN" \
-w "HTTP %{http_code}\n"
# HTTP 204
Terminal window
curl "$HEE_API_URL/v1/edge/resolve?hostname=docs.customer.com" \
-H "Authorization: Bearer $HEE_API_TOKEN" | jq .

Returns the domain record with projectSlug, upstreamUrl, and your stored metadata. Use this from your upstream app to route multi-tenant requests.

Terminal window
curl "$HEE_API_URL/healthz"
# {"status":"ok"}

The API shapes are stable and typed. Every endpoint returns JSON. Recipe for a minimal client in any language:

  1. Set Authorization: Bearer <token> and Content-Type: application/json.
  2. JSON-encode the body for POST / PATCH.
  3. Parse JSON response.
  4. Check HTTP status — 2xx OK, 4xx your fault, 5xx our fault.

Nothing stateful. No OAuth dance. No polling required.

The control plane API itself isn’t rate-limited today (Phase 2 adds per-project 100 req/s limits). The underlying Let’s Encrypt issuance follows their rate limits — 50 certs per week per registered domain.