Product Hunt
Your agents schedule your launch as the maker, post the first comment at 12:01 am Pacific, and answer every comment through the day.
- Connect
- Sign in once, 1 grant
- Runs through
- A browser agent
- First run
- Watch your launch’s rank and comments for one day, free
- Sites
- Product Hunt
Queue my Product Hunt launch for Tuesday and show me the page it will make.
curl -X POST "https: //api.sb/ leaseline.app/ posts/ schedule? mode= try" \
-H "Authorization: Bearer $SB_TOKEN" \
-H "Content-Type: application/ json" \
-d '{"handle": "product-hunt: dana", "title": "Leaseline", "body": "Rent and renewal tracking for property managers", "media": ["files/ ph-thumbnail", "files/ ph-gallery-1", "files/ ph-gallery-2", "files/ ph-gallery-3"], "publishAt": "2026-11-03T08: 01: 00Z"}'
npx startup-builder do Post.schedule --try --data '{"handle": "product-hunt: dana", "title": "Leaseline", "body": "Rent and renewal tracking for property managers", "media": ["files/ ph-thumbnail", "files/ ph-gallery-1", "files/ ph-gallery-2", "files/ ph-gallery-3"], "publishAt": "2026-11-03T08: 01: 00Z"}'
{
"name": "do",
"arguments": {
"mode": "try",
"code": "return await $.Post.schedule({ handle: 'product-hunt: dana', title: 'Leaseline', body: 'Rent and renewal tracking for property managers', media: ['files/ ph-thumbnail', 'files/ ph-gallery-1', 'files/ ph-gallery-2', 'files/ ph-gallery-3'], publishAt: '2026-11-03T08: 01: 00Z' })"
}
}
import { $ } from 'startup-builder'
const result = await $.try.Post.schedule({ handle: 'product-hunt: dana', title: 'Leaseline', body: 'Rent and renewal tracking for property managers', media: ['files/ ph-thumbnail', 'files/ ph-gallery-1', 'files/ ph-gallery-2', 'files/ ph-gallery-3'], publishAt: '2026-11-03T08: 01: 00Z' })
{
"$type": "Post",
"mode": "try",
"stored": false,
"venue": "product-hunt",
"status": "scheduled",
"name": "Leaseline",
"tagline": "Rent and renewal tracking for property managers",
"taglineLength": 47,
"goesLive": "2026-11-03T08: 01: 00Z",
"goesLiveLocal": "Tuesday, Nov 3, 2: 01 am Central",
"firstComment": "drafted, waiting for your approval",
"runsBy": "browser",
"steps": 11
}
Connect once
- Call
Integration.connectwithsystem:and'social' venue:; a browser window opens on producthunt.com.'product-hunt' - Sign in as the maker who will launch. The session is saved to your browser profile.
- Call
Handle.connectto bind the maker account as your account.
| Grant | What it unlocks | Scope |
|---|---|---|
| Your saved session | The launch form, the first comment and your replies, as the maker | browser session: |
| To | Do this |
|---|---|
| Pause | Integration.pause holds every run that needs your Product Hunt session; the session stays saved. |
| Reconnect | Integration.reconnect opens a browser window where you sign in to Product Hunt once more; the saved session replaces the old one. |
| Disconnect | Integration.revoke deletes the saved Product Hunt session; every Post and reply it made stays in your records. |
What your agents do
| Ask | Verb | Runs through | Price |
|---|---|---|---|
| Schedule my launch for Tuesday with the gallery, the tagline and the first comment, signed in as me. | Post.schedule | A browser agent | About 1.6¢ a step |
| Answer each comment I approve, signed in as me. | Conversation.answer | A browser agent | About 1.6¢ a step |
Calls on your own account are free.
Reading this site’s public data needs no account: Monitor.create is a Data call (the three ways a call runs).
What it holds
| Noun | The account’s object | When | Which side leads |
|---|---|---|---|
| Post | launch | Your agent schedules the launch | The account |
| Message | comment | Someone comments, or your agent posts your reply | The account |
| Prospect | commenter | A commenter who fits asks a question or signs up | Your records |
Events and webhooks
| Direction | Event |
|---|---|
| Emits | Post.scheduled, Post.published, Message.created, Monitor.checked |
Any Event can wake a Workflow, and a Watch delivers it to your endpoint, signed (Events and webhooks).
Limits
| What | Limit | Call |
|---|---|---|
| Launch time | Launches go live at 12:01 am Pacific and the day’s ranking runs to midnight Pacific, so the agent schedules for 12:01 am | Post.schedule |
| Vote asks | Your agent asks your list for feedback, never for upvotes | Every call |
| Replies | Every comment gets a drafted answer within 30 minutes for the first 6 hours | Every call |
Field map
| Our field | Product Hunt’s field | Notes | Calls |
|---|---|---|---|
Post.title | name | None. | Post.schedule |
Post.body | tagline | 60 characters: what it does and for whom | Post.schedule |
Post.media | thumbnail and gallery | A square 240 × 240 thumbnail; the first gallery image is the link preview | Post.schedule |
Post.publishAt | launch date | Product Hunt takes a day, and the launch goes live at 12:01 am Pacific that day | Post.schedule |
What try does here
Returns the launch page as Product Hunt will show it, with the time it goes live in your time zone; nothing is scheduled.
How long a connection lasts
A connection lasts as long as the site keeps your saved session signed in; the platform checks the session before every run.
The platform asks you to reconnect 7 days before it runs out; until you do, a call that needs it refuses with needs-reauth.
Formats
| Site | Format | Size | Limits |
|---|---|---|---|
| Product Hunt | Launch | None. | Tagline 60 characters; a square 240 × 240 thumbnail |
Plays and strategies
| Kind | Where |
|---|---|
| Plays | Launch sites, Launch week, Category kit, Build in public |
| Strategies | Launch and search |
Used by
- Agent tasks: Launch day
Reference
2 calls, each with its path and price
| Call | Path | Price |
|---|---|---|
Post.schedule | POST / | About 1.6¢ a step |
Conversation.answer | POST / | About 1.6¢ a step |