---
title: "Upload a 3D model and create a free-beta print quote"
method: POST
path: "/print-quotes"
tags: ["Print quotes"]
---

# Upload a 3D model and create a free-beta print quote

`POST /print-quotes`

## Request

- Base URL: `https://aiurion.com/api/agent/v1`
- URL: `https://aiurion.com/api/agent/v1/print-quotes`
- Auth: HTTP bearer

A successfully persisted quote counts against the credential's free allowance but is not billed. Use a new Idempotency-Key for each intended quote. Read quote.checkoutEligibility before asking for approval or creating checkout; it explains whether the configured base-print minimum or maximum has been met.

## Headers

- `X-Agent-Name` string
- `Idempotency-Key` string, required

## Response `200`

Existing quote returned for an idempotent replay

- object
  - `success` true, required
  - `requestId` string, uuid, required
  - `idempotentReplay` boolean, required
  - `usage` object, required
    - `remainingQuotes` integer, nullable, required: Remaining free-beta quote allowance, or null for an unmetered beta key.
  - `quote` object, required: The authoritative AIURION quote. The $100 job minimum applies once to material plus machine time at $60/hour ($1/minute), including setup and cooldown. Material is included in the minimum, not added on top of it. Rush, fulfillment, tax, and separately quoted hardware are additional. Machine time includes actual model time plus occupied-plate overhead: 10 minutes normally, 20 for TPU, 31 for ASA. The job minimum applies once per build. Returned slice totals already include quantity; never multiply them again. Rush, fulfillment and tax are additional. Use server totals. Material or quantity changes re-slice and require renewed customer price approval.
    - `quoteId` string, uuid
    - `quantity` integer: Actual copies already included in slice totals.
    - `materialId` string: Material used for this profile-specific quote.
    - `pricingPolicyVersion` integer
    - `sliceContractVersion` integer
    - `plateCount` integer
    - `overheadMinutes` number
    - `billableTimeMinutes` number
    - `currency` string
    - `expiresAt` string, date-time
    - `checkoutEligibility` object: Machine-readable self-serve checkout eligibility. Limits apply to the base print price before production, fulfillment, and tax.
      - `eligible` boolean, required
      - `code` 'minimum_order_not_met' | 'maximum_order_exceeded' | 'null', nullable, required
      - `message` string, required: A customer-readable explanation of eligibility and any amount needed before checkout.
      - `currentBasePrice` number, required
      - `minimumBasePrice` number, required
      - `minimumShortfall` number, required
      - `maximumBasePrice` number, required
      - `maximumExcess` number, required

## Other responses

- `201`: Quote created
- `400`: Invalid request
- `401`: Missing, invalid, inactive, or expired token
- `403`: The credential lacks the required scope
- `404`: Resource not found
- `409`: Request conflict
- `413`: Uploaded request is too large
- `415`: Unsupported request content type
- `429`: Rate or beta quota exceeded
- `500`: Unexpected server error
- `503`: Agent API temporarily unavailable

---

[API](https://skmtc.dev/aiurion/apis/aiurion-agentic-3d-printing-api.md) · [All operations](https://skmtc.dev/aiurion/apis/aiurion-agentic-3d-printing-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aiurion/apis/aiurion-agentic-3d-printing-api/revisions/949ce997a10c?raw)
