# Custom printed packaging run, split across warehouses (API)

One run of printed mailer boxes, delivered in parts to each of your warehouses. Send it as one request: Établi writes the spec a packaging printer can bid on, asks what's missing (size, board, ink, the split), and each warehouse's share becomes its own order.

- **Try it:** `POST /v1/quotes/preview`, no key
- **Legs:** 1: a packaging printer in the US
- **Orders:** One per warehouse, each with its address and quantity
- **Proof:** A digital proof approved before the run, then tracking for each delivery

## Try it, with no key

Say what to print, how many, where each part goes, by when, and the most you'd pay a box. This is the request we sent:

The request:

> Print 3,000 mailer boxes with our logo in one color, split across our warehouses in New Jersey, Texas and Nevada, within 4 weeks. Up to $1.20 a box.

Preview the plan, curl:

```bash
curl -sX POST https://api.etabli.io/v1/quotes/preview \
  -H "Content-Type: application/json" \
  -d '{"request":"Print 3,000 mailer boxes with our logo in one color, split across our warehouses in New Jersey, Texas and Nevada, within 4 weeks. Up to $1.20 a box."}'
```

Preview the plan, TypeScript:

```ts
const response = await fetch("https://api.etabli.io/v1/quotes/preview", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    request: "Print 3,000 mailer boxes with our logo in one color, split across our warehouses in New Jersey, Texas and Nevada, within 4 weeks. Up to $1.20 a box.",
  }),
});
const plan = await response.json();
for (const leg of plan.legs) {
  console.log(leg.key, leg.title, `${leg.questions.length} open questions`);
}
```

Preview the plan, Python:

```python
import requests

plan = requests.post(
    "https://api.etabli.io/v1/quotes/preview",
    json={"request": "Print 3,000 mailer boxes with our logo in one color, split across our warehouses in New Jersey, Texas and Nevada, within 4 weeks. Up to $1.20 a box."},
    timeout=120,
).json()
for leg in plan["legs"]:
    print(leg["key"], leg["title"], len(leg["questions"]), "open questions")
```

No key and no account. Planning takes up to a minute; nothing is ordered or sent to workshops. Ask the person before you send their name and email anywhere.

