---
title: "Create a new order"
method: POST
path: "/orders"
tags: ["orders"]
---

# Create a new order

`POST /orders`

Places a new order with burgers (requires userId).
French fries are included as a side for every burger order.

Limitations:
- Maximum 5 active orders per user
- Maximum 50 burgers total per order

## Request body

- CreateOrderRequest
  - `userId` string, required
  - `nickname` string — Optional nickname for the order (only first 10 chars displayed)
  - `items` object[], required — List of burger items (maximum 50 burgers total across all items)
    - `burgerId` string, required
    - `quantity` integer, required
    - `extraToppingIds` string[] — Optional list of extra topping IDs to add to the burger

## Response `201`

Order created successfully

- OrderResponse — Order object returned by the API (userId is omitted for privacy)
  - `id` string, required
  - `createdAt` string, date-time, required
  - `items` OrderItem[], required
    - `burgerId` string, required
    - `quantity` integer, required — Must be a positive integer (greater than 0). Orders with zero or negative quantity will be rejected with a 400 error.
    - `extraToppingIds` string[] — Optional list of extra topping IDs to add to the burger
  - `estimatedCompletionAt` string, date-time, required
  - `completedAt` string, date-time — ISO date string for when the order was completed (undefined until completed)
  - `nickname` string — Optional nickname for the order
  - `totalPrice` number, float, required
  - `status` 'pending' | 'in-preparation' | 'ready' | 'completed' | 'cancelled', required — - pending: Order has been created but not yet started - in-preparation: Order is being prepared - ready: Order is ready for pickup - completed: Order has been picked up - cancelled: Order has been cancelled

## Other responses

- `400` — Invalid request
- `401` — User is not registered
- `429` — Too many active orders for this user
- `500` — Internal server error

## Changes

- **2025-10-09** `a7a88cd919bf` — 2 info
  - added the new optional request property `nickname`
  - added the optional property `nickname` to the response with the `201` status
- **2025-07-01** `b938b8ad924a` — 2 warning
  - removed the request property `nickname`
  - removed the optional property `nickname` from the response with the `201` status

[Change history](https://skmtc.dev/azure/apis/burger-api/changes/orders/post.md)

---

[API](https://skmtc.dev/azure/apis/burger-api.md) · [All operations](https://skmtc.dev/azure/apis/burger-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/azure/burger-api/revisions/9a320b046986/schema)
