Upload and print
Upload an STL, 3MF, slicer project or sliced plate at /in/print, get an instant rupee quote weighed from a real slice, then request the print and our print partner in India prints and delivers it.
The /in/print page takes your own file, checks it, weighs it with a real slice, and gives you an instant price in rupees. Press Request this print, fill in a short form, and the team replies by email with the final price and how to pay. Our print partner in India prints the part and delivers it across India. You choose material, colour, quality, quantity, scale and infill; the price comes from the grams the slicer says will leave the nozzle. You do not need an account to upload, see a price or send a request.
What you can upload#
| Kind | Extensions | Size limit | What we read from it |
|---|---|---|---|
| Mesh | .stl | 100MB | Bounding box, volume, triangle count |
| Model or project | .3mf | 40MB | Bounding box, volume, triangle count; for a project, its filament table and the colours it assigns |
| Sliced | .3mf, .gcode.3mf | 40MB | Print footprint, filament grams, print time, plate preview |
A mesh must fit within 340 × 320 × 340 mm. The three dimensions are sorted before they are compared, so a part that only fits when rotated still passes. An already sliced file skips this check: your slicer already arranged it on a plate, and the footprint it reports can include purge lines and prime towers that are not part of the model.
How the upload works#
The bytes go from your browser straight to storage, not through the app. There is a 32 MiB cap on request bodies in front of the service, and anything over it is rejected before the app ever sees it, so a 100MB model could never arrive as an ordinary POST. Instead the app hands the browser a signed URL, the browser uploads to storage, and the app validates the stored object afterwards.
- 1The page asks for an upload URL
It sends the filename and the size. Format and size are checked here, before a single byte moves: an unsupported extension or an oversize file is refused now rather than after the transfer.
json{ "fileName": "bracket.stl", "size": 48213004 } - 2Your browser uploads to storage
A signed PUT URL comes back, valid for 15 minutes, pointing at a staging path. The transfer is browser to storage, so its speed is your connection, not ours.
- 3We validate what actually landed
The app measures the stored object itself rather than trusting the size the browser claimed, parses the bytes that actually landed, and only then copies the exact bytes it validated out of staging into their final path. That copy is the point of the staging step: the signed URL stays writable for its full 15 minutes, so validating and printing from the same writable object would let a small part be priced and a large one printed.
- 4The model is weighed
As soon as the file is stored, a slice is queued in the background. Until it lands the page shows Calculating, because showing an estimate and then quietly replacing it reads as the site changing its mind about the price. Move the scale slider and, once it rests, that size is sliced too: the weight line reads Weighing at 300% until it lands, and a size you have already weighed comes back at once.
/api/print-upload/initNo authReserve a staging path and return a 15 minute signed upload URL. Signed in, or signed out with the visitor cookie this route hands out.
/api/print-upload/completeNo authValidate the uploaded object, store it, and return its measurements, for the same account or the same browser that started the upload.
Uploading without an account#
Signed out, you can upload, import from a link, move the scale slider, check a project's colours and send a request, and every price is the same real slice. The page remembers your uploads with a cookie in this browser rather than an account, so it needs cookies allowed for the site.
- Request this print does not ask you to sign in. The form asks for your name, email, an optional phone number, your city and your six digit PIN code, with room for notes.
- Only the browser that uploaded a file can see it. A signed out upload is not in anyone's history and not in the community gallery.
- A signed out browser can upload 10 files an hour and 30 a day, and import 10 links an hour. There are also limits per connection and a daily ceiling across every signed out visitor. Each refusal says that signing in is the way past it, because an account has its own, larger allowance. File size limits are the same either way.
What the quote is computed from#
Weight. One rate per gram, all in, covers filament and normal machine time together, so a 21 g PLA part costs exactly 21 × ₹8 = ₹168 and nothing else is added except delivery.
| Material | Rate | Density |
|---|---|---|
| PLA | ₹8/g | 1.26 g/cm³ |
| PETG | ₹8/g | 1.27 g/cm³ |
| ABS | ₹10/g | 1.04 g/cm³ |
| ASA | ₹10/g | 1.07 g/cm³ |
| Flexible TPU | ₹12/g | 1.24 g/cm³ |
- Billable weight rounds up to the whole gram, like postage, so the figure agrees with the whole grams Bambu Studio shows you.
- There is no minimum order and no minimum per part.
- Any colour you pick or type costs the same per gram as a stock colour. Custom filament, a named brand or special filament, is not offered in India yet.
- Ordering several copies of one part discounts it: 5% off from 5 pieces, 10% off from 10 pieces.
- Delivery is ₹79, free on orders from ₹999. There is one delivery service across India: no express, no international delivery and no pickup.
- Priority print is 10% of the items, at least ₹200, if you choose it, and is added to the total as its own row. Normal print is included.
- Support removal, if you tick it, is ₹200.
The grams come from a real OrcaSlicer slice wherever one is possible, not from a volume estimate. The estimate reads a part as 30% solid walls plus infill, which undercounts anything thin badly: a stencil that weighed 21 g on the plate estimated at 12.9 g. That is why Request this print waits until the slice lands. An already sliced plate is priced from the filament figure in its own header rather than from that estimate.
The options you choose#
materialstringoptionaldefaultpla- The plastic. Changes the rate per gram and the density used to turn volume into weight. Custom filament is not offered in India yet. See /in/docs/materials.
plapetgabsasatpu colorstringoptionaldefaultBlack- One of the stock swatches, or a hex or name you type beside the custom swatch. In India a custom colour costs the same per gram as a stock one.
qualitystringoptionaldefaultstandard- Standard is 0.2 mm layers at 1×. Premium is 0.1 mm layers at 1.75×: a finer surface and roughly twice the machine time.
standardpremium quantityintegeroptionaldefault1- How many copies of this file. Bulk breaks: 5% off from 5 pieces, 10% off from 10 pieces.
scalePercentintegeroptionaldefault100- 50% to 300%, in steps of 5. Every size other than 100% is priced from its own slice at that size, never from the 100% slice multiplied up. Plastic grows more slowly than the cube of the scale, because walls and top and bottom skins keep their thickness while only the infill inside grows: one model measured 5.85 times the plastic at 200% and 17.3 times at 300%, not 8 and 27. A request waits until that size is weighed, and a size the slicer cannot weigh cannot be requested, though other sizes still can. The scaled part still has to fit 340 mm. A sliced file, a Bambu Studio or OrcaSlicer project and a print in colour are 100% only.
infillintegeroptionaldefault20- 10% to 100%, in steps of 5. Higher infill means a stronger, heavier, more expensive part. Above 35% the slice, run at the profile's sparse default, stops being representative, and the quote falls back to the volume estimate, which approaches solid volume exactly where the slice diverges.
notestringoptional- Free text sent with your request: orientation preferences, colour matching, anything a person should see. The request keeps the first 500 characters.
A project in its own colours#
Upload a Bambu Studio or OrcaSlicer project that assigns two or more filaments and a Project colours card appears: the colours it uses, each with its slot number and material, and a choice between Print in N colours and One colour instead. Colour is selected by default. We slice each plate in its own colours in the background, and the card shows progress such as Slicing plate 2 of 7 with a clock. While that runs the price reads Slicing in colour and Request this print waits; One colour instead can be requested straight away.
- When the slice is done the price is what it measured, and colours are counted by what actually prints. Five or more adds the ₹500 second AMS fee once for the line, shown as its own row in the price.
- In colour, scale is 100%, quality is standard 0.2 mm, infill comes from our profile, and the material is the plastic the project's filaments name. Those controls are locked until you choose One colour instead.
- If colour is not possible (a plate using two filament types, even PLA and PLA-CF, different base plastics on different plates, a colour change at a set layer height, more than eight colours, or only one filament really printing) the card says why and the project can be requested in one colour.
- See /in/docs/studio/multi-color for what colour adds to the price in India.
Sending the request#
Under the price you see delivery in India: ₹79, free on orders from ₹999, 3 to 7 days after printing. Choose the print speed and whether you want supports removed. Press Request this print and a short form opens: your name, email, an optional phone number, your city, your six digit PIN code, and notes. Send it and the team replies by email with the final price and how to pay. Nothing is charged when the request is sent. There is no checkout or cart on the India site yet, and card payment in rupees is not live yet.
| Print speed | Price | Printed in |
|---|---|---|
| Normal print | Included | 1 to 3 business days |
| Priority print | 10% of the items, at least ₹200 | 1 to 2 business days |
Troubleshooting#
| What you see | What it means | What to do |
|---|---|---|
| Unsupported file type. Use STL or 3MF (a model or a sliced plate). | The extension is not one we print. OBJ and a bare .gcode are the common cases. | Convert an OBJ to STL. For a .gcode, export the plate sliced file (.gcode.3mf) from your slicer. |
| GLB files aren't accepted. Export the model as STL or 3MF and upload that. | You chose a .glb, which /in/print does not take. | Export the model as STL or 3MF from the tool that made it, and upload that. |
| File too large (max 100MB). | Over the ceiling for that format: 100MB for STL, 40MB for 3MF. | Decimate the mesh, or for a sliced plate export it again with fewer objects on it. |
| A message that the model is larger than the 340×320×340mm build volume. | It does not fit in any orientation. | Scale it down, or split it and request the pieces. |
| We couldn't read a printable mesh from that file. | The parser could not get triangles and a bounding box out of it. | Export it again from your CAD tool, and run the free check at /in/docs/studio/printability first. |
| We couldn't read the print footprint/filament from that sliced file. | The file is a sliced plate, but its G-code header carries no usable filament or footprint numbers. | In Bambu Studio or OrcaSlicer, slice the plate again and use Export plate sliced file, or upload the saved project and let us slice it. |
| Couldn't upload that file to storage. Check your connection and try again. | The direct transfer from your browser to storage failed part way, or the signed URL had already expired. | Select the file again to get a fresh 15 minute link. |
| That upload reference isn't valid. | The staging path or its token did not match your account or browser. | Choose the file again rather than retrying the same reference. |
| A message that there are too many uploads and to try again shortly. | You are over 40 uploads in the last hour. | Wait for the window to roll over. The response carries Retry-After. |
| We could not recognise this browser. Allow cookies for this site, or sign in to continue. | You are signed out, and the browser did not send the cookie that ties an upload to it. | Allow cookies for x3dstudios.com, or sign in. |
| Too many uploads from this browser in the last hour. Sign in to keep going. | A signed out browser is over 10 uploads in an hour (or 30 in a day, which says today instead). | Sign in. An account is counted on its own allowance of 40 an hour. |
| We could not weigh that file yet. | The request was sent before the file had a weight. | Give the slice up to a minute, then send the request again. |
| A PIN code is six digits. | The delivery PIN code on the form is not a six digit Indian PIN code. | Check the PIN code and send again. |
| Too many requests from here just now. Please try again in a while, or email contact@x3dstudios.com. | More than 10 requests have been sent from your connection in the last hour. | Wait a while, or email contact@x3dstudios.com with the file name and what you chose. |
Questions
Which files can I upload for 3D printing in India?
STL and 3MF: a model, a Bambu Studio or OrcaSlicer project, or a plate you sliced and exported as .gcode.3mf. A bare .gcode is not accepted, so use Export plate sliced file instead. OBJ and GLB are not accepted either, so export the model as STL or 3MF first. STL is capped at 100MB, every 3MF at 40MB.
Do I need an account to get a price or request a print?
No. Anyone can upload a file at /in/print, see its price in rupees and press Request this print. The form asks for your name, email, an optional phone number, your city and your six digit PIN code. The team replies by email with the final price and how to pay.
Can I pay by card on the India site?
Not yet. There is no checkout or cart on the India site. You send a request, nothing is charged when you send it, and the team replies by email with the final price and how to pay.
How much does it cost to 3D print my file in India?
It is priced by weight. The billable grams, rounded up to the whole gram, times the material's rate: PLA and PETG ₹8/g, ABS and ASA ₹10/g, TPU ₹12/g. Machine time is included. Premium 0.1 mm layers cost 1.75 times standard. There is no minimum order. Delivery is ₹79, free on orders from ₹999.
How long does it take to get my print in India?
A normal print is printed in 1 to 3 business days, then delivered in 3 to 7 days. Priority print is printed in 1 to 2 business days instead, for 10% of the items, at least ₹200.
Why doesn't a model at 200% cost eight times as much?
Because we weigh it again at that size rather than multiplying. Doubling every side makes the volume eight times bigger, but a print is not solid: its walls and its top and bottom skins stay the same thickness, and only the sparse infill inside grows with it. One model we measured used 5.85 times the plastic at 200% and 17.3 times at 300%, against the 8 and 27 times its volume grew. You pay for the slice at the size you request, so the price follows the plastic.
How big a part can I upload?
Up to 340 × 320 × 340 mm. The check sorts your dimensions before comparing them, so a long part that fits when rotated is accepted. Anything larger has to be scaled down or split.
Related guides
- Multi-Color 3D Printing Service: What to Check FirstBefore you order from a multi-color 3D printing service, check whether your file carries the colors, how they are laid out, and what each quote line means.
- What Is a 3MF File? Why It Beats STLWhat is a 3MF file? The 3MF file format zips your mesh with millimetre units, colour, materials and print settings. See what is inside and why it beats STL.
- STL vs 3MF vs OBJ vs STEP: 3D Export Formats ExplainedSTL vs 3MF for 3D printing, plus OBJ and STEP: what each export format stores, which one to upload, and when each one is the right choice.