Добро пожаловать в документацию Quote3D! ⏳

Основные понятия: файлы, расчёты и задания

Эта страница знакомит с основополагающими идеями и паттернами, которые обеспечивают работу платформы. Понимание этих концепций поможет вам максимально эффективно использовать API и создавать надежные интеграции для рабочих процессов 3D-печати.

Базовый маршрут API

Для внешних вызовов API отправляйте запросы напрямую на https://api.quote3d.com/v2/... (например, GET https://api.quote3d.com/v2/user).

В вашем программном обеспечении установите https://api.quote3d.com в качестве хоста API/базового URL-адреса и вызывайте пути v2, такие как /v2/user, /v2/file и /v2/quotes.

1. Аутентификация и безопасность

Каждый эндпоинт требует аутентификации вашим API-токеном Quote3D, за одним исключением: публичный маршрут загрузки, описанный в разделе «Управление файлами». Для внешних вызовов используйте базовый маршрут https://api.quote3d.com/v2. Передавайте токен либо как Authorization: Bearer YOUR_TOKEN, либо как X-API-Token. Создавайте токены в панели Quote3D и храните их в секрете.

Токены могут иметь область действия. Токен с полным доступом достигает всех эндпоинтов, а токен с областью виджета ограничен теми, что нужны встроенному виджету. Любой вызов вне области токена возвращает 403. Область токена можно посмотреть и изменить на странице «Токены» в панели.

Напоминание: Храните ваши API токены в безопасности. Никогда не делитесь ими публично или не добавляйте их в систему контроля версий.

2. Управление аккаунтом

Управляйте своим аккаунтом, загрузками и статистикой использования через выделенные конечные точки:

  • GET /v2/user Возвращает данные аккаунта, тариф и месячные лимиты — здесь находятся quotes_used, quotes_limit, storage_used, storage_limit и reset_date
  • GET /v2/user/uploads Список всех файлов, загруженных в ваш аккаунт. Отображаются от новых к старым.
  • GET /v2/quota Возвращает ваши лимиты частоты запросов — общий лимит плюс разбивку по эндпоинтам с остатком вызовов и временем сброса — вместе с числом запросов за сегодня, месяц, год и всё время
  • GET /v2/usage Получение подробной аналитики использования, включая статистику конечных точек, расход материалов и временные тенденции
  • GET /v2/config Включённые технологии аккаунта, принтеры, материалы с цветами (в наличии или нет) и ценовые значения по умолчанию — всё, что предлагает виджет. Токены виджета тоже могут это читать.

3. Управление файлами

Загружайте, скачивайте и управляйте файлами ваших 3D-моделей (форматы STL, 3MF, OBJ, STEP):

  • GET /v2/file/upload-id — Получите временный upload_id для загрузки нового файла через публичный маршрут загрузки.
  • POST /v2/file/public/{upload_id} — Этот маршрут НЕ требует аутентификации. Используйте его на стороне клиента для прямой загрузки файлов в наше хранилище.

    Использование маршрута публичной загрузки позволяет избежать маршрутизации больших файлов через ваш сервер. Это предотвращает раскрытие вашего API-ключа и снижает нагрузку на сервер.

  • POST /v2/file — Загрузите файл со стороны сервера (требуется аутентификация, используйте это, когда вы хотите загрузить файл из вашего бэкенда)
  • GET /v2/file/{file_id} — Скачайте файл, используя его file_id
  • DELETE /v2/file/{file_id} — Удалите файл, который вам больше не нужен

Загрузка отклоняется, если файл не является корректной моделью STL, 3MF, OBJ или STEP либо превышает лимит размера платформы (по умолчанию 50 МБ). Файлы STEP (.step/.stp) триангулируются на сервере с теми же настройками, что и в OrcaSlicer (линейное отклонение 0,003 мм, угловое отклонение 0,5 рад); все тела сборки объединяются, а длины переводятся в миллиметры. Оба маршрута загрузки применяют одинаковые проверки.

Как хранятся ваши файлы

Загруженные модели хранятся в зашифрованном виде и не доступны публично — не существует ссылки, позволяющей получить доступ к файлу напрямую. Поле file_path в ответах является путем для аутентифицированной загрузки (GET /v2/file/{file_id}), а не путем на диске, поэтому рассматривайте его как эндпоинт, а не как URL-адрес, которым можно поделиться. Удаление файла удаляет его из хранилища, а не только из ваших списков.

4. Информация о детали и технический анализ

Проверьте, можно ли напечатать ваши модели, получите размеры детали и продвинутые технические метрики:

  • POST /v2/printability/{file_id} Мгновенный Анализ – Проверка размеров, объема, площади поверхности и геометрической целостности (открытые ребра/non-manifold) перед расчетом.

Quote3D выходит за рамки простых проверок размеров; он анализирует manifold-целостность модели и оценивает риск отслоения от стола, критичный для 3D-печати. Эти метрики предоставляются в ответах Printability и Quote.

5. Операции с расчетами стоимости

Генерируйте мгновенные расчеты стоимости для ваших 3D-печатей и управляйте историей расчетов:

  • POST /v2/file/quote/{file_id} — Запустите асинхронный расчет стоимости для 3D-модели. Возвращает ID задания; используйте endpoint jobs для получения завершенного результата.
  • POST /v2/file/quote/{file_id}/async — Альтернативный асинхронный endpoint для расчета стоимости. Возвращает ID задания, которое вы можете использовать для проверки статуса и получения завершенного результата.
  • GET /v2/jobs/{job_id} — Проверьте статус асинхронного задания расчета стоимости. Возвращает процент выполнения и статус завершения.
  • GET /v2/quotes — Получите всю вашу историю расчетов стоимости с поддержкой постраничной навигации
  • GET /v2/quotes/{quote_id} — Получите подробную информацию о конкретном расчете стоимости
  • DELETE /v2/quotes/{quote_id} — Удалите расчет стоимости из вашей истории

Асинхронный рабочий процесс: POST /v2/file/quote/{file_id} возвращает ID задания. Используйте GET /v2/jobs/{job_id} для получения краткого результата, и GET /v2/quotes/{quote_id} для получения подробных данных расчета, когда они будут доступны.

Параметры запроса расчета стоимости

При генерации расчета стоимости вы можете предоставить пользовательскую конфигурацию в теле запроса. Любые параметры, которые вы не укажете, будут автоматически взяты из настроек Slice Profile в вашей Панели управления. Это позволяет вам переопределять определенные настройки для каждого расчета стоимости, сохраняя при этом настройки по умолчанию для других.

Важно: Если вы не предоставите параметр в своем запросе, API будет использовать значение из вашего Slice Profile в Панели управления (Профиль принтера, Профиль материала или Глобальные настройки). Убедитесь, что вы настроили свои профили по умолчанию в Панели управления для получения согласованных расчетов стоимости. Вы также можете настроить все свои параметры в конкретном Профиле принтера в Панели управления и просто передать его 'printer_id' в вашем запросе, чтобы мгновенно применить эти настройки без их индивидуальной передачи.

Приоритет конфигурации: Значения, отправленные в запросе V2 API, переопределяют выбранные значения профиля пользователя; любые еще отсутствующие поля затем возвращаются к профилям по умолчанию для пользователя/глобальным настройкам.

Таблицы ниже охватывают параметры, которые интеграции переопределяют чаще всего. Это не полный список — движок принимает намного больше полей принтера, материала и ценообразования, и каждое из них можно задать один раз в профилях слайсинга в панели вместо отправки при каждом запросе. Настройте профили там и отправляйте только то, что меняется от расчёта к расчёту; полный список полей есть в схеме OpenAPI.

Request Validation

Числовые поля в printer_config, material_config и quote_config проверяются на допустимые границы до постановки задания в очередь. Значение вне диапазона, не конечное число (NaN, Infinity), неверный тип или отрицательное число там, где имеют смысл только ноль и выше, отклоняется с кодом HTTP 400 и ошибкой VALIDATION_ERROR, указывающей конкретное поле. Ноль по-прежнему принимается везде, где он осмыслен: скорость или ускорение 0 для отдельной роли означает «использовать значение принтера по умолчанию» — то же соглашение, что и в OrcaSlicer.

  • Температурные пределы: температуры материала (temperature и bed_temperature, переданные в запросе или считанные из профиля материала) проверяются по значениям принтера min_hotend_temp / max_hotend_temp и min_bed_temp / max_bed_temp. Материал, которому требуется больше тепла, чем может дать выбранный принтер, отклоняется, а не рассчитывается. Только для FDM: у технологий на основе смолы и порошка нет ни сопла, ни подогреваемого стола. Оставьте пределы принтера незаполненными, чтобы пропустить проверку.
  • Включенные технологии: если вы ограничили технологии в глобальных настройках, запрос расчета стоимости для отключенной технологии отклоняется. Оставьте настройку пустой, чтобы принимать все технологии.
  • Поля цены материала: price_per_gram — это значение, по которому считает движок. При сохранении профиля материала price_per_kg автоматически пересчитывается из него (а price_per_gram выводится из price_per_kg, если указана только цена за килограмм), поэтому эти два значения никогда не расходятся.

