¡Bienvenido a la Documentación de Quote3D! ⏳

Conceptos: archivos, presupuestos y trabajos

Esta página introduce las ideas y patrones fundamentales que impulsan la plataforma. Comprender estos conceptos le ayudará a aprovechar al máximo la API y a construir integraciones robustas para flujos de trabajo de impresión 3D.

Ruta base de la API

Para llamadas externas a la API, envíe las solicitudes directamente a https://api.quote3d.com/v2/... (por ejemplo, GET https://api.quote3d.com/v2/user).

En su software, configure https://api.quote3d.com como el host de la API o URL base y llame a las rutas v2 como /v2/user, /v2/file y /v2/quotes.

1. Autenticación y Seguridad

Todos los endpoints requieren autenticación con su token de API de Quote3D, con una excepción: la ruta pública de subida documentada en Gestión de archivos. Para llamadas externas, use la ruta base https://api.quote3d.com/v2. Envíe el token como Authorization: Bearer YOUR_TOKEN o como X-API-Token. Genere los tokens desde su panel de Quote3D y manténgalos en secreto.

Los tokens pueden tener alcances definidos. Un token de acceso total llega a todos los endpoints, mientras que un token con alcance de widget está restringido a los endpoints que el widget incrustado necesita. Cualquier llamada fuera del alcance de un token devolverá un error 403. Puede ver y cambiar el alcance de un token en la página de Tokens de su panel de control.

Recordatorio: Mantenga sus API tokens seguros. Nunca los comparta públicamente ni los incluya en el control de versiones.

2. Gestión de Cuenta

Administre su cuenta, cargas y estadísticas de uso a través de endpoints dedicados:

  • GET /v2/user Recupere los datos de su cuenta, su plan y sus cuotas mensuales: aquí se encuentran quotes_used, quotes_limit, storage_used, storage_limit y reset_date
  • GET /v2/user/uploads Liste todos los archivos que ha subido a su cuenta. Estos se listan del más reciente al más antiguo.
  • GET /v2/quota Recupere sus límites de frecuencia: el límite global más un desglose por endpoint con las llamadas restantes y los tiempos de reinicio, junto con sus recuentos de solicitudes de hoy, este mes, este año y de siempre
  • GET /v2/usage Obtenga análisis de uso detallados incluyendo estadísticas de endpoints, uso de materiales y tendencias basadas en el tiempo
  • GET /v2/config Las tecnologías activas de la cuenta, sus impresoras, sus materiales con sus colores (en stock o no) y sus valores de precio por defecto: todo lo que ofrece el widget. Los tokens de widget también pueden leerlo.

3. Gestión de archivos

Suba, descargue y gestione sus archivos de modelo 3D (formatos STL, 3MF, OBJ, STEP):

  • GET /v2/file/upload-id — Obtenga un upload_id temporal para subir un nuevo archivo con la ruta de subida pública.
  • POST /v2/file/public/{upload_id} — Esta ruta NO requiere autenticación. Utilícela en su lado del cliente para subir archivos directamente a nuestro almacenamiento.

    Utilizar la ruta de Subida Pública le permite evitar enrutar archivos grandes a través de su servidor backend. Esto previene exponer su token de API y reduce la carga del servidor.

  • POST /v2/file — Suba un archivo desde su lado del servidor (requiere autenticación, utilice esto cuando quiera subir desde su backend)
  • GET /v2/file/{file_id} — Descargue un archivo utilizando su file_id
  • DELETE /v2/file/{file_id} — Elimine un archivo que ya no necesita

La subida se rechazará si el archivo no es un modelo STL, 3MF, OBJ o STEP válido, o si supera el límite de tamaño de archivo de la plataforma (50 MB por defecto). Los archivos STEP (.step/.stp) se teselan en el servidor con la misma configuración que usa OrcaSlicer (desviación lineal de 0,003 mm, desviación angular de 0,5 rad); todos los cuerpos de un ensamblaje se combinan y las longitudes se convierten a milímetros. Ambas rutas de subida aplican las mismas comprobaciones.

Cómo se almacenan sus archivos

Los modelos subidos se almacenan de forma cifrada y nunca son accesibles públicamente — no existe ningún enlace que sirva un archivo almacenado directamente. El campo file_path en las respuestas es la ruta de descarga autenticada (GET /v2/file/{file_id}), no una ubicación en el disco, así que trátelo como un endpoint en lugar de una URL que pueda compartir. Eliminar un archivo lo elimina del almacenamiento, no solo de sus listados.

4. Información de la pieza y análisis técnico

Verifique si sus modelos son imprimibles, obtenga dimensiones de la pieza y métricas técnicas avanzadas:

  • POST /v2/printability/{file_id} Análisis Instantáneo – Verifique medidas, volumen, área de superficie e integridad geométrica (bordes abiertos/non-manifold) antes de generar un presupuesto.

Quote3D va más allá de las simples verificaciones de dimensiones; analiza la integridad manifold del modelo y evalúa el riesgo de adhesión a la cama, crítico para la impresión 3D. Estas métricas se proporcionan tanto en las respuestas de Printability como de Quote.

5. Operaciones de Cotización

