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.
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#
| Line | Rate | How it is metered |
|---|---|---|
| Machine, hourly | $1.50 / hour | Real elapsed time from reserve to release, to two decimal places. |
| Machine, daily | $15.00 / day | Per started day: 26 hours held is 2 days. |
| PLA | $0.02 / g | Filament actually consumed by your jobs. |
| PETG | $0.025 / g | Filament actually consumed by your jobs. |
| ABS | $0.03 / g | Filament actually consumed by your jobs. |
| Any other material | $0.02 / g | Falls back to the PLA rate — PC included. |
| Filament swap | $0.00 | Loading a different spool is free. |
| Platform fee | 0% | There is no per-order or per-account fee. |
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#
- 1Add 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.
- 2Pick 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.
- 3Choose 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.
- 4Confirm
The reservation is created immediately with a total of $0.00, the printer flips to RESERVED, and the clock starts at that moment.
bashcurl -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}' - 5Release 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.
bashcurl -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}
/api/farm/reserveSigned inHold an available printer. Creates the reservation at $0.00 and starts the meter.
printerIdstringrequired- The printer to hold. Missing returns 400.
durationTypestringoptionaldefaultHOURLY- 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.
claimbooleanoptionaldefaultfalse- Operators only: take a printer that is not idle. A non-operator sending it gets 403.
{
"reservationId": "res_9f2c1a80-...",
"printerId": "prn_123",
"status": "ACTIVE",
"totalCost": 0,
"totalHours": 8
}/api/farm/reserve?id=res_abc123Signed inRelease 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.
| Action | Who |
|---|---|
| Upload and queue a job | You, while you hold the reservation |
| Start, pause, resume | You, while you hold the reservation |
| Cancel a job that has not started | You — ownership is enough, no reservation needed |
| Stop a running print | Operator only. Stopping locks the printer until the plate is cleared by hand. |
| Load or swap a spool | Operator, on your filament change request |
| Take the part off the plate | Operator, once the bed has cooled to the material's target |
| Pack and post the parts | Operator |
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.
| Line | Working | Amount |
|---|---|---|
| Machine time | 9.5 h x $1.50 | $14.25 |
| Filament | 640 g x $0.02 | $12.80 |
| Filament swaps | 2 swaps x $0.00 | $0.00 |
| Platform fee | 0% | $0.00 |
| Total | $27.05 |
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.
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.