Welcome to the Quote3D Documentation!

Core Concepts

This page introduces the foundational ideas and patterns that power the platform. Understanding these concepts will help you get the most out of the API and build robust integrations for 3D printing workflows.

API Base Route

For external API calls, send requests directly to https://api.quote3d.com/v2/... (for example, GET https://api.quote3d.com/v2/user).

In your software, set https://api.quote3d.com as the API host/base URL and call v2 paths such as /v2/user, /v2/file, and /v2/quotes.

1. Authentication & Security

All API endpoints require authentication using your Quote3D API token. For external calls, use the https://api.quote3d.com/v2 base route. Send it either as Authorization: Bearer <token> or X-API-Token. Generate tokens from your Quote3D dashboard and keep them secret.

Reminder: Keep your API tokens secure. Never share them publicly or commit them to version control.

2. Account Management

Manage your account, uploads, and usage statistics through dedicated endpoints:

  • GET /v2/user Retrieve your account details
  • GET /v2/user/uploads List all of the files you've uploaded to your account. These are listed from newest to oldest.
  • GET /v2/quota Get your current quota limits and usage for quotes and storage
  • GET /v2/usage Get detailed usage analytics including endpoint statistics, material usage, and time-based trends

3. File Management

Upload, download, and manage your 3D model files (STL, 3MF, OBJ formats):

  • Get a temporary upload_id to upload a new file with the public upload route.: GET /v2/file/upload-id - Get a temporary upload_id to upload a new file with the public upload route.
  • This route does NOT require authentication. Use this on your client side to upload files directly to our storage.: POST /v2/file/public/{upload_id} - This route does NOT require authentication. Use this on your client side to upload files directly to our storage.

    Using the Public Upload route lets you avoid routing large files through your backend server. This prevents exposing your API token and reduces server load.

  • Upload a file from your server side (requires authentication, use this when you want to upload from your backend): POST /v2/fileUpload a file from your server side (requires authentication, use this when you want to upload from your backend)
  • Download a file using its file_id: GET /v2/file/{file_id}Download a file using its file_id
  • Delete a file you no longer need: DELETE /v2/file/{file_id}Delete a file you no longer need

4. Part Info & Technical Analysis

Check if your models are printable, get part dimensions, and advanced technical metrics:

  • POST /v2/printability/{file_id} Instant Analysis - Check measurements, volume, surface area, and geometric integrity (open edges/non-manifold) before generating a quote.

Quote3D goes beyond simple dimension checks; it analyzes the model's manifold integrity and evaluates the bed adhesion risk critical for 3D printing. These metrics are provided in both Printability and Quote responses.

5. Quote Operations

Generate instant quotes for your 3D prints and manage quote history:

  • Start asynchronous quote calculation for a 3D model. Returns a job ID; use the jobs endpoint to retrieve the completed result.: POST /v2/file/quote/{file_id}Start asynchronous quote calculation for a 3D model. Returns a job ID; use the jobs endpoint to retrieve the completed result.
  • Alternative asynchronous quote endpoint. Returns a job ID that you can use to check status and fetch the completed result.: POST /v2/file/quote/{file_id}/asyncAlternative asynchronous quote endpoint. Returns a job ID that you can use to check status and fetch the completed result.
  • Check the status of an async quote job. Returns progress percentage and completion status.: GET /v2/jobs/{job_id}Check the status of an async quote job. Returns progress percentage and completion status.
  • Retrieve all your quote history with pagination support: GET /v2/quotesRetrieve all your quote history with pagination support
  • Get detailed information about a specific quote: GET /v2/quotes/{quote_id}Get detailed information about a specific quote
  • Remove a quote from your history: DELETE /v2/quotes/{quote_id}Remove a quote from your history

Async workflow: POST /v2/file/quote/{file_id} returns a job id first. Use GET /v2/jobs/{job_id} for the compact completed result, and GET /v2/quotes/{quote_id} for the stored detailed quote payload when available.

Quote Request Parameters

When generating a quote, you can provide custom configuration in the request body. Any parameters you don't specify will be automatically taken from your Dashboard Slice Profile settings. This allows you to override specific settings per quote while keeping defaults for others.

Important: If you don't provide a parameter in your request, the API will use the value from your Dashboard Slice Profile (Printer Profile, Material Profile, or Global Settings). Make sure to set up your default profiles in the Dashboard for consistent quotes. You can also configure all your parameters in a specific Printer Profile on the Dashboard and simply pass its 'printer_id' in your request to apply those settings instantly without passing them individually.

Configuration precedence: Values sent in the V2 API request override the selected user profile values; any field still missing then falls back to the user/global default profiles.

Root Parameters

ParameterTypeDescription
printer_idstringOptional. ID of a specific printer to use instead of the default printer.
quantitynumberOptional. The total number of copies to produce (Default: 1).

Quantity and Batch Production Logic

Our system utilizes an advanced packing algorithm based on the specified 'quantity':

  • FDM Technology: Parts are placed side-by-side on the build plate (X and Y axes) as space permits.
  • SLA Technology: Parts are positioned side-by-side in the resin vat (X and Y axes).
  • SLS Technology: Parts can be stacked in all axes (X, Y, and Z) to fully utilize the powder bed capacity.

