Launch readiness
Audit any URL over HTTP before you submit it. Same audit as the MCP tool.
POST /api/v1/launch-readiness/
Anonymous, rate limited to ten calls per hour. Read only: it crawls the URL and reports, it creates nothing.
Body
urlstringrequiredThe product URL to audit. Bare hosts are normalised to https://. The site has to be publicly reachable.
Request
curl -X POST https://nicklaunches.com/api/v1/launch-readiness/ \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'Response
urlstringThe URL that was actually fetched, after redirects.
scorenumberA 0 to 100 summary of the checks. The checks are what you act on.
checksobject[]id, label, status (pass, warn or fail), detail, and fix when there is something to do. Covers the
backlink badge, duplicate and relaunch eligibility, listing completeness and site metadata.
suggestedListingobjectA draft name, tagline, description and pricing, generated from the site.
suggestedCategoriesstring[]Up to three categories.
nextFreeWeeksobject[]Upcoming launch weeks that still have slots.
{
"url": "https://example.com",
"score": 68,
"checks": [
{
"id": "badge",
"label": "Backlink badge",
"status": "fail",
"detail": "No link to Nick Launches detected.",
"fix": "Add the badge snippet to your homepage, then rerun the check."
},
{
"id": "duplicate",
"label": "Duplicate check",
"status": "pass",
"detail": "No existing listing matches this URL."
}
],
"suggestedListing": {
"name": "Example",
"tagline": "Draft blog posts from a single outline",
"description": "Example turns an outline into a finished draft...",
"pricing": "freemium"
},
"suggestedCategories": ["AI Writing", "Content", "Productivity"],
"nextFreeWeeks": [{ "week": "2026-08-10", "slotsLeft": 4 }]
}A two step script
Audit, then submit only if nothing failed:
readiness=$(curl -s -X POST https://nicklaunches.com/api/v1/launch-readiness/ \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}')
if echo "$readiness" | jq -e '.checks[] | select(.status == "fail")' > /dev/null; then
echo "Fix these first:"
echo "$readiness" | jq -r '.checks[] | select(.status == "fail") | "- \(.label): \(.fix // .detail)"'
exit 1
fi
curl -X POST https://nicklaunches.com/api/v1/submissions/ \
-H "Authorization: Bearer $NICKLAUNCHES_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'Errors
400 BAD_REQUESTMissing or malformed url, or a site that could not be fetched. The message names the reason: timeout, non 200
status, or an anti bot challenge that a server side crawl cannot pass.
429 TOO_MANY_REQUESTSMore than ten audits in an hour from the same connection or IP. The audit performs an outbound crawl and a model call, which is why it is metered tightly. See Rate limits.
MCP equivalent
check_launch_readiness, which has a full worked example
and a breakdown of every check.