Основные параметры

ПараметрТипОписание
technologystringНеобязательно. Технология производства: 'FDM', 'SLA', 'SLS', 'SLM' или 'MJF' ('RESIN' принимается как псевдоним 'SLA', а 'DMLS' и 'LPBF' — как псевдонимы 'SLM'). Определяет, какие специфичные для технологии параметры применяются и как детали компонуются для серийного производства. Если не указано, используется технология выбранного принтера, а при её отсутствии — 'FDM'.
printer_idstringНеобязательно. ID конкретного принтера для использования вместо принтера по умолчанию.
quantitynumberНеобязательно. Общее количество копий для производства (По умолчанию: 1).

Логика количества и пакетного производства

Наша система использует продвинутый алгоритм упаковки, основанный на указанном значении 'quantity':

  • Технология FDM: Детали размещаются рядом друг с другом на платформе сборки (по осям X и Y) по мере доступности места.
  • Технология SLA: Детали располагаются рядом друг с другом в ванне со смолой (по осям X и Y).
  • Технология SLS: Детали могут быть уложены по всем осям (X, Y и Z) для полного использования объема порошкового слоя.

Благодаря этой оптимизированной упаковке, если несколько деталей помещаются в одну партию, фиксированные накладные расходы, такие как предварительный нагрев, охлаждение и смена слоев, применяются только к каждой необходимой партии. Это обеспечивает реалистичные и экономически эффективные цены для больших заказов.

printer_config

Параметры конфигурации принтера. Все поля необязательны и будут использовать значения по умолчанию из вашего Профиля принтера, если они не указаны.