Thanks to this optimized packing, if multiple parts can fit in a single batch, fixed overhead costs like preheating, cooling, and layer changes are only applied per required batch. This ensures highly realistic, cost-effective pricing for volume orders.

printer_config

Printer configuration parameters. All fields are optional and will use your default Printer Profile values if not provided.

ParameterTypeDescription
bed_size_xnumberBuild volume X dimension (mm)
bed_size_ynumberBuild volume Y dimension (mm)
bed_size_znumberBuild volume Z dimension (mm)
nozzle_diameternumberNozzle diameter (mm)
nozzle_countnumberNumber of nozzles
print_speednumberDefault print speed (mm/s)
max_print_speednumberMaximum print speed (mm/s)
travel_speednumberTravel speed (mm/s)
first_layer_speednumberFirst layer speed (mm/s)
layer_heightnumberLayer height (mm)
min_layer_heightnumberMinimum layer height (mm)
max_layer_heightnumberMaximum layer height (mm)
perimetersnumberNumber of perimeters/walls
top_solid_layersnumberTop solid layers count
bottom_solid_layersnumberBottom solid layers count
min_wall_countnumberMinimum wall count
max_wall_countnumberMaximum wall count
fill_densitynumberInfill density (0-100%)
infill_patternstringInfill pattern. Options: rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid, triangles, trihexagon, cubic, adaptivecubic, supportcubic, honeycomb, honeycomb3d, lateralhoneycomb, gyroid, monotonic, monotonicline, lightning. Default: rectilinear
support_materialbooleanEnable support material
support_overhang_anglenumberSupport overhang angle (degrees)
support_densitynumberSupport density (0-100%)
acceleration_printnumberPrint acceleration (mm/s²)
acceleration_travelnumberTravel acceleration (mm/s²)
acceleration_retractionnumberRetraction acceleration (mm/s²)
jerk_printnumberPrint jerk (mm/s)
jerk_travelnumberTravel jerk (mm/s)
jerk_retractionnumberRetraction jerk (mm/s)
min_hotend_tempnumberMinimum hotend temperature (°C)
max_hotend_tempnumberMaximum hotend temperature (°C)
min_bed_tempnumberMinimum bed temperature (°C)
max_bed_tempnumberMaximum bed temperature (°C)
hourly_costnumberMachine hourly cost
SLA SPECIFIC
sla_exposure_timenumberSLA: Exposure time per layer (seconds)
sla_bottom_exposure_timenumberSLA: Baseline exposure time (seconds)
sla_bottom_layer_countnumberSLA: Number of bottom layers
sla_lift_distancenumberSLA: Lift distance (mm)
sla_lift_speednumberSLA: Lift speed (mm/s)
sla_retract_speednumberSLA: Retract speed (mm/s)
sla_cleaning_costnumberSLA: Fixed cleaning cost per print (IPA, consumables)
SLS SPECIFIC
sls_laser_speednumberSLS: Laser speed (mm/s)
sls_hatch_spacingnumberSLS: Hatch spacing (mm)
sls_layer_thicknessnumberSLS: Layer thickness (mm)
sls_layer_recoat_timenumberSLS: Layer recoat time (seconds)
sls_preheat_timenumberSLS: Preheat time (seconds)
sls_cooling_timenumberSLS: Cooling time (seconds)
sla_light_off_delaynumberSLA: Light-off delay for each layer (seconds).
sla_transition_layer_countnumberSLA: Number of transition layers.
sla_drain_holesarraySLA: Drainage holes configuration to prevent suction cups.
sls_bb_multipliernumberSLS Bounding Box cost multiplier.
max_volumetric_flownumberMaximum volumetric flow rate in mm³/s.

material_config

Material configuration parameters. All fields are optional and will use your default Material Profile values if not provided.

Material Profile Integration: The filament_type parameter should match a material name from your Dashboard Material Profile. When you specify a filament_type (e.g., "PLA", "ABS", "PETG"), the API automatically loads all properties from that Material Profile, including density, temperatures, retraction settings, and pricing.

Pricing Accuracy: For accurate cost calculations, make sure to set both price_per_kg and price_per_gram in your Material Profile. The API uses these values to calculate material costs based on the actual filament weight used in the print. If these values are not set in your profile, you can override them in the API request.

Example: If you have a "PLA" material profile in your Dashboard with price_per_kg: 20.0 and price_per_gram: 0.02, you can simply send {"filament_type": "PLA"} in your request, and all pricing will be calculated automatically.

