Laravel API Resource Generator

Generate Laravel JsonResource and ResourceCollection classes with field mappings, conditional relations, and metadata.

  1. Home
  2. Web Dev
  3. Laravel Tools
  4. API Resource Generator

Singular CamelCase, e.g. Post, User, Product

Auto-filled as {Model}Resource.

Leave empty for no wrapping.

Map each API response key to an expression. Supports $this->attribute, $this->relation->field, and helpers.

Relations that should only appear when they have been eager-loaded (whenLoaded).

Optional JSON object for the with() method. Used in collection for pagination links/meta.

Generated Resource

How to Use the Laravel API Resource Generator

This tool helps you create Laravel API Resource and Resource Collection classes. Follow these steps:

  1. Enter the model name — Type a singular CamelCase name like Post. The resource class name auto-fills.
  2. Define field mappings — Add rows mapping each API response key to a $this->attribute or expression.
  3. Add conditional relations — Use whenLoaded to include relations only when eager-loaded.
  4. Configure metadata — Add with() metadata and pagination links for collections.
  5. Generate — Click Generate Resource to create the PHP class(es).
  6. Copy or Download — Click Copy or Download to save as {Model}Resource.php.

Frequently Asked Questions

What is an API Resource in Laravel?

API Resources are classes that transform your Eloquent models and collections into JSON responses. They live in app/Http/Resources/ and provide a clean way to shape API output, hide attributes, include relationships, and add metadata.

What is the difference between Resource and ResourceCollection?

Resource (extends JsonResource) transforms a single model instance. ResourceCollection (extends ResourceCollection) transforms a collection of models, often with pagination links.

What does whenLoaded() do?

whenLoaded('relation') includes the field only if the relation has been eager-loaded. This prevents N+1 queries while still allowing the resource to include relation data when available.

Should I wrap my resource in a data key?

Laravel 11 no longer wraps resources by default. If your API client expects a data wrapper (common in JSON:API), set the Wrap Key to data. Leave it empty for no wrapping.

Related Tailwind Tools

Last updated: 24 Jun 2026