Genere cotizaciones instantáneas para sus impresiones 3D y gestione el historial de cotizaciones:

  • POST /v2/file/quote/{file_id} — Inicia el cálculo asíncrono de un presupuesto para un modelo 3D. Devuelve un ID de trabajo; utilice el endpoint de trabajos para obtener el resultado completado.
  • POST /v2/file/quote/{file_id}/async — Endpoint asíncrono alternativo para generar presupuestos. Devuelve un ID de trabajo que puede usar para verificar el estado y obtener el resultado completado.
  • GET /v2/jobs/{job_id} — Verifique el estado de un trabajo de cotización asíncrono. Devuelve el porcentaje de progreso y el estado de finalización.
  • GET /v2/quotes — Recupere todo su historial de cotizaciones con soporte de paginación
  • GET /v2/quotes/{quote_id} — Obtenga información detallada sobre una cotización específica
  • DELETE /v2/quotes/{quote_id} — Elimina una cotización de su historial

Flujo de trabajo asíncrono: POST /v2/file/quote/{file_id} devuelve primero un ID de trabajo. Usa GET /v2/jobs/{job_id} para el resultado compacto completado, y GET /v2/quotes/{quote_id} para la carga útil detallada de la cotización almacenada cuando esté disponible.

Parámetros de Solicitud de Cotización

Al generar una cotización, puede proporcionar una configuración personalizada en el cuerpo de la solicitud. Cualquier parámetro que no especifique se tomará automáticamente de la configuración de su Perfil de Rebanado en el Panel de Control. Esto le permite anular configuraciones específicas por cotización mientras mantiene los valores predeterminados para otras.

Importante: Si no proporciona un parámetro en su solicitud, la API utilizará el valor de su Perfil de Rebanado en el Panel de Control (Perfil de Impresora, Perfil de Material o Configuración Global). Asegúrese de configurar sus perfiles predeterminados en el Panel de Control para obtener cotizaciones consistentes. También puede configurar todos sus parámetros en un Perfil de Impresora específico en el Panel de Control y simplemente pasar su 'printer_id' en su solicitud para aplicar esos ajustes instantáneamente sin pasarlos individualmente.

Precedencia de configuración: Los valores enviados en la solicitud de la API V2 anulan los valores del perfil de usuario seleccionado; cualquier campo que aún falte recurrirá a los perfiles predeterminados de usuario/globales.

Las tablas a continuación cubren los parámetros que las integraciones suelen anular con más frecuencia. No son la lista completa; el motor de cotización acepta muchos más campos de impresora, material y precios, y cada uno de ellos puede configurarse una vez en sus Perfiles de laminado del Dashboard en lugar de enviarse en cada solicitud. Configure sus perfiles allí y envíe solo lo que varía por cotización; la lista completa de campos se encuentra en el esquema OpenAPI.

Request Validation

Los campos numéricos de printer_config, material_config y quote_config se comprueban contra sus límites antes de encolar el trabajo. Un valor fuera de rango, un número no finito (NaN, Infinity), un tipo incorrecto o un número negativo donde solo tienen sentido el cero y los valores superiores se rechaza con HTTP 400 y un VALIDATION_ERROR que indica el campo exacto. El cero se sigue aceptando allí donde tiene sentido: una velocidad o aceleración de 0 para un rol concreto significa «usar el valor predeterminado de la impresora», la misma convención que utiliza OrcaSlicer.

  • Límites de temperatura: las temperaturas del material (temperature y bed_temperature, tanto si se envían en la petición como si se leen del Perfil de material) se comprueban contra los valores min_hotend_temp / max_hotend_temp y min_bed_temp / max_bed_temp de la impresora. Un material que necesita más calor del que puede aportar la impresora seleccionada se rechaza en lugar de cotizarse. Solo FDM: las tecnologías de resina y polvo no tienen boquilla ni cama caliente. Deje los límites de la impresora sin definir para omitir la comprobación.
  • Tecnologías habilitadas: si ha restringido las tecnologías en su Configuración global, se rechaza toda solicitud de cotización de una tecnología deshabilitada. Deje el ajuste vacío para aceptar todas las tecnologías.
  • Campos de precio del material: price_per_gram es el valor que cobra el motor. Al guardar un Perfil de material, price_per_kg se recalcula automáticamente a partir de él (y price_per_gram se deriva de price_per_kg cuando solo se indica el precio por kilogramo), de modo que ambos nunca pueden discrepar.

Parámetros Raíz

ParámetroTipoDescripción
technologystringOpcional. Tecnología de producción: 'FDM', 'SLA', 'SLS', 'SLM' o 'MJF' ('RESIN' se acepta como un alias para 'SLA', y 'DMLS' y 'LPBF' para 'SLM'). Determina qué parámetros específicos de la tecnología se aplican y cómo se empaquetan las piezas para la producción por lotes. Si se omite, se utiliza la tecnología de la impresora seleccionada, recurriendo a 'FDM' por defecto.
printer_idstringOpcional. ID de una impresora específica para usar en lugar de la impresora predeterminada.
quantitynumberOpcional. El número total de copias a producir (Predeterminado: 1).

Lógica de Cantidad y Producción por Lotes

Nuestro sistema utiliza un algoritmo de empaquetado avanzado basado en la 'cantidad' especificada:

  • Tecnología FDM: Las piezas se colocan lado a lado en la placa de construcción (ejes X e Y) según el espacio disponible.
  • Tecnología SLA: Las piezas se posicionan lado a lado en el recipiente de resina (ejes X e Y).
  • Tecnología SLS: Las piezas se pueden apilar en todos los ejes (X, Y y Z) para utilizar completamente la capacidad de la cama de polvo.

Gracias a este empaquetado optimizado, si múltiples piezas pueden caber en un solo lote, los costos fijos generales como el precalentamiento, el enfriamiento y los cambios de capa solo se aplican por cada lote requerido. Esto asegura precios altamente realistas y rentables para pedidos al por mayor.

printer_config

Parámetros de configuración de la impresora. Todos los campos son opcionales y utilizarán los valores predeterminados de su Perfil de Impresora si no se proporcionan.

ParámetroTipoDescripción
nozzle_diameternumberFDM nozzle diameter (mm). Drives extrusion width, so it changes both print time and material use.
support_materialbooleanEnable support generation. When omitted, the profile value is used.
bed_size_xnumberBuild volume X dimension (mm)
bed_size_ynumberBuild volume Y dimension (mm)
bed_size_znumberBuild volume Z dimension (mm)
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_patternstringPatrón de relleno (infill). Predeterminado: rectilinear. Básico (rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid), Triángulo (triangles, trihexagon), Cúbico (cubic, adaptivecubic, supportcubic), Panal (honeycomb, honeycomb3d, lateralhoneycomb), Avanzado (gyroid), Especial (monotonic, monotonicline), De llenado de espacio (hilbertcurve, archimedeanchords, octagramspiral). hilbertcurve, archimedeanchords y octagramspiral son aceptados pero no tienen un generador propio; se citan como rectilinear. Los valores se comparan sin distinguir mayúsculas de minúsculas y se ignoran los separadores, por lo que tri-hexagon y Zig Zag funcionan; también se acepta la ortografía de OrcaSlicer 3dhoneycomb. lightning, quartercubic, laterallattice, crosshatch, concentric, tpmsd y tpmsfk no son compatibles y devuelven un error 400.
support_overhang_anglenumberSupport overhang angle (degrees)
support_densitynumberSupport density (0-100%)
brim_enabledbooleanEnable brim generation for FDM quotes
brim_widthnumberBrim width in millimeters when brim is enabled
acceleration_printnumberPrint acceleration (mm/s²)
acceleration_travelnumberTravel acceleration (mm/s²)
acceleration_retractionnumberRetraction acceleration (mm/s²)
acceleration_outer_wallnumberOuter wall acceleration (mm/s²). 0 uses acceleration_print.
acceleration_inner_wallnumberInner wall acceleration (mm/s²). 0 uses acceleration_print.
acceleration_sparse_infillnumberSparse infill acceleration (mm/s²). 0 uses acceleration_print.
acceleration_solid_infillnumberSolid infill acceleration (mm/s²). 0 uses acceleration_print.
acceleration_top_surfacenumberTop surface acceleration (mm/s²). 0 uses acceleration_print.
acceleration_bridgenumberBridge acceleration (mm/s²). 0 uses acceleration_print.
acceleration_first_layernumberFirst layer acceleration (mm/s²). 0 uses acceleration_print.
retraction_minimum_travelnumberTravel moves shorter than this do not retract (mm). Reference default 1.
z_hop_mmnumberNozzle lift before a travel move (mm). 0 disables it. Reference default 0.4.
bed_exclude_xnumberUnusable bed edge margin on X (mm), removed from the packing area.
bed_exclude_ynumberUnusable bed edge margin on Y (mm), removed from the packing area.
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
ESPECÍFICO DE SLA
sla_exposure_timenumberSLA: Tiempo de exposición por capa (segundos)
sla_bottom_exposure_timenumberSLA: Tiempo de exposición base (segundos)
sla_bottom_layer_countnumberSLA: Número de capas inferiores
sla_lift_distancenumberSLA: Distancia de elevación (mm)
sla_lift_speednumberSLA: Velocidad de elevación (mm/min)
sla_retract_speednumberSLA: Velocidad de retracción (mm/min)
sla_cleaning_costnumberSLA: Costo fijo de limpieza por impresión (IPA, consumibles)
sla_pad_enabledbooleanSLA: imprimir el modelo sobre una base/raft. Desactivado por defecto; la resina de la base se cuenta como material de soporte.
sla_pad_wall_thicknessnumberSLA: grosor de la pared de la base en mm. Alias: sla_pad_height.
sla_pad_wall_heightnumberSLA: altura de la pared de la base en mm (borde elevado alrededor de la cavidad de la base).
sla_pad_wall_slopenumberSLA: inclinación de la pared de la base en grados (45-90). La base se estrecha hacia abajo con este ángulo.
sla_pad_brim_sizenumberSLA: tamaño del brim de la base en mm. Alias: sla_pad_expansion.
sla_pad_max_merge_distancenumberSLA: los puntos de contacto de los soportes más cercanos que esta distancia se fusionan en una sola isla de la base (mm).
sla_support_head_front_diameternumberSLA: diámetro frontal (punta) de la cabeza del soporte en mm.
sla_support_head_penetrationnumberSLA: profundidad con la que la cabeza del soporte se hunde en la superficie del modelo (mm).
sla_support_head_widthnumberSLA: longitud de la varilla de la cabeza del soporte en mm.
sla_support_pillar_diameternumberSLA: diámetro del pilar de soporte en mm. Determina la mayor parte del volumen de resina del soporte.
sla_support_base_diameternumberSLA: diámetro de la base (pie) del pilar de soporte en mm.
sla_support_base_heightnumberSLA: altura de la base (pie) del pilar de soporte en mm.
sla_support_object_elevationnumberSLA: elevación del objeto sobre la plataforma de impresión en mm. También añade capas impresas, por lo que afecta al tiempo de impresión. Se aplica solo cuando se generan soportes.
sla_support_critical_anglenumberSLA: pendiente del puente en grados utilizada al trazar los soportes. No es lo mismo que support_overhang_angle.
sla_support_max_pillar_link_distancenumberSLA: los pilares que estén más alejados que este valor no estarán entrelazados (mm).
sla_support_max_bridge_lengthnumberSLA: puente lateral más largo que un cabezal de soporte puede realizar para llegar a la plataforma (mm).
sla_support_max_bridges_on_pillarnumberSLA: cuántos puentes acepta un solo pilar.
sla_support_points_densitynumberSLA: densidad de puntos de soporte como porcentaje, 100 = normal. NO es la misma cantidad que support_density, que es el porcentaje de relleno de soporte FDM.
sla_elephant_foot_compensationnumberSLA: Cuánto se retraen las primeras capas para compensar el ensanchamiento en la base. Valor de referencia 0.2 en todas las impresoras SLA incluidas. 0 lo desactiva.
sla_elephant_foot_min_widthnumberSLA: Los contornos más estrechos que este se dejan sin cambios para que no se pierdan los detalles finos. Valor de referencia 0.2.
sla_faded_layersnumberSLA: Número de capas sobre las cuales la compensación se desvanece hasta cero. Esto NO es el número de capas inferiores; el perfil MSLA de referencia utiliza 8.
ESPECÍFICO PARA SLS
sls_laser_speednumberSLS: Velocidad del láser (mm/s)
sls_hatch_spacingnumberSLS: Espaciado de la trama (mm)
mjf_layer_timenumberMJF: segundos por capa. La tasa de construcción publicada por HP es exactamente área del lecho x espesor de capa / tiempo de capa, así que este único número fija todo el tiempo de construcción; la geometría XY nunca interviene. La ficha técnica de la 4200 indica 7,55 s con una capa de 0,08 mm.
mjf_layer_thicknessnumberMJF: espesor de capa (mm). HP entrega la serie 4200/5200 con 0,08 mm.
mjf_preheat_timeintegerMJF: tiempo de precalentamiento antes de iniciar la construcción (minutos). Se comparte entre todas las piezas de la construcción y se factura a prorrata.
mjf_cooling_timeintegerMJF: tiempo de enfriamiento tras la construcción (minutos). El pastel de polvo debe enfriarse antes de desempacar; se comparte entre todas las piezas y se factura a prorrata.
mjf_powernumberMJF: consumo medio de potencia de la máquina (W), usado en la línea de coste energético.
mjf_bb_multipliernumberMJF: multiplicador sobre la parte del volumen de construcción (pastel) que se cobra a una pieza. 0 = no se cobra a la pieza por el polvo que desplaza en el pastel.
mjf_part_spacingnumberMJF: separación mínima entre piezas en el pastel de polvo (mm). Determina cuántas piezas caben en una construcción y, por tanto, la parte por pieza del precalentamiento, el enfriamiento y el polvo.
slm_laser_speednumberSLM: velocidad de escaneo del láser (mm/s). La identidad de tasa de construcción del fabricante es espesor de capa x velocidad de escaneo x distancia de hatch x número de láseres, así que estos cuatro campos fijan juntos el tiempo de escaneo.
slm_hatch_spacingnumberSLM: distancia entre líneas de escaneo adyacentes (mm).
slm_layer_thicknessnumberSLM: espesor de capa (mm). Las máquinas de lecho de polvo metálico suelen trabajar entre 0,02 y 0,06 mm.
slm_laser_countintegerSLM: número de láseres. Un divisor de todo el término de escaneo, exactamente como en la fórmula de tasa de construcción del fabricante. NO acorta el recubrimiento de polvo.
slm_contour_countintegerSLM: número de pasadas de contorno (borde) alrededor del perfil de cada capa. 0 = sin pasada de contorno.
slm_contour_speednumberSLM: velocidad de la pasada de contorno (mm/s); normalmente más lenta que la velocidad de hatch.
slm_jump_speednumberSLM: velocidad de reposicionamiento (salto) del láser entre vectores de escaneo (mm/s).
slm_recoat_timenumberSLM: segundos que necesita el recubridor por capa. La cifra de tasa de construcción del fabricante EXCLUYE el recubrimiento, así que, a diferencia del SLS, este valor no se puede deducir de una tasa publicada: mídalo en la máquina.
slm_preheat_timeintegerSLM: tiempo de precalentamiento de la cámara y de purga con gas inerte (minutos), compartido por todas las piezas de la placa.
slm_cooldown_timeintegerSLM: tiempo de enfriamiento tras la construcción (minutos), compartido por todas las piezas de la placa.
slm_powernumberSLM: consumo medio de potencia de la máquina (W), usado en la línea de coste energético.
slm_part_spacingnumberSLM: separación mínima entre piezas en la placa de construcción (mm). Las piezas SLM no se pueden apilar en Z -cada pieza va soldada a la placa-, así que este valor determina directamente el anidado en la placa y el número de piezas por construcción.
slm_build_plate_costnumberSLM: coste de la placa de construcción por ciclo, repartido entre las piezas de ese ciclo. 0 = no se cobra.
slm_plate_removal_costnumberSLM: coste de separar las piezas de la placa (electroerosión por hilo o sierra de cinta) por ciclo, repartido entre las piezas de ese ciclo. 0 = no se cobra.
slm_stress_relief_costnumberSLM: coste del ciclo de horno de alivio de tensiones por construcción, repartido entre las piezas de ese ciclo. 0 = no se cobra.
slm_inert_gas_flownumberSLM: consumo de argón o nitrógeno (litros por minuto) durante la construcción. 0 = no se cobra.
slm_inert_gas_cost_per_liternumberSLM: precio de un litro de gas inerte, en la moneda del presupuesto. 0 = no se cobra.
slm_support_removal_cost_per_cm3numberSLM: coste de la retirada manual de soportes por cm3 de soporte. Los soportes metálicos soportan carga y calor y se cortan, no se despegan. 0 = no se cobra.
sls_layer_thicknessnumberSLS: Grosor de la capa (mm)
sls_layer_recoat_timenumberSLS: Tiempo de recubrimiento de la capa (segundos)
sls_preheat_timenumberSLS: Tiempo de precalentamiento (min)
sls_cooling_timenumberSLS: Tiempo de enfriamiento (min)
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: recargo por espacio de máquina por equivalente de gramo del espacio de construcción que ocupa una pieza. El espacio es la caja de volumen mínimo de la pieza más su parte de los huecos de polvo y los bordes inutilizables de la cámara, por lo que no cambia cuando el modelo llega rotado. 0 desactiva el recargo.
sls_contour_countnumberSLS: número de pasadas de contorno (borde) que el láser traza alrededor del contorno de cada capa. 0 desactiva la pasada de contorno.
sls_contour_speednumberSLS: velocidad de escaneo de contorno en mm/s. 0 significa que el contorno se escanea a la velocidad sls_laser_speed.
sls_jump_speednumberSLS: velocidad de salto del galvo en mm/s para los movimientos de reposicionamiento sin sinterización entre vectores de escaneo. 0 realiza los saltos a la velocidad sls_laser_speed, un límite superior.
sls_part_spacingnumberSLS: separación mínima de polvo alrededor de una pieza en mm, aplicada tanto entre piezas como a la pared de la cámara. Determina cuántas piezas caben en una construcción, por lo que influye tanto en la proporción de espacio de máquina como en la división de costes fijos. 0 utiliza el valor predeterminado del motor de 3 mm.
max_volumetric_flownumberMaximum volumetric flow rate in mm³/s.

