v0 api

Next.js API Route Returns 404 on POST Request

Your Next.js API route returns 404 when making POST, PUT, DELETE requests, even though the route file exists. GET requests might work but other methods don't.

API routes fail when the handler function doesn't export HTTP method handlers, file structure doesn't match App Router conventions, or HTTP method routing is incorrect.

Error Messages You Might See

404 Not Found Method Not Allowed [api] Route not found POST handler not exported
404 Not FoundMethod Not Allowed[api] Route not foundPOST handler not exported

Common Causes

  1. Using page.ts instead of route.ts in API route directory
  2. Default export instead of named exports for HTTP methods (GET, POST, etc)
  3. Route file in pages directory (Pages Router) instead of app directory (App Router)
  4. Incorrect URL path matching route.ts file structure
  5. Missing HttpResponse wrapper in Vercel's Request/Response types

How to Fix It

Use route.ts: API routes must be named route.ts (not page.ts or api.ts) in app/api/your-route/ directory.

Export handlers: Export named async functions for each method:
export async function GET(request: Request) { ... }
export async function POST(request: Request) { ... }

App Router pattern: For /api/users endpoint, create app/api/users/route.ts file.

Test with correct method: Verify fetch call uses correct method: fetch(url, { method: 'POST' })

Real developers can help you.

Luca Liberati Luca Liberati I work on monoliths and microservices, backends and frontends, manage K8s clusters and love to design apps architecture Nam Tran Nam Tran 10 years as fullstack developer Kingsley Omage Kingsley Omage Fullstack software engineer passionate about AI Agents, blockchain, LLMs. Prakash Prajapati Prakash Prajapati I’m a Senior Python Developer specializing in building secure, scalable, and highly available systems. I work primarily with Python, Django, FastAPI, Docker, PostgreSQL, and modern AI tooling such as PydanticAI, focusing on clean architecture, strong design principles, and reliable DevOps practices. I enjoy solving complex engineering problems and designing systems that are maintainable, resilient, and built to scale. Taufan Taufan I’m a product-focused engineer and tech leader who builds scalable systems and turns ideas into production-ready platforms. Over the past years, I’ve worked across startups and fast-moving teams, leading backend architecture, improving system reliability, and shipping products used by thousands of users. My strength is not just writing code — but connecting product vision, technical execution, and business impact. Stanislav Prigodich Stanislav Prigodich 15+ years building iOS and web apps at startups and enterprise companies. I want to use that experience to help builders ship real products - when something breaks, I'm here to fix it. Costea Adrian Costea Adrian Embedded Engineer specilizing in perception systems. Latest project was a adas camera calibration system. Bastien Labelle Bastien Labelle Full stack dev w/ 20+ years of experience Jaime Orts-Caroff Jaime Orts-Caroff I'm a Senior Android developer, open to work in various fields Matthew Butler Matthew Butler Systems Development Engineer @ Amazon Web Services

You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.

Get Help

Frequently Asked Questions

What's the difference between route.ts and page.ts?

page.ts renders UI components. route.ts handles HTTP requests and exports GET/POST/etc handlers.

How do I handle multiple HTTP methods?

Export named functions in route.ts: export async function GET() {...} export async function POST() {...}

Why does my POST work in Postman but not fetch?

Check fetch headers include 'Content-Type': 'application/json' and body is JSON.stringify(data).

Related v0 Issues

Can't fix it yourself?
Real developers can help.

You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.

Get Help