Additive Inn
Get instant quote

Print API: your files, our printers

For businesses

Send 3D files straight from your own system, get an exact price in seconds and order with one call. Open an account yourself and start today.

Open a partner account Read the API guide

Live at once · prepaid · sandbox included

How it works

Four calls from file to doorstep.

  1. 01 Sign up Open an account with your mobile number. It is live at once, with a sandbox to build against.
  2. 02 Quote Send your STL, 3MF or OBJ files and your choices. We measure each file ourselves and price it in seconds.
  3. 03 Order Order the quote with one call. Its price and its exact file are locked.
  4. 04 Follow Pay into your prepaid balance and the job starts. Signed events tell your system as it moves.

What you get

Our studio, as an API.

  • Our website's prices The same rates as our instant quote for the same file and choices. No partner markup, no setup fee.
  • Priced from the file We measure every file on our own servers, so a quote is exact and nothing can be gamed.
  • One API, many processes FDM, SLA and more, with the materials, colours and finishing our studio offers, read live from the API.
  • A sandbox Test keys run the whole flow, quotes, orders and webhooks, without printing or charging anything.
  • Signed webhooks Accepted, printing, ready, shipped: each event signed, retried, and safe to receive twice.
  • Collect or delivered Collect from our studio, send your own courier, or have us deliver anywhere in Singapore.

A first quote

One request, one price.

Point us at your file, say what you want, and the answer is the price: measured from the file, with GST and any minimum shown, held for seven days.

curl https://www.additiveinn.com/api/partner/v1/quotes \
  -H "Authorization: Bearer ai_test_…" \
  -H "Content-Type: application/json" \
  -d '{
    "lines": [{
      "filename": "bracket.stl",
      "url": "https://files.example.com/bracket.stl",
      "sha256": "9f2c…",
      "bytes": 482113,
      "options": { "technology": "FDM", "material": "pla",
                   "colour": "Black", "quantity": 20 }
    }]
  }'

Who it is for

Businesses that print often.

If you send us files by email or upload them one at a time, the API does it for you.

  • An online store that sells printed products and wants orders to flow straight to production
  • A product or engineering team that prints parts every week and wants it in its own tools
  • A design studio or agency printing for its clients under its own name
  • A maker brand that has outgrown its own printers

Partner terms

What an account opens on.

  1. Prepaid. Orders are taken from what you have paid in. An order waits until your balance covers it; nothing is printed on credit.
  2. Our prices. Each quote is priced at our website's instant quote rates when it is made, before GST, which is added at 9%. A quote holds for 7 days. Orders below our minimum are topped up to it, as on our website.
  3. Lead times. Standard or express, as chosen when quoting. Express is priced into the quote.
  4. Cancelling. Free until printing starts. After that the work done is charged.
  5. Your files. You confirm you may have them printed. We keep them to make and remake your order, and never share them.
  6. Delivery. Within Singapore at the courier's fare plus S$2, or collected from our studio.
  7. Fair use. We may pause an account that is misused or left unpaid, and quote large or unusual jobs by hand.

The API guide

Everything your developer needs.

Send us your own 3D files from your own system and we print them: an instant price for each file, an order with one call, and status updates to your server as the job moves through our studio. The prices are the ones our website quotes for the same file and choices.

1. How it works

  1. Get a key. Under Webhooks and keys on this page, make a test key to build against (orders never print, nothing is charged) and a live key when you are ready.
  2. Quote. POST /quotes with links to your files and your choices (process, material, colour, quantity). We fetch each file, measure it ourselves and price it. A quote holds for 7 days.
  3. Order. POST /orders with the quote id, your reference, and where the parts go. The price and the exact file are locked to the quote.
  4. Pay. Your account is prepaid: an order starts as soon as your balance covers it. Pay in under Account (PayNow or card), or turn on auto top-up with a saved card.
  5. Follow it. We send signed events to your webhook as the order moves: accepted, printing, ready, shipped, completed.

2. Base URL and keys

https://www.additiveinn.com/api/partner/v1
Authorization: Bearer ai_live_…   (or ai_test_… for the sandbox)
Content-Type: application/json

A key is shown once when you make it; we keep only its hash. Revoke a key on this page at any time. Test keys see only sandbox quotes and orders, and live keys only live ones.

3. Print options

GET /print-options lists what you can choose: each technology (for example FDM), its materials with their colours and allowed finishing ids, its layerHeightsMm, its buildVolumeMm, the leadTimes (standard, express), minOrderValueCents and the file formats (stl, 3mf, obj). Options change as our studio adds materials; read them rather than hard-coding them.

4. Quotes

POST /quotes

