> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://api-docs.papertracc.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://api-docs.papertracc.com/_mcp/server.

# Overview

Order requests let shoppers ask for something the merchant makes or sources for them: a tailored outfit, a cake for a date, or an item that is not in the catalogue. Nothing is charged. The merchant reviews the request, replies with a price, and turns it into an order.

## Two kinds of form

A product can carry a request form, returned by Get Product as `request_form`. Its `mode` decides the flow:

| `mode`    | What the shopper does                                                                                                                                            |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST` | Answers the questions and sends them with Create Request. `requestable` is `true` on the product.                                                                |
| `BUY_NOW` | Answers the questions, picks a date, and adds the product to the cart with `answers` and `needed_by` on the cart item. They pay at checkout like any other line. |

A product with an open price is also `requestable`, with or without a form. The store can also have a custom request form for anything not in the catalogue. Get Request Form returns it, and Create Request uses it for items sent without a `variant_id`.

## Answering questions

Each field in `fields` has a `key` and a `type`. Send one answer per question, with the same `key` and the value for its type:

| `type`              | Send                                                                                     |
| ------------------- | ---------------------------------------------------------------------------------------- |
| `CHOICE`            | `choices`: option labels. More than one only when `multiple` is `true`.                  |
| `TEXT`, `LONG_TEXT` | `text`, up to `max_length` characters.                                                   |
| `NUMBER`            | `number`, between `min` and `max` when set.                                              |
| `YES_NO`            | `yes`.                                                                                   |
| `MEASUREMENTS`      | `measurements` with a `label` and `value` for each one asked, and `unit` (`CM` or `IN`). |
| `PHOTO`             | `files`: `id`s from Upload Request Picture, up to `max_files`. Requests only.            |

Options can carry `prices`. On a `BUY_NOW` cart line the chosen options are added to the unit price and shown as `add_on`, and the line's `answers` list what the shopper chose.

## Dates and daily limits

`needed_by` is the date the shopper needs the order by. It must fall between today and two years ahead, and no earlier than the longest lead time of the items. When a form is `limited`, the merchant takes only so many orders a day. Call Get Request Availability with the form's `id` to grey out full days in your date picker; a full day is refused with `422`.

## Pictures

Upload each picture with Upload Request Picture before sending the request, then send the returned `id`s in `photos` (for the whole request) or in a `PHOTO` answer's `files`. Pictures are PNG, JPG, GIF, WEBP or AVIF, at most 10 MB, sent as a data URI. Use each `id` once, within 24 hours.

## Signed-in shoppers

Send `shopper-token` on Create Request to link the request to the shopper's account. A `MEASUREMENTS` answer with `save_as` is then also saved to the account, and Save Measurements, List Measurements and Delete Measurements manage those sets so the shopper does not type them again.

## Limits

A request holds up to 10 items, 5 links and 5 pictures. A shopper can send 5 requests and upload 30 pictures in 15 minutes.