ПараметрТипОписание
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_patternstringПаттерн заполнения. По умолчанию: rectilinear. Базовые (rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid), Треугольные (triangles, trihexagon), Кубические (cubic, adaptivecubic, supportcubic), Соты (honeycomb, honeycomb3d, lateralhoneycomb), Продвинутые (gyroid), Специальные (monotonic, monotonicline), Заполняющие пространство (hilbertcurve, archimedeanchords, octagramspiral). Значения hilbertcurve, archimedeanchords, octagramspiral принимаются, но не имеют собственного генератора — они обрабатываются как rectilinear. Значения сопоставляются без учета регистра, а разделители игнорируются, поэтому tri-hexagon и Zig Zag будут работать; также поддерживается написание 3dhoneycomb из OrcaSlicer. Значения lightning, quartercubic, laterallattice, crosshatch, concentric, tpmsd, tpmsfk не поддерживаются и возвращают ошибку 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
СПЕЦИФИЧНО ДЛЯ SLA
sla_exposure_timenumberSLA: Время экспозиции слоя (секунды)
sla_bottom_exposure_timenumberSLA: Базовое время экспозиции (секунды)
sla_bottom_layer_countnumberSLA: Количество нижних слоев
sla_lift_distancenumberSLA: Расстояние подъема (мм)
sla_lift_speednumberSLA: Скорость подъема (мм/с)
sla_retract_speednumberSLA: Скорость отвода (мм/с)
sla_cleaning_costnumberSLA: Фиксированная стоимость очистки за печать (IPA, расходные материалы)
sla_pad_enabledbooleanSLA: печать модели на подложке/рафте. По умолчанию выключено; смола подложки учитывается вместе с материалом поддержек.
sla_pad_wall_thicknessnumberSLA: толщина стенки подложки в мм. Псевдоним: sla_pad_height.
sla_pad_wall_heightnumberSLA: высота стенки подложки в мм (приподнятый ободок вокруг полости подложки).
sla_pad_wall_slopenumberSLA: наклон стенки подложки в градусах (45-90). Подложка сужается книзу под этим углом.
sla_pad_brim_sizenumberSLA: размер каймы подложки в мм. Псевдоним: sla_pad_expansion.
sla_pad_max_merge_distancenumberSLA: опоры, находящиеся ближе этого расстояния, объединяются в один остров подложки (мм).
sla_support_head_front_diameternumberSLA: диаметр передней части (кончика) головки поддержки в мм.
sla_support_head_penetrationnumberSLA: глубина погружения головки поддержки в поверхность модели (мм).
sla_support_head_widthnumberSLA: длина стержня головки поддержки в мм.
sla_support_pillar_diameternumberSLA: диаметр стойки поддержки в мм. Определяет большую часть объема смолы поддержки.
sla_support_base_diameternumberSLA: диаметр основания (подошвы) стойки поддержки в мм.
sla_support_base_heightnumberSLA: высота основания (подошвы) стойки поддержки в мм.
sla_support_object_elevationnumberSLA: высота объекта над платформой в мм. Также добавляет напечатанные слои, поэтому влияет на время печати. Применяется только при генерации поддержек.
sla_support_critical_anglenumberSLA: угол наклона мостика в градусах, используемый при размещении поддержек. Не то же самое, что support_overhang_angle.
sla_support_max_pillar_link_distancenumberSLA: колонны, расстояние между которыми больше этого значения, не связываются перемычками (мм).
sla_support_max_bridge_lengthnumberSLA: максимальная длина бокового мостика, который может проложить головка поддержки до платформы (мм).
sla_support_max_bridges_on_pillarnumberSLA: количество мостиков, которые может принимать одна колонна.
sla_support_points_densitynumberSLA: плотность точек поддержки в процентах, 100 = норма. НЕ то же самое, что support_density, которая является процентом заполнения поддержек FDM.
sla_elephant_foot_compensationnumberSLA: На сколько слои смещаются внутрь, чтобы компенсировать расширение основания. Рекомендуемое значение — 0.2 для всех поставляемых SLA-принтеров. 0 отключает функцию.
sla_elephant_foot_min_widthnumberSLA: Контуры уже этого значения не изменяются, чтобы не стереть тонкие элементы. Рекомендуемое значение — 0.2.
sla_faded_layersnumberSLA: Количество слоев, на которых компенсация постепенно снижается до нуля. Это НЕ количество нижних слоев; в эталонном профиле MSLA используется значение 8.
СПЕЦИФИЧНО ДЛЯ SLS
sls_laser_speednumberSLS: Скорость лазера (мм/с)
sls_hatch_spacingnumberSLS: Шаг штриховки (мм)
mjf_layer_timenumberMJF: секунд на слой. Опубликованная HP производительность в точности равна площадь слоя x толщина слоя / время слоя, поэтому это единственное число задаёт всё время построения; геометрия XY в него не входит. В паспорте 4200 указано 7,55 с при слое 0,08 мм.
mjf_layer_thicknessnumberMJF: толщина слоя (мм). HP поставляет серию 4200/5200 с 0,08 мм.
mjf_preheat_timeintegerMJF: время предварительного нагрева перед началом построения (минуты). Делится между всеми деталями построения и начисляется пропорционально.
mjf_cooling_timeintegerMJF: время охлаждения после построения (минуты). Порошковый кекс должен остыть перед распаковкой; делится между всеми деталями и начисляется пропорционально.
mjf_powernumberMJF: средняя потребляемая мощность машины (Вт), используется в статье затрат на электроэнергию.
mjf_bb_multipliernumberMJF: множитель доли объёма построения (кекса), начисляемой детали. 0 — деталь не оплачивает порошок, который она вытесняет в кексе.
mjf_part_spacingnumberMJF: минимальный зазор между деталями в порошковом кексе (мм). Определяет, сколько деталей помещается в одно построение, а значит и долю предварительного нагрева, охлаждения и порошка на деталь.
slm_laser_speednumberSLM: скорость сканирования лазера (мм/с). Формула производительности производителя — толщина слоя x скорость сканирования x шаг штриховки x число лазеров, поэтому эти четыре поля вместе задают время сканирования.
slm_hatch_spacingnumberSLM: расстояние между соседними линиями сканирования (мм).
slm_layer_thicknessnumberSLM: толщина слоя (мм). Машины на слое металлического порошка обычно работают в диапазоне 0,02–0,06 мм.
slm_laser_countintegerSLM: число лазеров. Делитель всего члена сканирования, ровно как в формуле производительности производителя. Время нанесения слоя порошка оно НЕ сокращает.
slm_contour_countintegerSLM: количество контурных (краевых) проходов вокруг контура каждого слоя. 0 — без контурного прохода.
slm_contour_speednumberSLM: скорость контурного прохода (мм/с); обычно ниже скорости штриховки.
slm_jump_speednumberSLM: скорость перемещения (скачка) лазера между векторами сканирования (мм/с).
slm_recoat_timenumberSLM: секунд на один слой для рекоутера. Значение производительности производителя НЕ включает нанесение порошка, поэтому, в отличие от SLS, этот параметр нельзя вывести из опубликованной производительности — измерьте его на машине.
slm_preheat_timeintegerSLM: время предварительного нагрева камеры и продувки инертным газом (минуты), делится между всеми деталями на платформе.
slm_cooldown_timeintegerSLM: время охлаждения после построения (минуты), делится между всеми деталями на платформе.
slm_powernumberSLM: средняя потребляемая мощность машины (Вт), используется в статье затрат на электроэнергию.
slm_part_spacingnumberSLM: минимальный зазор между деталями на платформе построения (мм). Детали SLM нельзя штабелировать по Z — каждая приварена к платформе, — поэтому этот параметр напрямую определяет раскладку на платформе и число деталей в построении.
slm_build_plate_costnumberSLM: стоимость платформы построения за запуск, распределяется между деталями этого запуска. 0 — не начисляется.
slm_plate_removal_costnumberSLM: стоимость отделения деталей от платформы (электроэрозионная резка или ленточная пила) за запуск, распределяется между деталями этого запуска. 0 — не начисляется.
slm_stress_relief_costnumberSLM: стоимость цикла печи для снятия напряжений за построение, распределяется между деталями этого запуска. 0 — не начисляется.
slm_inert_gas_flownumberSLM: расход аргона или азота (литров в минуту) во время построения. 0 — не начисляется.
slm_inert_gas_cost_per_liternumberSLM: цена одного литра инертного газа в валюте расчёта. 0 — не начисляется.
slm_support_removal_cost_per_cm3numberSLM: стоимость ручного удаления поддержек на 1 см3 поддержек. Металлические поддержки несут нагрузку и отводят тепло, их срезают, а не отламывают. 0 — не начисляется.
sls_layer_thicknessnumberSLS: Толщина слоя (мм)
sls_layer_recoat_timenumberSLS: Время нанесения слоя (секунды)
sls_preheat_timenumberSLS: Время предварительного нагрева (мин)
sls_cooling_timenumberSLS: Время охлаждения (мин)
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: надбавка за машинное пространство за каждый грамм-эквивалент слота построения, который занимает деталь. Слот представляет собой габаритный параллелепипед минимального объема детали плюс её доля порошковых зазоров и непригодных краев камеры, поэтому он не меняется при повороте модели. 0 отключает надбавку.
sls_contour_countnumberSLS: количество контурных (граничных) проходов лазера по контуру каждого слоя. 0 отключает контурный проход.
sls_contour_speednumberSLS: скорость сканирования контура в мм/с. 0 означает, что контур сканируется со скоростью sls_laser_speed.
sls_jump_speednumberSLS: скорость перемещения гальванометров в мм/с для холостых перемещений между векторами сканирования. 0 означает выполнение прыжков со скоростью sls_laser_speed (верхний предел).
sls_part_spacingnumberSLS: минимальный порошковый зазор вокруг детали в мм, применяемый как между деталями, так и между деталью и стенкой камеры. Он определяет, сколько деталей поместится в одну печать, и, следовательно, влияет на долю машинного пространства и распределение фиксированных затрат. 0 использует значение по умолчанию системы — 3 мм.
max_volumetric_flownumberMaximum volumetric flow rate in mm³/s.

