X3DStudios

Reserving machine time

Book a printer by the hour at $1.50/hr or $15/day and pay filament at raw cost, instead of the all-in per-gram rate: rates, minimums, booking and billing.

This is not the per-gram price list
Ordering a print at /print costs one all-in rate per gram — $0.12 for PLA, PETG and ABS — which already covers the machine time. Reserving a printer is a different product with a different price list: you pay $1.50 an hour or $15 a day for the machine, plus filament at raw cost ($0.02/g PLA). Never quote a reservation using the per-gram rate. That bills the machine twice — on the worked example below it comes out at $76.80 against a real $27.05, nearly three times too high.

A reservation gives you one printer in the X3D farm to yourself for as long as you hold it. You queue your own sliced files onto it, start and pause them from the dashboard, and watch the camera while they run. Nobody else's work goes on that machine until you release it.

It is the cheaper route when you have a lot of plastic to move and your own slicing profile, because you are renting the machine rather than buying finished parts. It is the wrong route for one bracket: for that, /print is simpler and comes with a quote up front.

The rates#

LineRateHow it is metered
Machine, hourly$1.50 / hourReal elapsed time from reserve to release, to two decimal places.
Machine, daily$15.00 / dayPer started day: 26 hours held is 2 days.
PLA$0.02 / gFilament actually consumed by your jobs.
PETG$0.025 / gFilament actually consumed by your jobs.
ABS$0.03 / gFilament actually consumed by your jobs.
Any other material$0.02 / gFalls back to the PLA rate — PC included.
Filament swap$0.00Loading a different spool is free.
Platform fee0%There is no per-order or per-account fee.
From PRICING in the farm configuration. Shipping the finished parts out is separate — see /docs/farm/packaging.
A day costs ten hours
$15 a day against $1.50 an hour puts the break-even at ten hours. Anything you expect to run past ten hours in one stretch is cheaper booked daily; a short afternoon of test plates is cheaper hourly.

Minimums and limits#

  • An hourly booking is 1 to 24 hours. Anything outside that is rejected with 400 Hours must be between 1 and 24.
  • A daily booking is a 24-hour block and bills per started day, minimum one day.
  • The hours you pick are an expectation, not a commitment — the bill comes from the real reserve-to-release time either way.
  • You can only reserve a printer whose status is AVAILABLE. Busy, printing, reserved, offline and maintenance machines cannot be booked.
  • A card on file is required before the reservation is created, because the time is metered and settled later.

Booking one#

  1. 1
    Add a card

    Reserving without a card on file returns 402 with code CARD_REQUIRED, and the dashboard opens the card dialog. Nothing is charged to it at this point.

  2. 2
    Pick an available printer

    Open /farm/dashboard/printers. Reserve is only enabled on a machine showing AVAILABLE; every other state shows why it is not bookable.

  3. 3
    Choose a duration

    Hourly, daily, or open-ended. Open-ended is metered hourly and runs until you release it — it is stored as an hourly reservation.

  4. 4
    Confirm

    The reservation is created immediately with a total of $0.00, the printer flips to RESERVED, and the clock starts at that moment.

    bash
    curl -X POST https://x3dstudios.com/api/farm/reserve \
      -H "Content-Type: application/json" \
      -b "$YOUR_SESSION_COOKIE" \
      -d '{"printerId":"prn_123","durationType":"HOURLY","hours":8}'
  5. 5
    Release it when you are done

    Releasing meters the reservation, closes it as COMPLETED and returns the printer to AVAILABLE. A reservation you forget to release keeps billing.

    bash
    curl -X DELETE "https://x3dstudios.com/api/farm/reserve?id=res_abc123" \
      -b "$YOUR_SESSION_COOKIE"
    # {"ok":true,"status":"COMPLETED","billedHours":8.42,"cost":12.63}
POST/api/farm/reserveSigned in

Hold an available printer. Creates the reservation at $0.00 and starts the meter.