ParameterTypeDescription
filament_typestringFilament type (PLA, ABS, PETG, etc.)
colorstringColor name (e.g., 'White', 'Black', '#FFFFFF'). Note: For SLA/SLS technologies, color is only applied if 'post_processing' is set to 'painted'.
densitynumberMaterial density (g/cm³)
diameternumberFilament diameter (mm)
powder_bulk_densitynumberSLS: Bulk density of loose powder in g/cm³. Used for reusable powder and refresh calculations.
temperaturenumberPrint temperature (°C)
print_temp_minnumberMinimum print temperature (°C)
print_temp_maxnumberMaximum print temperature (°C)
bed_temperaturenumberBed temperature (°C)
bed_temp_minnumberMinimum bed temperature (°C)
bed_temp_maxnumberMaximum bed temperature (°C)
fan_speednumberFan speed (0-100%)
min_fan_speednumberMinimum fan speed (0-100%)
retraction_distancenumberRetraction distance (mm)
retraction_speednumberRetraction speed (mm/s)
price_per_kgnumberPrice per kilogram
price_per_gramnumberPrice per gram
support_cost_multipliernumberSupport material cost multiplier
sls_refresh_factornumberSLS Powder Refresh cost factor (e.g. 1.2).
max_volumetric_flownumberMaterial specific volumetric flow limit in mm³/s.
min_layer_timenumberMinimum layer time in seconds for cooling.

quote_config

Quote pricing configuration parameters. All fields are optional and will use your default Global Settings values if not provided. The currency defaults to your dashboard preference (e.g., 'USD', 'TRY', 'EUR').

ParameterTypeDescription
currencystringCurrency code (USD, TRY, EUR, GBP, JPY, CNY, RUB). Defaults to your dashboard preference.
tax_ratenumberTax rate percentage (0-100)
fixed_feenumberFixed fee per quote
energy_cost_per_kwhnumberEnergy cost per kWh
hollowingstringSLA/Resin specific: 'solid', '2mm' or '3mm' (Default: 'solid')
post_processingstringSLA/SLS specific: 'standard', 'sanding', 'painting' or 'painted' (Default: 'standard')
enable_batch_systembooleanEnable/disable batch calculation system (default: true)
material_wastage_factornumberFactor for calculating material wastage (e.g. 1.10 for 10% wastage).

Tip: Quotes are automatically saved to your account. You can access them anytime through the quote history endpoints.

6. Printer & Quote Profiles

Configure printer settings and pricing to get accurate quotes. You can manage your default profiles in the Dashboard Slice Profiles section, which will be used automatically when you don't specify parameters in API requests.

Profile Types

  • Printer Profile - Configure your printer settings (bed size, nozzle diameter, print speed, layer height, acceleration, jerk, temperatures, etc.) to match your actual printer. Set this as your default profile in the Dashboard, and it will be used for all quote requests unless you override specific parameters.
  • Material Profile - Set material properties (filament type, density, diameter, temperatures, fan speed, retraction settings, pricing) for each material you use. The API will automatically use the material profile matching the filament_type you specify in the request.
  • Global Settings - Configure global quote settings like tax rate, fixed fees, energy costs, and default currency. These settings apply to all quotes unless overridden in the request.

Best Practice: Set up your default profiles in the Dashboard Slice Profiles section. This way, you can make simple quote requests without specifying all parameters, and the API will automatically use your configured defaults. You can still override any parameter per-request when needed.

How Profile Merging Works

When you make a quote request, the API merges your request parameters with your Dashboard profiles using this priority:

  1. Request Parameters - Values you explicitly provide in the API request take highest priority
  2. User Profile - If you have a user-specific profile set as default, it's used next
  3. Global Profile - If no user profile exists, the system falls back to global defaults

This means you can override just the parameters you need (e.g., only layer_height or fill_density) while keeping all other settings from your Dashboard profiles.

7. Webhooks

Receive real-time notifications when events occur in your account:

  • POST /v2/webhooks - Create a new webhook endpoint
  • GET /v2/webhooks - List all your webhooks
  • GET /v2/webhooks/{webhook_id} - Get webhook details and delivery statistics
  • PUT /v2/webhooks/{webhook_id} - Update webhook settings
  • DELETE /v2/webhooks/{webhook_id} - Remove a webhook

Supported events include: quote.completed, quote.failed, job.status_changed, widget.added_to_cart, file.uploaded. Webhooks include HMAC-SHA256 signatures for security verification.

8. Analytics & Reporting

Get insights into your API usage and quote statistics:

  • GET /v2/analytics/quotes - Get comprehensive quote statistics including total quotes, average prices, material usage trends
  • GET /v2/analytics/popular - See your most popular materials and printer configurations
  • GET /v2/analytics/cost-trends - Analyze cost trends over time (daily, weekly, or monthly grouping)
  • GET /v2/analytics/export - Export your quotes and usage data as CSV or JSON

9. Rate Limiting & Quotas

Quote3D uses rate limiting to ensure fair usage and system stability:

  • Rate limits are applied per API token and vary by endpoint
  • Rate limit information is included in response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • When rate limited, you'll receive a 429 Too Many Requests response with a Retry-After header
  • Monthly quotas for quotes and storage are based on your subscription plan

Best Practice: Implement exponential backoff when handling rate limit errors to avoid overwhelming the API.

10. RESTful, Versioned API

  • All endpoints are versioned (e.g., /v2/)
  • Uses standard HTTP methods:
  • Follows OpenAPI 3.1.0 standards for schema and documentation
  • API changelog available at: