export const metadata = { title: `${pageNumber} API Routes`, } # {metadata.title} In this chapter, you’ll learn what API routes are and how to create them. ## What is an API Route? An API route is a REST endpoint that exposes commerce features to external applications, such as storefronts, the admin dashboard, or third-party systems. The Medusa core application provides a set of [admin](!api!/admin) and [store](!api!/store) API routes out-of-the-box. You can also create custom API routes to expose your custom functionalities. --- ## How to Create an API Route? You can create an API route in a TypeScript or JavaScript file under the `src/api` directory of your Medusa application. The file’s name must be `route.ts` or `route.js`. ![Example of API route in the application's directory structure](https://res.cloudinary.com/dza7lstvk/image/upload/v1732808645/Medusa%20Book/route-dir-overview_dqgzmk.jpg) Each file exports API route handler functions for at least one HTTP method (`GET`, `POST`, `DELETE`, etc…). For example, to create a `GET` API route at `/hello-world`, create the file `src/api/hello-world/route.ts` with the following content: ```ts title="src/api/hello-world/route.ts" import type { MedusaRequest, MedusaResponse, } from "@medusajs/framework/http" export const GET = ( req: MedusaRequest, res: MedusaResponse ) => { res.json({ message: "[GET] Hello world!", }) } ``` ### Test the API Route To test the API route above, start the Medusa application: ```bash npm2yarn npm run dev ``` Then, send a `GET` request to the `/hello-world` API route: ```bash curl http://localhost:9000/hello-world ``` You should receive the following response: ```json { "message": "[GET] Hello world!" } ``` --- ## Next Chapters: Learn More About API Routes Follow the next chapters to learn about the different HTTP methods you can use in API routes, parameters and validation, protecting routes, and more.