---
title: "Create a cart"
method: POST
path: "/carts"
tags: ["Shop"]
---

# Create a cart

`POST /carts`

## Request

- Base URL: `https://gorest.co.in/public/v3`
- URL: `https://gorest.co.in/public/v3/carts`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- CartCreate
  - `currency` string, required: An ISO 4217 code, either case.
  - `user_id` string, uuid, required: A user you can see with no active cart.

## Response `201`

The new cart.

- Cart: Every field is present unless `fields[carts]` asks for fewer. `user` and `items` are there only with `include`.
  - `created_at` string, date-time
  - `currency` string: Every line is in this currency. Fixed once the cart is made.
  - `id` string, uuid, required
  - `items` CartItem[]: The lines, oldest first.
    - `cart_id` string, uuid
    - `created_at` string, date-time
    - `currency` string: The cart's currency.
    - `id` string, uuid, required
    - `product` NullableProduct: Every field is present unless `fields[products]` asks for fewer. `category` is there only with `include`.
      - `category` Category: A product category. Platform data, the same for everyone. Every field is present unless `fields[categories]` asks for fewer.
        - `description` string
        - `id` string, uuid, required
        - `name` string
        - `slug` string
      - `category_id` string, uuid
      - `created_at` string, date-time
      - `currency` string: An ISO 4217 code (see /currencies). Fixed once the product is made.
      - `description` string
      - `id` string, uuid, required
      - `name` string
      - `price_minor` integer: The price in minor units of `currency`: 249900 with INR is ₹2,499.00.
      - `read_only` boolean: True for sample data (the seed); it cannot be changed.
      - `sku` string: Your code for the product, unique in your account.
      - `stock` integer, nullable: Units left; null when stock is not tracked (sample products). An order takes from it and a cancel puts it back.
      - `updated_at` string, date-time
    - `product_id` string, uuid
    - `quantity` integer
    - `read_only` boolean: True for sample data (the seed); it cannot be changed.
    - `updated_at` string, date-time
  - `read_only` boolean: True for sample data (the seed); it cannot be changed.
  - `status` 'active' | 'abandoned' | 'ordered': `ordered` is set by placing an order and is final.
  - `updated_at` string, date-time
  - `user` NullableUser: Every field is present unless `fields[users]` asks for fewer.
    - `created_at` string, date-time
    - `email` string, email
    - `id` string, uuid, required
    - `name` string
    - `read_only` boolean: True for sample data (the seed); it cannot be changed.
    - `status` 'active' | 'inactive'
    - `updated_at` string, date-time
  - `user_id` string, uuid: Whose cart; a user you can see. One active cart per user.

## Other responses

- `400`: A parameter is wrong, unknown or out of range.
- `401`: No token, or the token is wrong, expired or revoked.
- `403`: The token lacks the scope this operation needs.
- `409`: The change clashes with another row, such as an email you already use.
- `413`: The body is over 64 KiB.
- `415`: The body is not `application/json` (or `application/merge-patch+json` on PATCH).
- `422`: The body has fields that fail their rules (`validation_failed`, with `errors`), or a cap is reached (`cap_reached`).
- `429`: Over the rate limit; wait `Retry-After` seconds.
- `500`: Something failed on the server.

---

[API](https://skmtc.dev/gorest/apis/gorest-api-v3.md) - [All operations](https://skmtc.dev/gorest/apis/gorest-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/gorest/apis/gorest-api-v3/revisions/89aa429755a6?raw)