When the person wants workshops to bid, draft it, still with no key: `POST /v1/projects` with the same request and answers returns a line to show them, with a claim link. They check the plan and publish it on etabli.io. [Draft and claim](https://etabli.io/docs#draft-and-claim) has the calls.

## The plan it returns

### One leg, three deliveries

What the live API returned for the request above, on 9 October 2026; its dates count from that day. Each preview is written fresh, so yours will be worded differently. The plan has no price of Établi's own: the only prices on it are the most the request said it would pay.

One leg: one workshop does it all. **3,000 one-color logo mailer boxes, 3 warehouses.** Produce 3,000 custom corrugated mailer boxes printed with the buyer's logo in one color, delivered split across warehouses in New Jersey, Texas and Nevada within 4 weeks, at up to $1.20 per box.

#### Leg 1 of 1 · 3,000 one-color printed mailer boxes (`boxes`)

Manufacture and print the logo mailer boxes and deliver them split across the buyer's three warehouses.

- **Who does it:** Packaging manufacturer producing custom printed corrugated mailer boxes with flexo or digital one-color printing, handling runs of a few thousand units and shipping palletized freight to multiple US addresses.
- **Where the workshop can be:** United States
- **Provided:**
  - Logo artwork as a vector file: Buyer also confirms box dimensions, board grade/flute, board color, print location and Pantone ink color before production.
  - Corrugated board, ink, printing plates/dies (workshop supplies): Board grade and flute (e.g. E-flute) and color (kraft or white) per buyer confirmation.
  - Pallets or cartons and freight to three warehouses (workshop supplies): Each delivery labelled for its destination warehouse.
- **Work:** Recommend or confirm the box style (default corrugated roll-end tuck-front), produce cutting die and print plate, send a digital proof showing dieline, logo placement and Pantone color for buyer approval, then run 3,000 boxes printed in one color. Pack flat on pallets or in cartons, label each shipment for its warehouse, and ship to the New Jersey, Texas and Nevada warehouses in the confirmed quantities.
- **Result:** 3,000 printed corrugated mailer boxes, flat-packed, split across three warehouses (NJ, TX, NV) in buyer-confirmed quantities totaling 3,000, each delivery labelled for its warehouse.
- **Most you'll pay:**
  - $1.20 a piece
  - Includes boxes and board, one-color printing, printing plates, cutting die and setup, digital proof, packing flat on pallets or in cartons and freight to all three warehouses
- **When:** By Fri, Nov 6, 2026
- **Proof:** Document, photos and tracking number
- **Where:** Buyer's three warehouses in New Jersey, Texas and Nevada (addresses provided at award)
- **Rules:**
  - Digital proof must be approved by the buyer before the production run starts.
  - All three deliveries must arrive by 2026-11-06, including proofing, production and freight.
  - Bidders must state whether their price includes plates/setup and freight to all three warehouses, and quote freight separately if not.
  - Ink color is a Pantone match.

We assumed:

- Treated $1.20 per box 'all-in' as including plates, die, setup and freight to all three warehouses; bids that exclude freight must quote it separately.
- Proof of completion is the approved digital proof, a photo of finished boxes and packed pallets, and freight tracking/bill of lading for each of the three deliveries.
- Domestic (US) production assumed, since the 4-week window including freight rules out ocean shipping from overseas.
- Box style defaults to corrugated roll-end tuck-front unless the workshop recommends otherwise.

Open questions, with Établi's suggested answers:

1. **What inside dimensions, board grade/flute and board color should the boxes be?** Suggested: 9 x 6 x 3 in inside, 32 ECT E-flute, kraft board. Why we ask: Box size and board drive most of the per-box cost and whether $1.20 is achievable.
2. **Should the logo print on the outside only, and in which Pantone color?** Suggested: Outside only, lid top, Pantone Black C. Why we ask: Inside printing or a second print side adds plates and press passes that raise the price.
3. **How many boxes go to each warehouse (NJ, TX, NV)?** Suggested: 1,000 to each warehouse. Why we ask: The split determines pallet counts and freight cost to each destination.
4. **Must the $1.20 per box ceiling cover freight to all three warehouses, or can freight be quoted on top?** Suggested: Yes, $1.20 includes plates, setup and freight to all three warehouses. Why we ask: LTL freight to three states can add tens of cents per box and decides which bids qualify.
5. **Do all three warehouses have a loading dock, or do any need liftgate or appointment delivery?** Suggested: All three have docks and accept weekday deliveries 8am–4pm; addresses provided at award. Why we ask: Liftgate and appointment deliveries add freight charges the workshop must price in.

The response, abridged (each leg's `spec` has all eight fields, and `sourcing` says who to look for):

```json
{
  "title": "3,000 one-color logo mailer boxes, 3 warehouses",
  "summary": "Produce 3,000 custom corrugated mailer boxes printed with the buyer's logo in one color, delivered split across warehouses in New Jersey, Texas and Nevada within 4 weeks, at up to $1.20 per box.",
  "legs": [
    {
      "key": "boxes",
      "title": "3,000 one-color printed mailer boxes",
      "role": "Manufacture and print the logo mailer boxes and deliver them split across the buyer's three warehouses.",
      "spec": {
        "price": {
          "ceilingCents": 120,
          "per": "unit",
          "includes": [
            "boxes and board",
            "one-color printing",
            "printing plates, cutting die and setup",
            "digital proof",
            "packing flat on pallets or in cartons",
            "freight to all three warehouses"
          ],
          "excludes": []
        },
        "deadline": {
          "kind": "fixed_date",
          "businessDays": null,
          "date": "2026-11-06"
        },
        "…": "work, output, proof, where, rules"
      },
      "questions": [
        {
          "field": "work",
          "text": "What inside dimensions, board grade/flute and board color should the boxes be?",
          "suggestedAnswer": "9 x 6 x 3 in inside, 32 ECT E-flute, kraft board."
        }
      ],
      "inputsFrom": [],
      "sourcing": {
        "countries": [
          "US"
        ],
        "…": "lookFor, searchTerms"
      }
    }
  ],
  "engine": "claude:claude-opus-5-5"
}
```

## From the plan to orders

The plan assumed a printer in the US: four weeks, with the freight to three warehouses, leaves no time to ship by sea from overseas. Give it longer and the plan can change with it.

1. **Answer the questions.** The plan has 5 open questions: the box size and board, where the logo prints and in which color, how many go to each warehouse, whether freight is in the price, and how each warehouse receives deliveries. Each comes with a suggested answer.
2. **Draft it; the person claims it.** `POST /v1/projects` with no key, the request and the answers, returns a line to show the person, with a claim link. They check the spec and their ceiling on etabli.io and publish it, and printers bid.
3. **Choose the offer.** When bidding closes, Établi contacts the person to confirm the offer they choose: one contract. The printer sends a digital proof to approve before the run starts.
4. **Order one delivery per warehouse.** Three calls against the contract, each with that warehouse's address and its share of the run.

One warehouse's delivery, curl:

```bash
# One of three: 1,000 boxes to the New Jersey warehouse.
curl -sX POST https://api.etabli.io/v1/contracts/$CONTRACT_ID/orders \
  -H "Authorization: Bearer $ETABLI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: boxes-new-jersey" \
  -d '{
    "quantity": 1000,
    "address": { "name": "Receiving, New Jersey warehouse", "line1": "200 Example Ave", "city": "Edison", "region": "NJ", "postalCode": "08817" }
  }'
```

One warehouse's delivery, TypeScript:

```ts
// One of three: 1,000 boxes to the New Jersey warehouse.
const order = await fetch(`https://api.etabli.io/v1/contracts/${contractId}/orders`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ETABLI_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": "boxes-new-jersey", // a retry never orders twice
  },
  body: JSON.stringify({
    "quantity": 1000,
    "address": {
      "name": "Receiving, New Jersey warehouse",
      "line1": "200 Example Ave",
      "city": "Edison",
      "region": "NJ",
      "postalCode": "08817"
    }
  }),
}).then((response) => response.json());
```

Placing orders through the API takes a buyer key ([auth](https://etabli.io/docs#auth)). Confirm each order with the person first: it commits real money.

## Use it from your agent

Add Établi's MCP server (`https://api.etabli.io/mcp`, no key) and the same steps become tools: `preview_quote`, `create_project` (a draft the person claims on etabli.io) and `get_project`; with a buyer key, awarding and ordering. Or install the skill, which tells an agent when Établi fits.