material_config

Parámetros de configuración del material. Todos los campos son opcionales y utilizarán los valores predeterminados de su Perfil de Material si no se proporcionan.

Integración del Perfil de Material: El parámetro filament_type debe coincidir con un nombre de material de su Perfil de Material en el Panel de Control. Cuando especifica un filament_type (por ejemplo, "PLA", "ABS", "PETG"), la API carga automáticamente todas las propiedades de ese Perfil de Material, incluyendo densidad, temperaturas, ajustes de retracción y precios.

Precisión de los precios: el coste del material se calcula a partir de price_per_gram. Basta con definir price_per_kg o price_per_gram en el Perfil de material: el otro valor se mantiene sincronizado automáticamente. Aun así puede sobrescribir el precio en cada petición indicando price_per_gram o price_per_kg en material_config.

Ejemplo: Si tiene un perfil de material "PLA" en su Panel de Control con price_per_kg: 20.0 y price_per_gram: 0.02, simplemente puede enviar {"filament_type": "PLA"} en su solicitud, y todos los precios se calcularán automáticamente.

ParámetroTipoDescripción
filament_typestringFilament type (PLA, ABS, PETG, etc.)
colorstringNombre del color (p. ej., 'White', 'Black', '#FFFFFF'). Nota: en las tecnologías basadas en volumen (SLA, SLS, SLM, MJF) el color solo se aplica si 'post_processing' está fijado en 'painting' o 'painted'.
densitynumberMaterial density (g/cm³)
diameternumberFilament diameter (mm)
filament_flow_rationumberMultiplicador del ratio de flujo FDM. 1.0 significa un flujo del 100%. Los valores solicitados anulan el Perfil de material de usuario seleccionado; si no se encuentran, se utiliza el valor del perfil global antes del valor predeterminado de 1.0.
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)
slow_down_min_speednumberLower speed bound for layer cooling (mm/s). Reference default 20.
retraction_minimum_travelnumberOverrides the printer value for this material (mm).
z_hop_mmnumberOverrides the printer value for this material (mm).
price_per_kgnumberPrice per kilogram
price_per_gramnumberPrice per gram
support_cost_multipliernumberSupport material cost multiplier
sls_refresh_factornumberSLS powder refresh rate ratio (e.g. 0.3 = 30% fresh powder).
mjf_refresh_factornumberRatio de renovación del polvo MJF (p. ej., 0,2 = 20 % de polvo nuevo). HP publica un ratio distinto por polvo, medido de forma diferente al ratio SLS del mismo polímero. Omítalo para recurrir a sls_refresh_factor.
mjf_fusing_agent_ml_per_cm3numberMJF: agente de fusión consumido por cm3 de volumen de pieza fusionada (mL/cm3). Medición del taller; 0 deja el coste de agentes fuera del presupuesto.
mjf_detail_agent_ml_per_cm2numberMJF: agente de detalle consumido por cm2 de área de contorno fusionada (mL/cm2). La misma medición, pero sobre el área de contorno; 0 lo deja fuera.
mjf_agent_cost_per_liternumberMJF: precio del agente por litro en la moneda del presupuesto. 0 desactiva la línea de coste de agentes.
metal_powder_loss_factornumberSLM: pérdida de tamizado y manipulación como fracción del volumen de pieza más soportes (0,05 = 5 %). El polvo metálico no utilizado se tamiza y se reutiliza, así que -a diferencia de SLS y MJF- el polvo circundante NO se factura.
max_volumetric_flownumberMaterial specific volumetric flow limit in mm³/s.
min_layer_timenumberMinimum layer time in seconds for cooling.