Request body
printerIdstringrequired
The printer to hold. Missing returns 400.
durationTypestringoptionaldefault HOURLY
Anything that is not DAILY is treated as HOURLY.HOURLYDAILY
hoursnumberoptional
Expected hours for an hourly booking. Must be 1 to 24. Ignored for a daily booking.
claimbooleanoptionaldefault false
Operators only: take a printer that is not idle. A non-operator sending it gets 403.
200 response
{
  "reservationId": "res_9f2c1a80-...",
  "printerId": "prn_123",
  "status": "ACTIVE",
  "totalCost": 0,
  "totalHours": 8
}
DELETE/api/farm/reserve?id=res_abc123Signed in

Release the printer and meter the reservation. Returns billedHours and cost.

There is no GET on this route. Missing id returns 400, an unknown id returns 404, and releasing somebody else's reservation returns 403 unless you are an operator.

What you supply#

  • A sliced file: .3mf, .gcode or .gco. The farm does not slice for you on this path — the plate is yours, including its supports, its purge and its profile.
  • A file sliced for the model you booked. A plate sliced for a different Bambu machine is a hard fail in validation, not a warning.
  • A material choice. The farm loads Generic PLA, PETG, PC and ABS in twelve colours; ask for a spool with a filament change request and an operator loads it. One open request per printer at a time.
  • A card on file, and an account in good standing when the monthly charge runs.

Every file is validated before it is queued: dangerous G-code commands, nozzle and bed temperatures, and printer-model compatibility. A temperature above the material's usual ceiling is only a warning; what actually fails a file is a dangerous command, a temperature past the absolute hardware limit (320 C nozzle, 130 C bed), or a plate sliced for the wrong printer. A file that does not pass is refused with 422 and the check results, rather than being queued and failing on the machine.

Who operates the machine#

You do, remotely, for everything that is safe to do remotely. An operator does the physical work.

ActionWho
Upload and queue a jobYou, while you hold the reservation
Start, pause, resumeYou, while you hold the reservation
Cancel a job that has not startedYou — ownership is enough, no reservation needed
Stop a running printOperator only. Stopping locks the printer until the plate is cleared by hand.
Load or swap a spoolOperator, on your filament change request
Take the part off the plateOperator, once the bed has cooled to the material's target
Pack and post the partsOperator
Two things block a start
A pending filament change holds the printer until an operator loads the spool, and a finished print still sitting on the bed blocks the next one — the part is physically in the way. Both return 409 with a code you can act on: FILAMENT_CHANGE_PENDING and NEEDS_COLLECTION.

A worked example#

You book a printer hourly at 9:00, run three plates back to back, and release it at 18:30 — 9.5 hours held. The plates consume 640 g of PLA between them.

LineWorkingAmount
Machine time9.5 h x $1.50$14.25
Filament640 g x $0.02$12.80
Filament swaps2 swaps x $0.00$0.00
Platform fee0%$0.00
Total$27.05
Shipping the parts out is separate: the carrier rate plus a $3 handling fee, or $0 if you collect.

The same 640 g ordered as finished prints at /print would be 640 x $0.12 = $76.80 before postage. That gap is the whole point of the product: on a reservation you are buying machine hours and plastic, and doing the slicing, nesting and quality judgement yourself. It also cuts the other way — a machine you hold and do not use bills exactly the same as one you keep busy.

The meter does not stop on its own
An open-ended or forgotten reservation keeps billing at $1.50 an hour until it is released — $36 a day for an idle machine. Release it as soon as your last plate is off.

How it gets paid#

Nothing is taken at booking or at release. Released reservations and completed jobs accrue to your farm balance, and the whole balance is charged to your card on the 1st of the month, off-session, with a receipt by email. A balance under $0.50 is too small for Stripe to take and rolls into the following month. A declined card leaves the balance open and emails you; items are only marked settled once money actually moved, so a retry cannot double-charge you.