material_config

Параметры конфигурации материала. Все поля необязательны и будут использовать значения по умолчанию из вашего Профиля материала, если они не указаны.

Интеграция с профилем материала: параметр filament_type должен соответствовать названию материала из вашего Профиля материала в Панели управления. При указании filament_type (например, "PLA", "ABS", "PETG"), API автоматически загружает все свойства из этого Профиля материала, включая плотность, температуры, настройки утяжки и цены.

Точность ценообразования: стоимость материала рассчитывается из price_per_gram. В профиле материала достаточно задать либо price_per_kg, либо price_per_gram — второе значение синхронизируется автоматически. Цену по-прежнему можно переопределить в каждом запросе, указав price_per_gram или price_per_kg в material_config.

Пример: Если у вас есть профиль материала "PLA" в вашей Панели управления с price_per_kg: 20.0 и price_per_gram: 0.02, вы можете просто отправить {"filament_type": "PLA"} в своем запросе, и вся цена будет рассчитана автоматически.

ПараметрТипОписание
filament_typestringFilament type (PLA, ABS, PETG, etc.)
colorstringНазвание цвета (например, 'White', 'Black', '#FFFFFF'). Примечание: для объёмных технологий (SLA, SLS, SLM, MJF) цвет применяется, только если 'post_processing' имеет значение 'painting' или 'painted'.
densitynumberMaterial density (g/cm³)
diameternumberFilament diameter (mm)
filament_flow_rationumberМножитель коэффициента подачи FDM. 1.0 означает 100% подачи. Запрашиваемые значения переопределяют выбранный пользовательский профиль материала; если они отсутствуют, используется значение глобального профиля, а если и его нет — значение по умолчанию 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_factornumberКоэффициент обновления порошка MJF (например, 0,2 = 20 % свежего порошка). HP публикует отдельный коэффициент для каждого порошка, измеряемый иначе, чем коэффициент SLS для того же полимера. Не указывайте, чтобы использовать sls_refresh_factor.
mjf_fusing_agent_ml_per_cm3numberMJF: расход связующего агента на 1 см3 объёма сплавленной детали (мл/см3). Цеховое измерение; 0 исключает стоимость агентов из расчёта.
mjf_detail_agent_ml_per_cm2numberMJF: расход детализирующего агента на 1 см2 площади сплавленной границы (мл/см2). То же измерение, но по площади контура; 0 исключает его.
mjf_agent_cost_per_liternumberMJF: цена агента за литр в валюте расчёта. 0 отключает статью затрат на агенты.
metal_powder_loss_factornumberSLM: потери при просеивании и обращении как доля от объёма детали и поддержек (0,05 = 5 %). Неиспользованный металлический порошок просеивается и используется повторно, поэтому — в отличие от SLS и MJF — окружающий порошок НЕ оплачивается.
max_volumetric_flownumberMaterial specific volumetric flow limit in mm³/s.
min_layer_timenumberMinimum layer time in seconds for cooling.

