Deploying
Query params: ttl & name
The deploy endpoint takes two optional query parameters — one
controls how long a drop lives, the other gives it a stable alias.
They're independent and combine freely:
POST https://hurl.page/deploy?ttl=3600&name=pr-42. Everything else about the request stays exactly as in the
Quickstart.
?ttl=<seconds>
Sets the drop's time-to-live in whole seconds, counted from the
moment the deploy lands. So
?ttl=900
publishes a drop that disappears after fifteen minutes — handy for
one-look shares.
- Minimum
-
60seconds. Anything lower is rejected — see Errors. - Free plan
-
Capped at 7 days (
604800). Larger values are rejected with a 400 — going past 7 days needs a subscription. - Subscribers
- Any value above the minimum — minutes, months, or years.
- Omitted
- Free drops expire after the default 7 days; subscriber drops never expire.
?name=<alias>
Instead of a random slug, the drop mounts at a name you choose — an address you can keep deploying to. PR previews, a living changelog, a status page: same URL, fresh content.
- Availability
- Subscriber-only — the request must carry an API key, see Authentication. Anonymous deploys always get a random slug.
- Format
-
1–41 characters of
[a-z0-9-], starting with a letter or digit. The odd cap keeps the combined subdomain label inside DNS's 63-character limit. - Reserved
-
--may not appear anywhere in the alias — the double hyphen is the separator between your vanity subdomain and the name. - Redeploys
- Posting again with the same name replaces the content in place. The URL stays exactly the same.
With the vanity subdomain
acme
claimed, a deploy named
pr-42
lands here:
curl -X POST "https://hurl.page/deploy?name=pr-42" \
-H "Authorization: Bearer hp_QffDmo0u…" \
-H "Content-Type: text/html" \
--data-binary @preview.html
# with the vanity sub "acme" claimed, this serves at:
# https://acme--pr-42.hurled.page/
Last updated Jun 12, 2026