feat.press API docs
feat.press API docs and OpenAPI 3.1 specification for marketplace listings, waitlist intake, license verification, and app entitlements.
feat.press is the affiliate marketplace for products AI helps you build. This page documents the feat.press HTTP API, OpenAPI specification, authentication, entitlement webhooks, license verification, and the feat.press MCP server so agents and app backends can integrate without scraping the UI.
feat.press API docs and OpenAPI 3.1 specification for marketplace listings, waitlist intake, license verification, and app entitlements.
feat.press authentication docs: product-scoped app API keys, Bearer tokens, and buyer license verification without returning PII.
feat.press webhooks docs: HMAC signatures, idempotency, and entitlement lifecycle events for app products.
feat.press MCP server docs: Streamable HTTP JSON-RPC at /mcp, discovery at /.well-known/mcp.json, and resources for agents.
The feat.press OpenAPI 3.1 document is published at /openapi.json. It covers public marketplace reads, waitlist intake, license verification, and authenticated app entitlement endpoints. Marketplace, waitlist, and entitlement errors are JSON { "success": false, "error": "..." }. They are not RFC 9457 problem documents.
Public marketplace reads and license verification do not require an API key.
Merchant-server calls (entitlement lookup, cancel, resume) use the product-scoped feat.press app API key:
Authorization: Bearer feat_sk_live_<key>License keys issued to buyers are verified with POST /api/licenses/verify. Send licenseKey (24 to 120 characters). productId is optional. Buyer PII is never returned. Cancel and resume also require an Idempotency-Key header of 8 to 200 characters.
feat.press sends signed JSON to the HTTPS endpoint you configure on an app product when entitlements change.
feat-signature: t=<unix_seconds>,v1=<hex>feat-event-id (same as payload id)${t}.${rawBody}) with your webhook secret. Reject timestamps older than 300 seconds with HTTP 400. Duplicates must return 200 without side effects. Non-2xx responses are retried up to 3 times. Each attempt times out after 8 seconds.Event types: webhook.test, entitlement.activated, entitlement.renewed, entitlement.updated, entitlement.cancellation_scheduled, entitlement.past_due, entitlement.expired, entitlement.revoked.
Official SDK: npm i @feat-press/node. Use createWebhookRoute for signed webhooks and npx feat-webhook replay to send a sample event.
Streamable HTTP JSON-RPC lives at /mcp. Discovery: /.well-known/mcp.json. The server advertises resources and one tool, get_feat_docs. resources/list returns at least one feat.press document.
Accept: text/markdown or append .md