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

urlstringrequired

The 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

urlstring

The URL that was actually fetched, after redirects.

scorenumber

A 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.

suggestedListingobject

A 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_REQUEST

Missing 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_REQUESTS

More 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.

Was this page helpful?