For integrators

The 3D printing API that makes it near your buyer

Send us a model file and an address. We quote it, print it at the production center nearest your buyer, check it and ship it with tracking. You build the product; we make the thing.

3DAPI API v2
  • POST/v2/uploadsStart a file upload
  • POST/v2/quotesQuote a model file
  • GET/v2/quotes/{id}Get a quote
  • POST/v2/integrator/approval-requestsRequest account approval
  • POST/v2/integrator/ordersOrder prints of your quotes
  • GET/v2/integrator/orders/{id}Get an order
OpenAPI 3.1
One public contract
Multicolor
One material per extruder slot
10+
Regions we ship from
Your price
Hosted checkout for your buyers
How it works

From model file to a parcel at the door

01

Upload the model

Reserve an upload, then send the file straight to storage: .stl, .3mf, .obj, .step or .stp, up to 250 MiB.

02

Get a quote

We slice the file and price it. A webhook tells you when the quote is ready with a production price, or failed with the reason.

03

Get approved once

Send your first 10 ready quotes for review. Once they are approved, quoting is unlimited and new quotes can be ordered straight away.

04

Order, made near the buyer

Order the quote for a buyer anywhere we ship. It is printed at the production center nearest them, quality checked and shipped with tracking.

POST/v2/quotesQuote an uploaded model
{
  "file": {
    "upload": "upl_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu"
  },
  "name": "Phone stand v2"
}
GET/v2/quotes/{id}The quote, ready
{
  "id": "qte_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
  "object": "quote",
  "name": "Phone stand v2",
  "file": {
    "name": "phone-stand-v2.3mf",
    "size_bytes": 2758723,
    "download_url": "https://files.example.com/public-api/quotes/7f3a/input/phone-stand-v2.3mf?signature=abc",
    "production_version": {
      "name": "phone-stand-v2.3mf",
      "format": "3mf",
      "size_bytes": 2913004,
      "download_url": "https://files.example.com/public-api/quotes/7f3a/production/phone-stand-v2.3mf?signature=def",
      "prepared_at": "2026-10-20T09:12:09Z"
    }
  },
  "status": "ready",
  "price": {
    "amount": 1245,
    "currency": "usd"
  },
  "failure_reason": null,
  "approval": {
    "status": "not_submitted",
    "reason": null
  },
  "created_at": "2026-10-20T09:12:00Z",
  "finished_at": "2026-10-20T09:13:41Z"
}

Every request and response on this page is the example from our public OpenAPI contract.

Two ways to order

Pay the production price, or let your buyer pay yours

Every order names its quotes, the materials for each and where it ships. The mode decides who pays.

Wallet mode

You pay the production price plus shipping from your wallet. If the balance is short, the difference is charged to your saved card. The order comes back paid and goes straight to production. Use it when you already charged your customer on your own site.

Checkout mode

You set the sales price per unit. We return a hosted checkout link for your customer, open for 24 hours, that charges your price plus shipping, and VAT when the order ships to the EU or UK. When the order is completed, the sales price less the production price and the card fee lands in your wallet.

POST/v2/integrator/ordersWallet mode
{
  "mode": "wallet",
  "items": [
    {
      "quote": "qte_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
      "quantity": 10,
      "materials": [
        "mat_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu"
      ]
    }
  ],
  "shipping_address": {
    "line1": "Hauptstrasse 12",
    "city": "Berlin",
    "postal_code": "10115",
    "country_code": "DE"
  },
  "customer": {
    "name": "Jane Buyer",
    "email": "jane@example.com"
  },
  "reference": "SHOP-1042"
}
POST/v2/integrator/ordersCheckout mode
{
  "mode": "checkout",
  "items": [
    {
      "quote": "qte_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
      "quantity": 1,
      "materials": [
        "mat_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu"
      ],
      "unit_sales_price": {
        "amount": 2900,
        "currency": "usd"
      }
    }
  ],
  "shipping_address": {
    "line1": "Hauptstrasse 12",
    "city": "Berlin",
    "postal_code": "10115",
    "country_code": "DE"
  },
  "customer": {
    "name": "Jane Buyer",
    "email": "jane@example.com"
  },
  "checkout": {
    "success_url": "https://shop.example/thanks",
    "cancel_url": "https://shop.example/cart"
  },
  "reference": "SHOP-1043"
}
Personalized products

Personalized print on demand, in 3D

A name keychain is a different model for every buyer. Your app builds that model when the order comes in, uploads it, quotes it and orders it. After your account is approved, new quotes need no review, so a personalized file goes to production as soon as its quote is ready.

Print on demand keychains, name signs, initials on a phone stand: each order item picks a material for every extruder slot, from the same catalog for every buyer.

  • One file per buyer: generate it, quote it, order it.
  • Colors per slot, from the public material catalog.
  • A file that cannot be sliced comes back as a failed quote with the reason.
  • Made near each buyer: a gift for someone in Berlin is printed in Europe.
AI workflows and agents

Built for code that runs without you

A pipeline that spots a trend, generates a model and puts it on sale needs one last step: someone to make it. Every step here is an API call your workflow can make on its own.

  • One public OpenAPI 3.1 contract, with request and response examples you can copy.
  • Writes accept an Idempotency-Key, so a retried order is placed once.
  • Errors carry a stable code and a message that says how to fix the request.
  • A read-only MCP server lets an AI assistant check your quotes and orders.

The 3D printing API, answered

What is the 3DAPI 3D printing API?

A REST API that turns a 3D model file into a printed, packed and shipped product. You upload the model, get a production quote, and order prints of it for a buyer anywhere we ship. Each order is made at the production center nearest the buyer.

Which files can I quote?

Model files in .stl, .3mf, .obj, .step or .stp format, up to 250 MiB. If a file cannot be sliced, for example a broken or empty model, the quote ends failed with the reason, and it does not count against your allowance.

Why does my account need approval?

We check that your files print well before you sell them. Send 10 ready quotes for review; before approval you can quote 25 files per round. Once 10 files are approved, quoting is unlimited and every new quote can be ordered without another review.

How do I get paid if my customer pays?

Use checkout mode. You set the sales price per unit, and we send you a hosted checkout link for your customer, open for 24 hours. When the order is completed, the sales price less the production price and the card fee is credited to your wallet, ready to withdraw.

Can I pay for orders myself?

Yes, with wallet mode. You pay the production price plus shipping from your wallet, and a shortfall is charged to your saved card. The order comes back paid and goes to production.

Do you print in more than one color?

Yes. Each order item takes one material per extruder slot, in slot order. The material catalog is public, so you can show your users the real options.

How do I follow an order?

Add a webhook endpoint in your dashboard and we send every status change, from paid and in production to shipped with the carrier and tracking number. A 30-day events log lets you catch up after downtime, and you can always read the order instead.

What can you not make?

We print FDM in PLA and PETG, in the colors of the public material catalog. We do not offer resin, metal, painting, electronics or injection molding.

Quote your first model today

Create an integrator account, upload a file and get a production price back.

No inventory, no minimums