quote_config

Параметры конфигурации ценообразования. Все поля необязательны и будут использовать значения по умолчанию из ваших Глобальных настроек, если они не указаны. Валюта по умолчанию соответствует настройкам вашего личного кабинета (например, 'USD', 'TRY', 'EUR').

ПараметрТипОписание
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_pricenumberМинимальная стоимость заказа: нижняя граница до налогов для всего расчёта. Более дешёвый расчёт повышается до неё, более дорогой не меняется. По умолчанию — ваша минимальная стоимость для технологии расчёта; 0 = нет.
energy_cost_per_kwhnumberEnergy cost per kWh
hollowingstringТолько для SLA, SLS и MJF: 'solid', '2mm' или '3mm'. Для SLA по умолчанию используется '2mm', если в настройках включено создание полостей для SLA; для SLS и MJF то же самое действует через их собственную настройку. Игнорируется для FDM, где полость задаётся параметром fill_density, и для SLM, где закрытая полость заперла бы порошок, который невозможно удалить. Детали SLS и MJF делаются полыми БЕЗ отверстия для удаления порошка: неспечённый порошок остаётся внутри, оплачивается по насыпной плотности слоя порошка, а не по плотности сплошного материала, и не подлежит возврату.
post_processingstringОбъёмные технологии (SLA, SLS, SLM, MJF): 'standard', 'sanding', 'painting' или 'painted' (по умолчанию: 'standard'). Значение сохраняется в расчёте и оценивается по тарифам постобработки для каждой технологии из глобальных настроек. Тарифы SLM выше по всему диапазону, потому что даже 'standard' включает срезание детали с платформы построения и очистку поверхности.
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: тариф, применяемый при post_processing 'standard'.
mjf_post_processing_fee_sandingnumberMJF: тариф, применяемый при post_processing 'sanding'.
mjf_post_processing_fee_paintingnumberMJF: тариф, применяемый при post_processing 'painting'.
mjf_post_processing_fee_paintednumberMJF: тариф, применяемый при post_processing 'painted'.
slm_post_processing_fee_standardnumberSLM: тариф, применяемый при post_processing 'standard'.
slm_post_processing_fee_sandingnumberSLM: тариф, применяемый при post_processing 'sanding'.
slm_post_processing_fee_paintingnumberSLM: тариф, применяемый при post_processing 'painting'.
slm_post_processing_fee_paintednumberSLM: тариф, применяемый при post_processing 'painted'.
mjf_min_build_fillnumberMJF: минимальная доля построения, которую оплачивает заказ. 0 — построение делится с другими заказами, 1 — заказ оплачивает всё построение.
enable_batch_systembooleanEnable/disable batch calculation system (default: true)
sls_min_build_fillnumberSLS: минимальный коэффициент заполнения области построения (дробное число от 0 до 1). Заказ тарифицируется так, как если бы он занимал как минимум эту долю цикла построения: 0 означает совместное использование области с другими заказами, 1 — оплату за весь цикл построения. Игнорируется, если enable_batch_system имеет значение false.
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.

Совет: Расчеты автоматически сохраняются в вашей учетной записи. Вы можете получить к ним доступ в любое время через конечные точки истории расчетов.

6. Профили принтера и калькуляции стоимости

Настройте параметры принтера и цены, чтобы получать точные калькуляции стоимости. Вы можете управлять своими профилями по умолчанию в разделе 'Профили слайсера' в Панели управления, которые будут использоваться автоматически, когда вы не указываете параметры в API-запросах.

