Skip to main content
WritingSpeakingCodeAboutNow
Pillar

API Design

How APIs outgrow the design they shipped with, and what to fix first.

43 articles · 436 minutes of reading

Most APIs are not badly built. They were built once, correctly, for a product that then changed underneath them. The endpoint everyone complains about is rarely slow because of the code inside it. It is slow because it is still answering a question nobody asks any more, and three clients now depend on the shape of that answer.

Which is why I do not open with a rewrite. I find the call that is actually costing you, which is almost never the one the dashboard is shouting about, and stabilise that one first. Contracts before code. Get the shape wrong and faster only means wrong sooner.

What is here: versioning that does not need a v2, validating data you did not design and cannot trust, rate limiting that survives a real client, and what to do when CRUD runs out of room. Written from APIs in production, including the ones that broke.

Start here

Accepting Data You Don't Control

Webhooks and callbacks you did not design. An ingest server in Laravel 13 that owns the envelope, stores the payload whole, and validates where failure means a retry, not data loss.

Aug 2026 · 14 min read

When CRUD Isn't Enough: How Real APIs Outgrow Their Design

Most Laravel APIs start as clean CRUD systems. This article walks through why that breaks down, and how an action-based design fixes the mess.

May 2026 · 10 min read

Building Bulletproof Laravel APIs using Schema-First Contract Validation

Stop letting undocumented fields into your Laravel API. Write the JSON Schema first, then enforce it in middleware, DTOs, and your Pest test suite.

Jul 2026 · 10 min read

The Tips Behind API Artisan: Building Laravel APIs Developers Actually Want to Use

Practical tips for building Laravel APIs developers trust: contract-first design, versioning, RFC 9457 errors, idempotency and more. Free book inside.

Jun 2026 · 13 min read

Everything in API Design

Aug 202614 min read

Accepting Data You Don't Control

Webhooks and callbacks you did not design. An ingest server in Laravel 13 that owns the envelope, stores the payload whole, and validates where failure means a retry, not data loss.

Jul 202610 min read

Building Bulletproof Laravel APIs using Schema-First Contract Validation

Stop letting undocumented fields into your Laravel API. Write the JSON Schema first, then enforce it in middleware, DTOs, and your Pest test suite.

Jun 202613 min read

The Tips Behind API Artisan: Building Laravel APIs Developers Actually Want to Use

Practical tips for building Laravel APIs developers trust: contract-first design, versioning, RFC 9457 errors, idempotency and more. Free book inside.

May 202610 min read

Server-Side Rate Limiting in Laravel with Fingerprint.dev

Learn how to build device-based rate limiting in Laravel with Fingerprint.dev, Redis caching, and custom middleware to avoid the limits of IP-based throttling.

May 20265 min read

The Reason I Love Tempest for APIs

Tempest makes API development feel lightweight by combining typed request objects, attribute-based validation, discovery-driven routing, and built-in mapping with minimal ceremony.

May 202610 min read

When CRUD Isn't Enough: How Real APIs Outgrow Their Design

Most Laravel APIs start as clean CRUD systems. This article walks through why that breaks down, and how an action-based design fixes the mess.

Apr 202610 min read

Building Modern Laravel APIs: Lead Scoring and Prioritisation

Building a configurable lead scoring engine in Laravel 13 - config-driven weights, query objects for prioritised retrieval, rescoring commands, and a top leads endpoint.

Apr 20269 min read

Building Modern Laravel APIs: The Action Pattern

Building a lead enrichment and scoring pipeline in Laravel 13 using the AI SDK, structured agents, composable Action classes, and PHP enums for type-safe status management.

Apr 20268 min read

Building Modern Laravel APIs: Authentication with JWT

Add JWT auth to a Laravel API with register, login, refresh, and logout flows using Form Request DTOs, Action classes, and auth:api middleware.

Apr 202610 min read

Building Modern Laravel APIs: Foundations and Project Structure

Start the Modern Laravel APIs series by structuring Pulse-Link for production with clear layers, ULIDs, action classes, DTO requests, and versioning.

Apr 20267 min read

Building Modern Laravel APIs: Ingesting Leads

Implement lead ingestion in Laravel with Form Request validation, typed DTO payloads, Action classes, and JSON:API responses for POST /v1/leads.

Apr 20266 min read

Building Modern Laravel APIs: Routing, Versioning, and API Contracts

Learn how to version Laravel API routes, signal deprecations with Sunset headers, and keep API contracts aligned with your implementation.