- **Claude Code:** `claude mcp add --transport http etabli https://api.etabli.io/mcp`
- **Codex:** `codex mcp add etabli --url https://api.etabli.io/mcp`. Or add it to `~/.codex/config.toml`, which the Codex CLI, the IDE extension and the ChatGPT desktop app share:

  ```toml
  [mcp_servers.etabli]
  url = "https://api.etabli.io/mcp"
  ```
- **Cursor:** [Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=etabli&config=eyJ1cmwiOiJodHRwczovL2FwaS5ldGFibGkuaW8vbWNwIn0=). Or open [cursor.com/install-mcp](https://cursor.com/install-mcp?name=etabli&config=eyJ1cmwiOiJodHRwczovL2FwaS5ldGFibGkuaW8vbWNwIn0%3D) in a browser.
- **VS Code (Copilot):** [Add to VS Code](https://vscode.dev/redirect/mcp/install?name=etabli&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.etabli.io%2Fmcp%22%7D). Or run `code --add-mcp '{"name":"etabli","type":"http","url":"https://api.etabli.io/mcp"}'`.
- **Gemini CLI:** `gemini mcp add --transport http etabli https://api.etabli.io/mcp`
- **Skill (70+ agents):** `npx skills add https://etabli.io`. Installs Établi's skill, `order-physical-work`, into the agents on your machine: when to use Établi and how to order with it.

Every other client, and the tools: [the MCP server](https://etabli.io/mcp). The API: [docs](https://etabli.io/docs).

## Use something else when…

- **A standard box with your logo is enough, and you want a price now.** A packaging company with a fixed catalog and instant prices fits better; Packhelp, for one, offers an API.
- **You need boxes within days.** Buy stock boxes from a packaging distributor and add a label or a stamp. A custom printed run needs a proof, plates and a die before it starts.
- **It's one delivery to one warehouse and you already have a printer.** Send them the reorder. A plan and bids add little to a repeat of a job someone already does well.
- **You need to ship parcels, not make boxes.** That's a shipping API's job: labels and rates.

## Good to know

- Orders go to US addresses and are priced in US dollars. Workshops can be in any country a leg allows.
- Prices come from workshops' bids, with Établi's fee included in each offer. Établi has no price list; the most you say you'd pay caps the bids. [Pricing](https://etabli.io/pricing).
- When no workshop on Établi fits a leg yet, Établi finds suitable ones and asks them to bid, which can take a few days. A person at Établi approves every message first.
- An agent needs no account: it previews the plan and drafts the project, and the person claims and publishes it on etabli.io. Buyer keys are for companies that run the whole loop through the API themselves: [request API access](https://etabli.io/#access).
- Online payment isn't live yet: while Établi is in early access, it arranges payment with each buyer and workshop directly.

## More guides

- [Dropship houseplants in your own pots](https://etabli.io/use/dropship-houseplants-api)
- [Get products manufactured](https://etabli.io/use/manufacturing-api)
- [An API for AI agents](https://etabli.io/use/api-for-ai-agents)
- [Three ways agents buy physical goods](https://etabli.io/use/how-ai-agents-buy-physical-goods)

The API, auth and every endpoint: [docs](https://etabli.io/docs). For agents, everything in one file: [llms-full.txt](https://etabli.io/llms-full.txt).

---

This is the markdown version of https://etabli.io/use/custom-packaging-api. Every page on etabli.io has one at the same path plus .md (https://etabli.io/index.md for the home page). For agents: an overview at https://etabli.io/llms.txt, and everything in one file at https://etabli.io/llms-full.txt.
