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.
1. Authentication & Security
All API endpoints require authentication using a Bearer JWT token. You generate tokens from your Quote3D dashboard and include them in the Authorization header of every request.
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/userRetrieve your account detailsGET /v2/user/uploadsList all of the files you've uploaded to your account. These are listed from newest to oldest.GET /v2/quotaGet your current quota limits and usage for quotes and storageGET /v2/usageGet detailed usage analytics including endpoint statistics, material usage, and time-based trends
3. Part Info
Check if your models are printable and get part dimensions:
POST /v2/printability/{file_id}Gets measurements of the uploaded file in order to check that the part will fit in the printer before your generate a quote.
If you are familiar with Three JS, you can calculate this with Javascript on the client side of your web app, bypassing the need to use this endpoint. This is provided as an alternative to give you more options.
4. 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/file— Upload 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
5. Quote Operations
Generate instant quotes for your 3D prints and manage quote history:
- Generate an instant quote for a 3D model. Returns detailed pricing, material usage, and print time estimates.:
POST /v2/file/quote/{file_id}— Generate an instant quote for a 3D model. Returns detailed pricing, material usage, and print time estimates. - Generate a quote asynchronously. Returns a job ID that you can use to check the status.:
POST /v2/file/quote/{file_id}/async— Generate a quote asynchronously. Returns a job ID that you can use to check the status. - 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/quotes— Retrieve 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
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.
printer_config
Printer configuration parameters. All fields are optional and will use your default Printer Profile values if not provided.
| Parameter | Type | Description |
|---|---|---|
| bed_size_x | number | Build volume X dimension (mm) |
| bed_size_y | number | Build volume Y dimension (mm) |
| bed_size_z | number | Build volume Z dimension (mm) |
| nozzle_diameter | number | Nozzle diameter (mm) |
| nozzle_count | number | Number of nozzles |
| print_speed | number | Default print speed (mm/s) |
| max_print_speed | number | Maximum print speed (mm/s) |
| travel_speed | number | Travel speed (mm/s) |
| first_layer_speed | number | First layer speed (mm/s) |
| layer_height | number | Layer height (mm) |
| min_layer_height | number | Minimum layer height (mm) |
| max_layer_height | number | Maximum layer height (mm) |
| perimeters | number | Number of perimeters/walls |
| top_solid_layers | number | Top solid layers count |
| bottom_solid_layers | number | Bottom solid layers count |
| min_wall_count | number | Minimum wall count |
| max_wall_count | number | Maximum wall count |
| fill_density | number | Infill density (0-100%) |
| infill_pattern | string | Infill pattern. Options: rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid, triangles, trihexagon, cubic, adaptivecubic, supportcubic, honeycomb, honeycomb3d, lateralhoneycomb, gyroid, monotonic, monotonicline, lightning. Default: rectilinear |
| support_material | boolean | Enable support material |
| support_overhang_angle | number | Support overhang angle (degrees) |
| support_density | number | Support density (0-100%) |
| acceleration_print | number | Print acceleration (mm/s²) |
| acceleration_travel | number | Travel acceleration (mm/s²) |
| acceleration_retraction | number | Retraction acceleration (mm/s²) |
| jerk_print | number | Print jerk (mm/s) |
| jerk_travel | number | Travel jerk (mm/s) |
| jerk_retraction | number | Retraction jerk (mm/s) |
| min_hotend_temp | number | Minimum hotend temperature (°C) |
| max_hotend_temp | number | Maximum hotend temperature (°C) |
| min_bed_temp | number | Minimum bed temperature (°C) |
| max_bed_temp | number | Maximum bed temperature (°C) |
| hourly_cost | number | Machine hourly cost |
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.
| Parameter | Type | Description |
|---|---|---|
| filament_type | string | Filament type (PLA, ABS, PETG, etc.) |
| density | number | Material density (g/cm³) |
| diameter | number | Filament diameter (mm) |
| temperature | number | Print temperature (°C) |
| print_temp_min | number | Minimum print temperature (°C) |
| print_temp_max | number | Maximum print temperature (°C) |
| bed_temperature | number | Bed temperature (°C) |
| bed_temp_min | number | Minimum bed temperature (°C) |
| bed_temp_max | number | Maximum bed temperature (°C) |
| fan_speed | number | Fan speed (0-100%) |
| min_fan_speed | number | Minimum fan speed (0-100%) |
| retraction_distance | number | Retraction distance (mm) |
| retraction_speed | number | Retraction speed (mm/s) |
| price_per_kg | number | Price per kilogram |
| price_per_gram | number | Price per gram |
| support_cost_multiplier | number | Support material cost multiplier |
quote_config
Quote pricing configuration parameters. All fields are optional and will use your default Global Settings values if not provided.
| Parameter | Type | Description |
|---|---|---|
| currency | string | Currency code (USD, EUR, etc.) |
| tax_rate | number | Tax rate percentage (0-100) |
| fixed_fee | number | Fixed fee per quote |
| energy_cost_per_kwh | number | Energy cost per kWh |
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 layer heights. 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:
- Request Parameters - Values you explicitly provide in the API request take highest priority
- User Profile - If you have a user-specific profile set as default, it's used next
- 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 endpointGET /v2/webhooks- List all your webhooksGET /v2/webhooks/{webhook_id}- Get webhook details and delivery statisticsPUT /v2/webhooks/{webhook_id}- Update webhook settingsDELETE /v2/webhooks/{webhook_id}- Remove a webhook
Supported events: quote.completed, quote.failed, 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 trendsGET /v2/analytics/popular- See your most popular materials and printer configurationsGET /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: