Skip to content
Dashboard
Menu Deploying · Query params: ttl & name

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
60 seconds. 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:

bash
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/