Типы профилей

  • Профиль принтера - Настройте параметры вашего принтера (размер платформы, диаметр сопла, скорость печати, высота слоя, ускорение, рывок, температуры и т.д.), чтобы они соответствовали вашему фактическому принтеру. Установите этот профиль как профиль по умолчанию в Панели управления, и он будет использоваться для всех запросов калькуляции стоимости, если вы не переопределите конкретные параметры.
  • Профиль материала - Установите свойства материала (тип нити, плотность, диаметр, температуры, скорость вентилятора, настройки убирания нити, цены) для каждого используемого вами материала. API автоматически будет использовать профиль материала, соответствующий типу нити (filament_type), который вы указываете в запросе.
  • Глобальные настройки - Настройте глобальные параметры калькуляции стоимости, такие как ставка налога, фиксированные сборы, стоимость электроэнергии и валюта по умолчанию. Эти настройки применяются ко всем калькуляциям стоимости, если они не переопределены в запросе.

Рекомендации: Настройте свои профили по умолчанию в разделе 'Профили слайсера' в Панели управления. Таким образом, вы можете делать простые запросы калькуляции стоимости, не указывая все параметры, и API автоматически будет использовать ваши настроенные значения по умолчанию. Вы по-прежнему можете переопределить любой параметр для каждого запроса при необходимости.

Как работает объединение профилей

Когда вы делаете запрос калькуляции стоимости, API объединяет параметры вашего запроса с вашими профилями из Панели управления, используя следующий приоритет:

  1. Параметры запроса - Значения, которые вы явно указываете в API-запросе, имеют наивысший приоритет
  2. Профиль пользователя - Если у вас есть профиль, специфичный для пользователя, установленный как профиль по умолчанию, он используется следующим
  3. Глобальный профиль - Если профиль пользователя не существует, система переходит к глобальным настройкам по умолчанию

Это означает, что вы можете переопределить только те параметры, которые вам нужны (например, только layer_height или fill_density), сохраняя при этом все остальные настройки из ваших профилей в Панели управления.

7. Веб-хуки

Получайте уведомления в реальном времени о событиях в вашей учетной записи:

  • POST /v2/webhooks - Создать новую конечную точку веб-хука
  • GET /v2/webhooks - Список всех ваших веб-хуков
  • GET /v2/webhooks/{webhook_id} - Получить сведения о веб-хуке и статистику доставки
  • PUT /v2/webhooks/{webhook_id} - Обновить настройки веб-хука
  • DELETE /v2/webhooks/{webhook_id} - Удалить веб-хук
  • POST /v2/webhooks/{webhook_id}/deliveries/{delivery_id}/resend - Повторно отправить прошлую доставку, например после исправления вашего эндпоинта

Поддерживаемые события: quote.completed, quote.failed, file.uploaded, file.deleted, job.status_changed, widget.added_to_cart, usage.alert. Веб-хуки включают подписи HMAC-SHA256 для проверки безопасности.

Справочник по вебхукам: структура полезной нагрузки, проверка подписи, повторы и повторная доставка

8. Аналитика и отчетность

Получите информацию об использовании вашего API и статистике расчетов стоимости:

  • GET /v2/analytics/quotes - Получите полную статистику расчетов стоимости, включая общее количество расчетов, средние цены и тенденции использования материалов
  • GET /v2/analytics/popular - Просмотрите ваши самые популярные материалы и конфигурации принтеров
  • GET /v2/analytics/cost-trends - Анализируйте тенденции изменения стоимости с течением времени (группировка по дням, неделям или месяцам)
  • GET /v2/analytics/export - Экспортируйте ваши расчеты стоимости и данные об использовании в формате CSV или JSON

9. Каталог и запас

Управляйте собственными принтерами, материалами, цветами, запасом по цветам, ценами и технологиями аккаунта с серверным токеном. Виджет читает тот же каталог, поэтому изменение сразу попадает в форму расчёта. Токены виджета отклоняются, а эти вызовы не расходуют месячную квоту запросов:

  • GET /v2/store/catalog - Всё, что предлагает аккаунт, с готовностью по технологиям и заканчивающимися цветами
  • GET /v2/store/catalog/schema - Формы принтера, материала и цен из панели с границами, единицами и справочными текстами на запрошенном языке
  • POST /v2/store/catalog/adopt - Скопировать глобальные принтеры и материалы в аккаунт с выбранными цветами, ценой и начальным запасом
  • POST /v2/store/catalog/materials - Создать материал, при желании на основе глобального
  • GET · PATCH · DELETE /v2/store/catalog/materials/{id} - Прочитать, изменить или удалить материал вместе с настройками запаса
  • PUT /v2/store/catalog/materials/{id}/colors - Заменить список цветов материала; запас существующих цветов сохраняется
  • GET · PATCH · DELETE /v2/store/catalog/printers/{id} - Прочитать, изменить или удалить принтер
  • GET · PATCH · DELETE /v2/store/catalog/pricing - Прочитать, изменить или сбросить цены; смена валюты меняет валюту аккаунта без пересчёта сумм
  • GET · PUT /v2/store/catalog/technologies - Какие технологии разрешает тариф и какие включены
  • GET · POST /v2/store/stock/movements - Записать поступление, инвентаризацию или списание и получить историю запаса
  • POST /v2/store/stock/orders - Списать, вернуть или проверить материал оплаченного заказа, не более одного раза на расчёт

