Overview

Base URL, versioning, content types, authentication and the full endpoint list for the Nick Launches REST API.

The REST API covers the same ground as the MCP server, for callers that are not MCP clients: scripts, CI jobs, and anything that already speaks HTTP.

https://nicklaunches.com/api/v1/

An OpenAPI document is published at https://nicklaunches.com/api/v1/openapi.json. It is generated from the same schemas the handlers validate against, so it cannot drift from the implementation.

Endpoints

MethodPathAuth
GET/api/v1/products/None
GET/api/v1/products/{slug}/None
GET/api/v1/directories/None
POST/api/v1/launch-readiness/None, rate limited
POST/api/v1/submissions/Bearer
GET/api/v1/me/launches/Bearer

Conventions

Trailing slashesrequired

The site sets trailingSlash: true. /api/v1/products answers with a 308 to /api/v1/products/. Most HTTP clients follow that on a GET and quietly drop the body on a POST, so always send the slashed form.

Content typeapplication/json

Requests with a body send Content-Type: application/json. Every response is JSON.

Versioningpath

The version lives in the path. Breaking changes arrive as /api/v2/, they never change the meaning of a field under /api/v1/.

CORSanonymous reads only

The anonymous GET endpoints answer with Access-Control-Allow-Origin: *, so they can be called from a browser. Authenticated endpoints do not, because a bearer token has no business being in front end code.

Authentication

Reads need nothing. Writes need a bearer token, which you get once from the approval page described in Authentication. There is no key creation screen and no client secret.

curl -X POST https://nicklaunches.com/api/v1/submissions/ \
  -H "Authorization: Bearer nl_ct_your_token" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

The token is shown once and only its hash is stored. If you lose it, revoke the connection at /profile/connections/ and pair again.

Directories

GET /api/v1/directories/

The vetted launch directory catalog. Anonymous.

limit1-100default: 25

How many directories to return.

curl "https://nicklaunches.com/api/v1/directories/?limit=50"

Your launches

GET /api/v1/me/launches/

Every launch on the account the token belongs to, drafts included. Takes no parameters and never returns anyone else's products.

curl https://nicklaunches.com/api/v1/me/launches/ \
  -H "Authorization: Bearer nl_ct_your_token"

Errors

Errors carry the same codes as the MCP tools, so one table covers both transports: UNAUTHORIZED, FORBIDDEN, NOT_FOUND, BAD_REQUEST, TOO_MANY_REQUESTS, INTERNAL_SERVER_ERROR. See Errors for the HTTP status each maps to.

What the API will not do

There is no endpoint that publishes a launch, selects a plan, reserves a week or takes a payment. POST /api/v1/submissions/ creates a draft and stops. A human finishes at /submit/plan/ and an admin reviews before anything goes live.

Was this page helpful?