Laurent Maxhuni Portfolio API

Laurent Maxhuni Portfolio API.

A versioned, read-only API for the public blog.

The public API, backed by Payload CMS, exposes published blog posts as JSON. Its access policy filters out drafts, so readers receive only content released on the portfolio. Use it when you need post titles, excerpts, Markdown content, tags, publication dates, and pagination metadata without scraping the site.

Endpoint

GET /api/v1/posts lists published posts. It accepts typed limit (1–100) and page (one-based) query parameters for pagination. The unversioned /api/posts path remains a compatibility alias for existing clients. Write, delete, and administrative operations are outside this public contract and require the private CMS administration area.

Errors, versioning, and rate limits

Send X-API-Version: 1 when a client wants to state its contract explicitly; responses include API-Version: 1. All documented failures use application/problem+json with RFC 9457 fields plus a stable machine-readable code and human-readable message. Every response includes RateLimit-Policy, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, and RateLimit. A 429 response includes Retry-After. The current quota is 60 requests per client per 60-second window.

Versioning and deprecation policy

/api/v1/posts is the stable, canonical URL-versioned contract. The unversioned /api/posts URL is a compatibility alias for existing clients; new integrations should use v1. If a resource is scheduled for retirement, responses will include RFC 9745 Deprecation: @<unix-seconds>, RFC 8594 Sunset: <HTTP-date>, and a Link header with rel="deprecation". The versioning policy page publishes the replacement, migration timeline, and retirement dates before removal. No endpoint is currently scheduled for deprecation.

Use the OpenAPI 3.1 document for the machine-readable schema. Use the blog for human-oriented reading, or request the archive with Accept: text/markdown for Markdown.