quote_config

Parámetros de configuración de precios de la cotización. Todos los campos son opcionales y utilizarán los valores predeterminados de su Configuración Global si no se proporcionan. La moneda predeterminada es la de su panel de control (por ejemplo, 'USD', 'TRY', 'EUR').

ParámetroTipoDescripción
currencystringCurrency code, one of TRY, USD, EUR, GBP, JPY, CNY, RUB, CAD, AUD, CHF, SEK, NOK, DKK, SGD, HKD, NZD, MXN, BRL, INR; case does not matter. Defaults to your dashboard preference.
tax_ratenumberTax rate percentage (0-100)
fixed_feenumberFixed fee per quote
minimum_pricenumberPrecio mínimo del presupuesto: un mínimo antes de impuestos para todo el presupuesto. Un presupuesto más barato se eleva hasta él; uno más caro no cambia. Por defecto, su precio mínimo para la tecnología del presupuesto; 0 = ninguno.
energy_cost_per_kwhnumberEnergy cost per kWh
hollowingstringEspecífico de SLA, SLS y MJF: 'solid', '2mm' o '3mm'. En SLA el valor por defecto es '2mm' cuando el vaciado SLA está activado en sus ajustes; en SLS y MJF se aplica lo mismo con su propio ajuste. Se ignora en FDM, donde la cavidad la define fill_density, y en SLM, donde una cavidad sellada atraparía polvo que no se puede evacuar. Las piezas SLS y MJF se vacían SIN orificio de evacuación: el polvo no fusionado permanece dentro, se factura a la densidad del lecho de polvo en lugar de la densidad sólida, y no es recuperable.
post_processingstringTecnologías basadas en volumen (SLA, SLS, SLM, MJF): 'standard', 'sanding', 'painting' o 'painted' (por defecto: 'standard'). El valor se registra en el presupuesto y se tarifica con las tarifas de postprocesado por tecnología de los Ajustes globales. Las tarifas SLM son más altas en toda la banda porque incluso 'standard' cubre el corte de la pieza de la placa de construcción y la limpieza de la superficie.
sla_post_processing_fee_standardnumberSLA standard post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sla_post_processing_fee_sandingnumberSLA sanding post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sla_post_processing_fee_paintingnumberSLA painting post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sla_post_processing_fee_paintednumberSLA painted post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_standardnumberSLS standard post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_sandingnumberSLS sanding post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_paintingnumberSLS painting post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_paintednumberSLS painted post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
mjf_post_processing_fee_standardnumberMJF: tarifa aplicada cuando post_processing es 'standard'.
mjf_post_processing_fee_sandingnumberMJF: tarifa aplicada cuando post_processing es 'sanding'.
mjf_post_processing_fee_paintingnumberMJF: tarifa aplicada cuando post_processing es 'painting'.
mjf_post_processing_fee_paintednumberMJF: tarifa aplicada cuando post_processing es 'painted'.
slm_post_processing_fee_standardnumberSLM: tarifa aplicada cuando post_processing es 'standard'.
slm_post_processing_fee_sandingnumberSLM: tarifa aplicada cuando post_processing es 'sanding'.
slm_post_processing_fee_paintingnumberSLM: tarifa aplicada cuando post_processing es 'painting'.
slm_post_processing_fee_paintednumberSLM: tarifa aplicada cuando post_processing es 'painted'.
mjf_min_build_fillnumberMJF: parte mínima de la construcción que paga un pedido. 0 = la construcción se comparte con otros pedidos, 1 = el pedido paga la construcción completa.
enable_batch_systembooleanEnable/disable batch calculation system (default: true)
sls_min_build_fillnumberSLS: llenado mínimo de construcción como una fracción entre 0 y 1. El pedido se factura como si hubiera llenado al menos esta proporción de una ejecución de construcción; 0 comparte la construcción con otros trabajos, 1 factura una construcción completa. Se ignora cuando enable_batch_system es falso.
material_wastage_factornumberFactor for calculating material wastage (e.g. 1.10 for 10% wastage).
volume_discount_tiersarrayQuantity discount tiers, e.g. [{"minVolume": 100, "discount": 5}]. Falls back to your Global Settings tiers.

