Most create endpoints I see in client codebases return one of two lazy things: a 200 with the new id, or a 200 with a success message and nothing else. Then the frontend has to make a second request to show the thing it just created, or it guesses at the shape and gets it wrong.
In my starter kit, creating a user returns this, every time:
public function store(StoreUserRequest $request): JsonResponse
{
$user = User::create($request->validated());
return response()->json(['user' => new UserResource($user)], 201);
}
Two decisions are packed into those three lines, and both are deliberate.
First, 201, not 200. A 200 says "fine, done." A 201 says "a resource now exists that didn't before." That distinction matters the day you write a frontend that branches on status, or a test that asserts creation actually happened. My register endpoint does the same — 201 with the user and a token — because registration is also a creation, not a generic success.
Second, the full
Discussion
Break the silence
Take the opportunity to kick things off.