API

Programmatic access to ShipFast.Wiki content — products, wiki pages, and more.

Sign in to generate an API key.

Authentication

Pass your key on every request using either method:

# Authorization header (recommended)
curl https://shipfast.wiki/api/v1/products \
  -H "Authorization: Bearer YOUR_API_KEY"
# X-API-Key header
curl https://shipfast.wiki/api/v1/products \
  -H "X-API-Key: YOUR_API_KEY"

Rate Limits

Public key30 requests / minute (~1 every 2s)
Private key120 requests / minute

Exceeding the limit returns 429 Too Many Requests. The window resets every 60 seconds.

Endpoints

Products

GET/api/v1/products
List published products
GET/api/v1/products/:slug
Single product by slug
POST/api/v1/products
privateCreate a product
PATCH/api/v1/products/:slug
privateUpdate a product
DELETE/api/v1/products/:slug
privateDelete a product

Wiki Pages

GET/api/v1/wiki
List published wiki pages
GET/api/v1/wiki/:slug
Single page by slug
POST/api/v1/wiki
privateCreate a wiki page
PATCH/api/v1/wiki/:slug
privateUpdate a wiki page
DELETE/api/v1/wiki/:slug
privateDelete a wiki page

All list endpoints accept optional query params: ?category=, ?tag=, ?limit= (max 100, default 50).

Examples

List products in a category

curl "https://shipfast.wiki/api/v1/products?category=Developer+Tooling&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Get a single wiki page

curl "https://shipfast.wiki/api/v1/wiki/the-3-2-1-backup-rule-for-ai-coders" \
  -H "Authorization: Bearer YOUR_API_KEY"

Create a wiki page (private key)

curl -X POST "https://shipfast.wiki/api/v1/wiki" \
  -H "Authorization: Bearer YOUR_PRIVATE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My New Page",
    "summary": "A short summary.",
    "content": "Full markdown content here.",
    "category": "Workflows",
    "tags": ["productivity"],
    "logoUrl": "https://example.com/logo.png",
    "authorHandle": "someuser",
    "status": "published"
  }'

Create a product (private key)

curl -X POST "https://shipfast.wiki/api/v1/products" \
  -H "Authorization: Bearer YOUR_PRIVATE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Product",
    "description": "Short description.",
    "longDescription": "Full details here.",
    "category": "Developer Tooling",
    "logoUrl": "https://example.com/logo.png",
    "websiteUrl": "https://myproduct.com",
    "githubUrl": "https://github.com/user/repo",
    "screenshots": ["https://example.com/s1.png"],
    "builtWith": ["Next.js", "Supabase"],
    "tags": ["ai", "productivity"],
    "ownerHandle": "someuser",
    "trustMrrSlug": "my-product",
    "status": "published"
  }'

Response shape

// Success
{ "data": { ... }, "count": 42 }

// Error
{ "error": "Invalid or disabled API key." }