Consejo: Las cotizaciones se guardan automáticamente en su cuenta. Puede acceder a ellas en cualquier momento a través de los puntos finales del historial de cotizaciones.

6. Perfiles de Impresora y Presupuesto

Configure los ajustes de la impresora y los precios para obtener presupuestos precisos. Puede administrar sus perfiles predeterminados en la sección Perfiles de Rebanado del Panel de Control, que se utilizarán automáticamente cuando no especifique parámetros en las solicitudes de API.

Tipos de perfil

  • Perfil de Impresora - Configure los ajustes de su impresora (tamaño de la cama, diámetro de la boquilla, velocidad de impresión, altura de capa, aceleración, jerk, temperaturas, etc.) para que coincidan con su impresora real. Establezca esto como su perfil predeterminado en el Panel de Control y se utilizará para todas las solicitudes de presupuesto a menos que anule parámetros específicos.
  • Perfil de Material - Establezca las propiedades del material (tipo de filamento, densidad, diámetro, temperaturas, velocidad del ventilador, ajustes de retracción, precios) para cada material que utilice. La API utilizará automáticamente el perfil de material que coincida con el filament_type que especifique en la solicitud.
  • Configuración Global - Configure la configuración global de cotización, como la tasa de impuestos, las tarifas fijas, los costos de energía y la moneda predeterminada. Estos ajustes se aplican a todas las cotizaciones a menos que se anulen en la solicitud.

