API Changelog
History of changes to the FluffyStack API. New releases at the top.
Versioning policy
- All current endpoints live under
/v1/. - Backwards-compatible changes (new endpoints, new optional response fields) bump the minor version (1.x) and do NOT break existing consumers.
- Breaking changes would ship under a new
/v2/prefix. The old/v1/stays live indefinitely. - Bookmark this page to stay up to date with API changes.
v1.2.0
Frontend export gating — all exports now require sign-in (free account). Browsing, searching, comparing, and building service lists remain free.
All export actions on the website now require authentication. This mirrors the API gating: read-only catalogue access is open, but generating downloadable artefacts (SCP, Azure Policy, GCP Org Policy, Terraform, JSON, Markdown, migration target lists) requires a free account. The Service Builder shows a 'Sign in to export' prompt; the Migration Assistant shows a 'Sign in to export' button.
Account page 'What can you do with an API key?' section rewritten to 'What does signing in unlock?' — now accurately reflects both website and API gating.
v1.1.0
OAuth authentication, API key management, rate limiting, and account management.
GitHub and Google OAuth sign-in. Users authenticate via OAuth and receive a persistent API key (flsk_* format) for all gated endpoints.
GET /v1/auth/login/githubGET /v1/auth/login/googleGET /v1/auth/callback/githubGET /v1/auth/callback/googleAccount management endpoints: view profile, reveal API key, rotate key.
GET /v1/auth/mePOST /v1/auth/rotateKV-based rate limiting. Anonymous: 30 req/min by IP. Authenticated: 120 req/min by API key. X-RateLimit-* response headers on every request.
POST endpoints (policies, export, lists) now require an API key via the X-API-Key header. GET endpoints remain open.
POST /v1/policies/aws-scpPOST /v1/policies/azure-policyPOST /v1/policies/gcp-org-policyPOST /v1/export/markdownPOST /v1/listsCORS policy updated: authenticated requests (with API key) are allowed from any origin. Unauthenticated requests still restricted to fluffystack.dev and *.pages.dev.
API keys are generated using nanoid (cryptographically random, 32 chars). JWT session tokens use HMAC-SHA256 with a 64-byte secret and 7-day expiry.
v1.0.0
Initial public API release. Read-only catalogue, policy generation, service list export, and shareable approved lists.
Read-only catalogue endpoints for providers, categories, and services with pagination, search, and filtering.
GET /v1/providersGET /v1/categoriesGET /v1/servicesGET /v1/services/:slugSide-by-side comparison endpoint for up to 10 services.
GET /v1/compare?ids=a,b,cPolicy generation: AWS SCP, Azure Policy, GCP Org Policy from an approved service list.
POST /v1/policies/aws-scpPOST /v1/policies/azure-policyPOST /v1/policies/gcp-org-policyMarkdown export of approved service lists.
POST /v1/export/markdownShareable approved service lists with 90-day auto-expiry.
POST /v1/listsGET /v1/lists/:idHealth check and status endpoints with history tracking.
GET /v1/healthGET /v1/statusGET /v1/status/historyAWS SCP: removed invalid _comment top-level key that caused AWS Organisations to reject the policy. Provenance now carried in the grammar-valid Id field.
Azure Policy: removed policyType (can't be set), changed mode from "Indexed" to "all" (covers all resource types), removed empty parameters object.
GCP Org Policy: removed invalid _comment top-level key that caused the Resource Manager API to reject the policy.
Missing something? Send us feedback