diff --git a/src/api/routes.ts b/src/api/routes.ts
index 1111111..2222222 100644
--- a/src/api/routes.ts
+++ b/src/api/routes.ts
@@ -10,6 +10,7 @@ export function setupRoutes(app: Express) {
   app.get("/users", listUsers);
   app.get("/users/:id", getUser);
+  app.post("/users", createUser);
   app.get("/health", healthCheck);
 }
diff --git a/src/api/handlers.ts b/src/api/handlers.ts
index 3333333..4444444 100644
--- a/src/api/handlers.ts
+++ b/src/api/handlers.ts
@@ -1,5 +1,6 @@
 import { Request, Response } from "express";
+import { validateBody } from "./validation";

 export async function listUsers(req: Request, res: Response) {
   const users = await db.users.findAll();
@@ -15,3 +16,10 @@ export async function getUser(req: Request, res: Response) {
   const user = await db.users.findById(req.params.id);
   res.json(user);
 }
+
+export async function createUser(req: Request, res: Response) {
+  const body = validateBody(req.body, UserSchema);
+  const user = await db.users.create(body);
+  res.status(201).json(user);
+}