Mejor Práctica: Configure sus perfiles predeterminados en la sección Perfiles de Rebanado del Panel de Control. De esta manera, puede realizar solicitudes de presupuesto simples sin especificar todos los parámetros, y la API utilizará automáticamente sus valores predeterminados configurados. Aún puede anular cualquier parámetro por solicitud cuando sea necesario.

Cómo Funcionan las Mezclas de Perfiles

Cuando realiza una solicitud de presupuesto, la API combina los parámetros de su solicitud con sus perfiles del Panel de Control utilizando esta prioridad:

  1. Parámetros de Solicitud - Los valores que proporciona explícitamente en la solicitud de API tienen la prioridad más alta
  2. Perfil de Usuario - Si tiene un perfil específico del usuario establecido como predeterminado, se utiliza a continuación
  3. Perfil Global - Si no existe un perfil de usuario, el sistema recurre a los valores predeterminados globales

Esto significa que puede anular solo los parámetros que necesita (por ejemplo, solo layer_height o fill_density) mientras mantiene todos los demás ajustes de sus perfiles del Panel de Control.

7. Webhooks

Reciba notificaciones en tiempo real cuando se producen eventos en su cuenta:

  • POST /v2/webhooks - Crear un nuevo punto final de webhook
  • GET /v2/webhooks - Listar todos sus webhooks
  • GET /v2/webhooks/{webhook_id} - Obtener los detalles del webhook y las estadísticas de entrega
  • PUT /v2/webhooks/{webhook_id} - Actualizar la configuración del webhook
  • DELETE /v2/webhooks/{webhook_id} - Eliminar un webhook
  • POST /v2/webhooks/{webhook_id}/deliveries/{delivery_id}/resend - Volver a enviar una entrega anterior, por ejemplo después de arreglar tu endpoint

Eventos admitidos: quote.completed, quote.failed, file.uploaded, file.deleted, job.status_changed, widget.added_to_cart, usage.alert. Los webhooks incluyen firmas HMAC-SHA256 para la verificación de seguridad.

Referencia de webhooks: estructura del payload, verificación de la firma, reintentos y reenvío

8. Analítica e Informes

Obtenga información sobre el uso de su API y las estadísticas de cotizaciones:

  • GET /v2/analytics/quotes - Obtenga estadísticas completas de cotizaciones, incluyendo el total de cotizaciones, precios promedio y tendencias de uso de materiales
  • GET /v2/analytics/popular - Visualice sus materiales y configuraciones de impresora más populares
  • GET /v2/analytics/cost-trends - Analiza las tendencias de costos a lo largo del tiempo (agrupación diaria, semanal o mensual)
  • GET /v2/analytics/export - Exporte sus cotizaciones y datos de uso como CSV o JSON

9. Catálogo y stock

