Submissions
Create a launch draft over HTTP. It cannot publish, pick a plan, pick a week, or pay.
POST /api/v1/submissions/
Requires a bearer token. Scrapes the URL, applies your overrides, validates against the same schema
the browser form uses, and creates a product in draft status owned by your account.
An agent can open a draft. It can never publish a launch.
This endpoint selects no plan, reserves no week, creates no payment and makes nothing public. A human finishes at /submit/plan/, and an admin reviews the listing before it goes live.
Body
urlstringrequiredThe product URL. Every other field is optional and defaults to what the site says about itself.
namestringOverrides the scraped product name.
taglinestringOne line summary.
descriptionstringThe listing body.
categoriesstring[]Up to three. More is a 400.
pricingstringFor example free, freemium or paid.
twitterUsernamestringYour X handle.
targetKeywordstringThe phrase the listing should rank for.
Request
curl -X POST https://nicklaunches.com/api/v1/submissions/ \
-H "Authorization: Bearer $NICKLAUNCHES_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"tagline": "Draft blog posts from a single outline",
"categories": ["AI Writing", "Content"]
}'Response
slugstringSlug of the created draft.
draftUrlstringWhere a human finishes.
warningsstring[]Things that were accepted but adjusted, for example a description shortened to the listing limit.
{
"slug": "example",
"draftUrl": "https://nicklaunches.com/submit/?slug=example",
"warnings": ["Description was shortened to the listing limit."]
}Errors
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHORIZED | Missing, malformed or revoked bearer token. |
| 400 | BAD_REQUEST | Validation failed, for example more than three categories. |
| 403 | FORBIDDEN | Already listed, or inside the relaunch cooldown. The message carries the date. |
| 429 | TOO_MANY_REQUESTS | Too many submissions in a short window. |
Run launch readiness first. Duplicates and a missing backlink badge are the two things that turn into a rejection later, and both are visible before you post anything.
MCP equivalent
submit_product, including the browser pairing flow for clients
that have no token.