Тело PATCH содержит values и updated_at. values использует те же имена полей в snake_case, что и список каталога (имя, которого нет в форме, отклоняется с 400); если профиль изменился после вашего чтения, вызов вернёт 409 с error_key stale.

10. Ограничение скорости и квоты

Quote3D использует ограничение скорости для обеспечения справедливого использования и стабильности системы:

  • Ограничения скорости применяются для каждого API токена и различаются в зависимости от конечной точки
  • Информация об ограничении скорости содержится в заголовках ответа: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Window
  • При превышении лимита запросов вы получите ответ 429 Too Many Requests с заголовком Retry-After
  • Тариф задаёт лимит расчётов, который сбрасывается каждый расчётный период, и лимит хранилища, который не сбрасывается: место освобождается только при удалении файлов
  • Лимиты настраиваются для каждой установки, поэтому читайте текущие значения, а не задавайте их в коде. Их сообщают и заголовки ответа выше, и этот эндпоинт: GET /v2/quota

Рекомендации: Реализуйте экспоненциальную задержку при обработке ошибок ограничения скорости, чтобы избежать перегрузки API.

11. Ответы и ошибки

Успешные ответы бывают двух видов. Вызовы расчёта, задачи, деталей сохранённого расчёта, веб-хуков, аналитики, использования, квоты и конфигурации оборачивают данные в success: true с результатом в data. Вызовы файлов, идентификатора загрузки, пользователя, загрузок, списка расчётов, проверки печатаемости и раздела «Каталог и запас» возвращают поля на верхнем уровне. Точная схема каждого вызова — в справочнике API. Скачивание файлов и экспорт CSV возвращают содержимое файла как есть.

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

Постраничный вывод и сортировка

Списочные эндпоинты, такие как /v2/quotes и /v2/user/uploads, разбиваются на страницы параметрами limit и offset (по умолчанию 50 результатов, максимум 100). Вместе с результатами возвращается объект pagination с полями total, limit, offset, has_more, page и total_pages, поэтому используйте has_more вместо самостоятельного вычисления конца списка. Сортировка задаётся одним повторяемым параметром вида field:direction, например ?sort=created_at:desc&sort=total_price:asc; загрузки по умолчанию идут от новых к старым.

Ответы с ошибкой

Все ошибки имеют одну форму: список detail с именем параметра или поля (loc, msg, code), error_code вида AUTH_001, error_summary и, где полезно, recovery_suggestions и documentation_url. Ветвитесь по HTTP-статусу и error_code, а не по тексту, который может меняться.

СтатусЗначение
400Тело запроса или параметр некорректны — неверно оформленное поле, неподдерживаемый формат файла либо модель, не помещающаяся в выбранный принтер.
401API-токен отсутствует, повреждён, истёк или отозван.
403Токен действителен, но не может выполнить этот вызов: ограничение области, origin или IP-адрес не из списка токена (AUTH_004) или исчерпанный лимит тарифа (RATE_002, с заголовками X-Quota-*).
404Запрошенный файл, расчёт, задание или вебхук не существует либо не принадлежит вашему аккаунту.
429Превышен лимит частоты запросов. Прочитайте заголовок Retry-After и выдержите паузу перед повтором.
500Непредвиденная ошибка на стороне сервера. Повтор с задержкой безопасен; если ошибка сохраняется, обратитесь в поддержку, указав время.

С асинхронными расчётами иначе: постановка задания в очередь завершается кодом 202, а неудавшийся впоследствии расчёт проявляется как статус failed с сообщением об ошибке на эндпоинте задания, а не как ошибка HTTP. Всегда проверяйте статус задания, а не только код, полученный при запуске.

12. RESTful API с версионированием

  • Все конечные точки имеют версии (например, /v2/)
  • Использует стандартные HTTP-методы: GET, POST, PUT, DELETE
  • Описан схемой OpenAPI 3.0.3, которую можно импортировать в свои инструменты
  • Несовместимые изменения и дополнения фиксируются в журнале изменений API