Gestiona las impresoras, materiales, colores, el stock por color, los precios y las tecnologías propios de la cuenta con un token de servidor. El widget lee el mismo catálogo, así que un cambio llega al formulario de presupuesto al momento. Los tokens de widget se rechazan y estas llamadas no cuentan para la cuota mensual de peticiones:

  • GET /v2/store/catalog - Todo lo que ofrece la cuenta, con el estado de preparación por tecnología y los colores que se agotan
  • GET /v2/store/catalog/schema - Los formularios de impresora, material y precios del panel, con límites, unidades y textos de ayuda en el idioma pedido
  • POST /v2/store/catalog/adopt - Copiar impresoras y materiales globales a la cuenta, con los colores, el precio y el stock inicial que elijas
  • POST /v2/store/catalog/materials - Crear un material, opcionalmente a partir de uno global
  • GET · PATCH · DELETE /v2/store/catalog/materials/{id} - Leer, cambiar o borrar un material, incluidos sus ajustes de stock
  • PUT /v2/store/catalog/materials/{id}/colors - Sustituir la lista de colores de un material; se conserva el stock de los colores existentes
  • GET · PATCH · DELETE /v2/store/catalog/printers/{id} - Leer, cambiar o borrar una impresora
  • GET · PATCH · DELETE /v2/store/catalog/pricing - Leer, cambiar o restablecer los precios; cambiar la moneda cambia la de la cuenta sin convertir los importes
  • GET · PUT /v2/store/catalog/technologies - Qué tecnologías permite el plan y cuáles están activas
  • GET · POST /v2/store/stock/movements - Registrar una entrada, un recuento o una merma, y listar el historial de stock
  • POST /v2/store/stock/orders - Descontar, devolver o comprobar el material de un pedido pagado, como mucho una vez por presupuesto

Los cuerpos PATCH llevan values y updated_at. values usa los mismos nombres de campo snake_case que la lista del catálogo (un nombre que el formulario no tiene se rechaza con 400); si el perfil cambió desde que lo leíste, la llamada responde 409 con error_key stale.

10. Limitación de Velocidad y Cuotas

Quote3D utiliza la limitación de velocidad para asegurar un uso justo y la estabilidad del sistema:

  • Los límites de velocidad se aplican por token de API y varían según el endpoint
  • La información sobre los límites de velocidad se incluye en las cabeceras de la respuesta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Window
  • Cuando se alcanza el límite de velocidad, recibirá una respuesta 429 Too Many Requests con una cabecera Retry-After
  • Tu plan fija un cupo de presupuestos, que se restablece en cada periodo de facturación, y un cupo de almacenamiento, que nunca se restablece y solo se libera al eliminar archivos
  • Los límites son configurables por despliegue, así que lea los valores actuales en lugar de codificarlos de forma fija. Tanto los encabezados de respuesta anteriores como este endpoint los informan: GET /v2/quota

Mejor Práctica: Implemente un retroceso exponencial al manejar errores de limitación de velocidad para evitar sobrecargar la API.

11. Respuestas y errores

Las respuestas correctas tienen dos formas. Las llamadas de presupuesto, trabajo, detalle de presupuesto guardado, webhook, analítica, uso, cuota y configuración envuelven su contenido con success: true y el resultado en data. Las llamadas de archivo, ID de subida, usuario, subidas, lista de presupuestos, imprimibilidad y Catálogo y stock devuelven sus campos en el nivel superior. La referencia de la API muestra el esquema exacto de cada llamada. Las descargas de archivos y las exportaciones CSV devuelven el contenido del archivo tal cual.

{
  "success": true,
  "data": { "...": "endpoint-specific payload" }
}

Paginación y ordenación

Los endpoints de listado como /v2/quotes y /v2/user/uploads están paginados con los parámetros de consulta limit y offset (por defecto 50 resultados, máximo 100). Junto con los resultados, devuelven un objeto de paginación que contiene total, limit, offset, has_more, page y total_pages, por lo que se recomienda usar has_more en lugar de recalcular el final de la lista por su cuenta. La ordenación utiliza un único parámetro repetible en el formato field:direction, por ejemplo ?sort=created_at:desc&sort=total_price:asc; las cargas (uploads) se ordenan por defecto de la más reciente a la más antigua.

Respuestas de error

Todos los errores tienen la misma forma: una lista detail que nombra el parámetro o campo (loc, msg, code), un error_code como AUTH_001, un error_summary y, cuando es útil, recovery_suggestions y documentation_url. Decide según el estado HTTP y el error_code, no según el texto, que puede cambiar.

EstadoSignificado
400El cuerpo de la solicitud o un parámetro de consulta no es válido: un campo mal formado, un formato de archivo no compatible o un modelo que no se ajusta a la impresora seleccionada.
401Falta el token de la API, está mal formado, ha expirado o ha sido revocado.
403El token es válido pero no puede hacer esta llamada: una restricción de alcance, un origen o una dirección IP que no está en la lista del token (AUTH_004), o una asignación del plan agotada (RATE_002, con las cabeceras X-Quota-*).
404El archivo, presupuesto, trabajo o webhook solicitado no existe o no pertenece a su cuenta.
429Se ha excedido el límite de tasa (rate limit). Lea el encabezado Retry-After y espere antes de reintentar.
500Un error inesperado en el servidor. Es seguro reintentar con backoff; si persiste, póngase en contacto con el soporte técnico proporcionando la marca de tiempo (timestamp).

Los presupuestos asíncronos son diferentes: el encolamiento del trabajo tiene éxito con un 202, y un cálculo que falle posteriormente se presenta como un estado de error con un mensaje de error en el endpoint del trabajo, no como un error HTTP. Inspeccione siempre el estado del trabajo, no solo el código de estado que recibió al iniciarlo.

12. API RESTful y versionada

  • Todos los endpoints están versionados (ej., /v2/)
  • Utiliza métodos HTTP estándar: GET, POST, PUT, DELETE
  • Descrita mediante un esquema OpenAPI 3.0.3 que puede importar en sus propias herramientas
  • Los cambios incompatibles y las incorporaciones se registran en el registro de cambios de la API