Put up a page
Say "put up a page" and get a home page live on a free address in minutes, with terms, privacy, your Brand and HTTPS.
For developers
Get a page live tonight on a free address, under your Brand. Move it to your own Domain whenever you buy one.
For developers
Needs Startup
What you get
- 1free address, yours until you release itDomain
- 1home page: headline, promise and one call to actionPage
- 2pages for terms and privacyPage
- 1logo, colors and type from your BrandBrand
- 1certificate, so it serves over HTTPSDomain
- 1Markdown copy of every page and an llms.txt, for agentsSite
- 1count of visits from the first viewVisit
Your agent does
You, to your agent
Put up a page.
Launch a landing page tonight.
Make me a landing page on a free address.
# Look up the Startup: Startup.list
STARTUP= $(curl "https: //api.sb/ leaseline.app/ startups? limit= 1" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" | jq -r '.startups[0]["$id"] | split("/ ") | last')
# 1. Domain.claim
curl -X POST https: //api.sb/ leaseline.app/ domains/ claim \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"hostname": "leaseline.headless.ly", "startup": "'"$STARTUP"'"}'
# Look up the Site: Site.list
SITE= $(curl "https: //api.sb/ leaseline.app/ sites? limit= 1" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" | jq -r '.sites[0]["$id"] | split("/ ") | last')
# 2. Site.publish
curl -X POST https: //api.sb/ leaseline.app/ sites/ $SITE/ publish \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'
const [startup] = await $.Startup.list({ limit: 1 })
await $.Domain.claim({ hostname: 'leaseline.headless.ly', startup: startup.$id })
const [site] = await $.Site.list({ limit: 1 })
await $.Site.publish({ site: site.$id })
STARTUP= $(npx startup-builder do Startup.list --json '{"limit": 1}' | jq -r '.startups[0]["$id"] | split("/ ") | last')
npx startup-builder do Domain.claim --json '{"hostname": "leaseline.headless.ly", "startup": "'"$STARTUP"'"}'
SITE= $(npx startup-builder do Site.list --json '{"limit": 1}' | jq -r '.sites[0]["$id"] | split("/ ") | last')
npx startup-builder do Site.publish --json '{"site": "'"$SITE"'"}'
{
"name": "do",
"arguments": {
"code": "const [startup] = await $.Startup.list({ limit: 1 })\nawait $.Domain.claim({ hostname: 'leaseline.headless.ly', startup: startup.$id })\nconst [site] = await $.Site.list({ limit: 1 })\nreturn await $.Site.publish({ site: site.$id })"
}
}
The same sentence does more as the business grows:
| State | Calls | Asks first |
|---|---|---|
| Idea | Domain.claim, Site.publish | Who is it for, and what does it fix, in one line? |
| Building | Domain.connect, Site.publish | Move it to your own domain now? |
| Live | Content.draft, Content.publish | A new page, or a change to the home page? |
Change it
- Make the headline shorter.
- Add a pricing section.
- Put it on leaseline.app.
- Add a waitlist to it.
Under the hood
- Systems
- Sites, CMS, Product analytics
- Nouns
- Site, Page, Brand, Domain, Visit
- Events
Domain.claimed,Site.published
Domain.claim gives the Startup one label under an issuing Domain, free. Site.publish puts the Site live there, and every page has a Markdown copy that agents read.