Recipe: a launch
A complete request body for a product or book launch: one page, one action, a countdown of steps, everything dated.
A launch page exists for a few weeks and has one job. Everything on it is dated so the page tidies itself when the moment passes.
{
"username": "fieldnotes-app",
"locale": "en",
"page": {
"displayName": "Fieldnotes",
"bio": "A notebook that works offline and syncs when it can. Launching 15 October.",
"templateId": "brutal",
"theme": {
"accent": "#1F1F1F"
},
"blocks": [
{
"type": "link",
"label": "Get it on launch day — join the list",
"url": "https://fieldnotes.example/early",
"featured": true,
"showUntil": "2026-10-15T00:00:00Z"
},
{
"type": "link",
"label": "Download Fieldnotes",
"url": "https://fieldnotes.example",
"featured": true,
"badge": "Out now",
"showFrom": "2026-10-15T00:00:00Z",
"apps": {
"ios": "https://apps.apple.com/app/id000",
"android": "https://play.google.com/store/apps/details?id=app.fieldnotes"
}
},
{
"type": "embed",
"provider": "youtube",
"url": "https://www.youtube.com/watch?v=demo",
"title": "90-second demo"
},
{
"type": "link",
"label": "Press kit",
"url": "https://fieldnotes.example/press"
},
{
"type": "link",
"label": "Product Hunt",
"url": "https://producthunt.com/posts/fieldnotes",
"showFrom": "2026-10-15T00:00:00Z",
"showUntil": "2026-10-22T00:00:00Z"
},
{
"type": "socialRow",
"items": [
{
"platform": "x",
"url": "https://x.com/fieldnotesapp"
},
{
"platform": "bluesky",
"url": "https://bsky.app/profile/fieldnotes.app"
},
{
"platform": "github",
"url": "https://github.com/fieldnotes"
}
]
}
]
}
}Why it is shaped this way
- Two featured links that never overlap: the waiting list until launch, the download from launch —
showUntilandshowFromswap them at midnight. - The download link uses
appsso one button reaches both stores. - A video embed is right here: the demo is the point, and a frame of it says more than a label.
- The Product Hunt link exists for one week and removes itself.
Replace every URL and every word with the person's own. Then POST https://tapmy.link/api/agent/pages, read page.md, hand over.