---
title: "Create a print order"
method: POST
path: "/v1/orders"
---

# Create a print order

`POST /v1/orders`

## Request

- Base URL: `https://themassprint.com`
- URL: `https://themassprint.com/v1/orders`
- Auth: one of:
  - HTTP bearer
  - none

Validates PDF + address BEFORE minting any payment link. payment_link keys/anonymous: response carries payment_url. invoiced keys: order auto-confirms. Save order_token — shown once.

## Request body

- object
  - `upload_id` string, required
  - `sku` string: Optional; inferred from format (sticker-a3 → sticker-a3, greeting-card-a5 → greeting-card-a5, else storybook).
  - `format` 'paperback' | 'hardcover' | 'sticker-a3' | 'greeting-card-a5', required: paperback/hardcover: bound storybook. sticker-a3: single-sheet A3 portrait sticker / wall chart (exactly 1 page, 842×1191 pt). greeting-card-a5: folded A5 greeting card, one A4-landscape sheet printed duplex (exactly 2 pages, 859×612 pt incl. 3 mm bleed).
  - `copies` integer
  - `email` string, email, required
  - `address` Address, required
    - `name` string, required
    - `line1` string, required
    - `line2` string
    - `city` string, required
    - `state` string, required
    - `pincode` string, required: 6-digit India PIN
    - `phone` string, required: India mobile, optional +91
  - `client_reference` string: Caller-owned idempotency key (e.g. your own order id). API-keyed callers replaying the same reference get HTTP 200 with the ORIGINAL order and deduplicated: true — never a second print. A canceled/refunded/expired order releases its reference. Anonymous callers may send it but only keyed callers get the dedupe guarantee.

## Response `200`

Replayed client_reference: the original order is returned, no new order is created. order_token is null — it was shown once, at the original creation.

- object
  - `order` Order
    - `order_id` string
    - `status` 'awaiting_payment' | 'confirmed' | 'printing' | 'shipped' | 'delivered' | 'expired' | 'canceled' | 'refunded'
    - `sku` string
    - `format` 'paperback' | 'hardcover' | 'sticker-a3' | 'greeting-card-a5'
    - `client_reference` string: The caller-owned idempotency key this order was created with, echoed back.
    - `copies` integer
    - `page_count` integer
    - `amount` object
      - `total_paise` integer
      - `display` string
      - `currency` string
    - `email` string, email
    - `payment_mode` 'payment_link' | 'invoiced'
    - `payment_url` string: Present while awaiting_payment: the Razorpay link to pay.
    - `payment_expires_at` string
    - `paid_at` string
    - `tracking` object
      - `carrier` string
      - `awb` string
      - `url` string: Clickable tracking link, when the shipper provided one.
    - `created_at` string
    - `updated_at` string
  - `order_token` unknown
  - `deduplicated` true

## Other responses

- `201`: Order created
- `422`: Invalid fields or unprintable PDF

---

[API](https://skmtc.dev/themassprint/apis/massprint-api.md) · [All operations](https://skmtc.dev/themassprint/apis/massprint-api/llms.txt) · [OpenAPI document](https://skmtc.dev/themassprint/apis/massprint-api/revisions/50555aeed826?raw)