{
  "leadTime": "standard",
  "lines": [
    {
      "lineRef": "BRACKET-1",
      "filename": "bracket.stl",
      "url": "https://files.example.com/bracket.stl",
      "sha256": "9f2c…64 hex…",
      "bytes": 482113,
      "options": {
        "technology": "FDM",
        "material": "pla",
        "colour": "Black",
        "quantity": 20,
        "infillPct": 15,
        "walls": 2,
        "layerHeightMm": 0.2,
        "finishing": ["pp_1"]
      }
    }
  ]
}
  • Up to 20 lines. url is public https; we fetch it once and refuse it if its sha256 or bytes differ from what you declared.
  • Every option is optional; anything left out takes our website's default.
  • STL, 3MF (one build plate per file) and OBJ, up to 50 MB. Export STEP or IGES as STL first. STL and OBJ are read in millimetres.
  • A quote has 55 seconds for all its files, fetching and measuring (504 quote_timeout past that: send fewer or smaller files per quote), and you can have two quotes running at once (429 quotes_busy for a third).

The answer (201) prices each line from the file itself: geometry (volumeCm3, areaCm2, sizeMm), the resolved options, unitCents and lineCents, then minOrderTopUpCents (an order below the minimum is topped up to it), subtotalCents, gstCents and totalCents. All amounts are Singapore dollars in cents; subtotalCents is before GST.

A line is refused (422, with the line's path and a code) when the file cannot be read, a choice is not on offer, the part does not fit our printers in any orientation, or the line is large enough to need a person's quote (needs_review): ask us then, and we quote it directly.

GET /quotes/{quoteId} reads a quote back. Its status is open, ordered or expired.

5. Orders

POST /orders with an Idempotency-Key header (your reference plus a revision, for example BN-100-r1; a retry with the same key and body returns the same order).

{
  "quoteId": "QP-…",
  "partnerOrderRef": "BN-100",
  "customer": { "businessName": "Your customer or you" },
  "fulfilment": { "mode": "partner_collect", "priority": "standard" },
  "notes": "Optional, up to 2000 characters"
}
  • priority is standard, or rush when the quote's leadTime was express; it must match the quote.
  • fulfilment.mode: partner_collect (you collect from our studio), partner_courier_pickup (your courier collects), or additive_inn_ship with shipTo { name, line1, line2?, postcode, phone? } in Singapore; we add a courier estimate and invoice the courier's actual fare plus S$2.
  • An order names a quote and nothing that costs money. A quote orders once (409 quote_used) and not after it expires (409 quote_expired).

An order the balance does not yet cover is accepted with billing.hold.reason = "prepay_required" and a payUrl; it starts the moment it is paid for. GET /orders/{orderId}, GET /orders?since= and POST /orders/{orderId}/cancel work as for every partner: free before printing starts.

GET /account shows your balance (availableCents) and what is on hold.

6. Webhooks

PUT /webhook with { "url": "https://…" } (one URL per environment), and POST /webhook/ping to test it. Every event is a POST signed with your signing secret, shown under Webhooks and keys:

X-AI-Event-Id:  evt_…
X-AI-Signature: t=1758261911,v1=<hex HMAC-SHA256 of "<t>.<raw body>" with your signing secret>

Check the signature and answer 2xx; we retry failures for about 15 hours. Events carry the order as GET /orders/{orderId} shows it: order.received, order.accepted, order.needs_info, order.status_changed (every move), order.shipped, order.completed, order.cancelled, and the billing events (order.billing_hold, order.billing_released). The same event id can arrive twice; act on it once.

7. Errors

Errors are JSON: { "error": { "code", "message", "details"? } }. 401 a missing or unknown key, 404 not found (or another environment's), 409 a conflict (quote_used, quote_expired, idempotency_conflict), 413 a file over the limit, 422 a problem with what you sent (each in details with a path), 429 too many requests (60 a minute, 20 quotes an hour, two quotes at once; wait retryAfter seconds), 504 quote_timeout a quote that ran out of time.

Frequently asked

What is the Additive Inn Print API?

An API that lets your own system send 3D files to our Singapore studio, get an instant price for each, place the order and follow it to delivery. You sign up yourself and your account is live at once.

How is the price worked out?

Exactly as our website's instant quote works it out: we measure the file on our servers and price the material, machine time and finishing you choose. You pay the same as you would through our quote page, before GST.

Which files and processes can I use?

STL, 3MF (one build plate per file) and OBJ, up to 50 MB each. The processes, materials, colours and finishing on offer are listed live by the API. Parts too large for our printers, or large jobs that need a person's quote, are flagged so you can ask us directly.

How do I pay?

Your account is prepaid. Pay in by PayNow or card on your partner page, or turn on auto top-up with a saved card. An order starts as soon as your balance covers it.

Can I try it before ordering for real?

Yes. Make a test key on your partner page. Test quotes, orders and webhooks behave exactly like live ones, but nothing is printed and nothing is charged.

Do you deliver?

Within Singapore, yes: we deliver at the courier's fare plus S$2, or you can collect from our studio or send your own courier.

Start with a test key today.

Open an account in minutes, build against the sandbox, and go live when you are ready.

Chat with us