Добро пожаловать в документацию 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 Получение подробной аналитики использования, включая статистику конечных точек, расход материалов и временные тенденции

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

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

  • 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 либо превышает лимит размера платформы (по умолчанию 50 МБ). Оба маршрута загрузки применяют одинаковые проверки.

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

Загруженные модели хранятся в зашифрованном виде и не доступны публично — не существует ссылки, позволяющей получить доступ к файлу напрямую. Поле 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' ('RESIN' принимается как псевдоним 'SLA'). Определяет, какие специфичные для технологии параметры применяются и как детали компонуются для серийного производства. Если не указано, используется технология выбранного принтера, а при её отсутствии — '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: Шаг штриховки (мм)
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Необязательно: Название цвета (например, 'Белый', 'Черный', '#FFFFFF'). Примечание: Для технологий SLA/SLS цвет применяется только если 'post_processing' установлен в '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).
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 (USD, TRY, EUR, GBP, JPY, CNY, RUB). Defaults to your dashboard preference.
tax_ratenumberTax rate percentage (0-100)
fixed_feenumberFixed fee per quote
energy_cost_per_kwhnumberEnergy cost per kWh
hollowingstringСпецифично для SLA/SLS: 'solid', '2mm' или '3mm'. Для SLA значение по умолчанию — '2mm', если в настройках включено выдалбливание SLA; для SLS значение по умолчанию — '2mm', если включено выдалбливание SLS. Детали SLS делаются полыми БЕЗ дренажного отверстия, поэтому неспеченный порошок остается внутри: он оплачивается по плотности порошкового слоя и не подлежит возврату. Деталь, стенки которой уже тоньше удвоенной заданной толщины стенки, остается сплошной.
post_processingstringТолько для SLA/SLS: 'standard', 'sanding', 'painting' или 'painted' (по умолчанию 'standard'). Значение фиксируется в расчёте; именно 'painted' также заставляет применить запрошенный цвет к деталям SLA/SLS.
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.
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} - Удалить веб-хук

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

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

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

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

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

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

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

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

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

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

Каждый JSON-ответ использует одну и ту же оболочку. Успешный вызов возвращает success: true, а полезная нагрузка эндпоинта находится в data, поэтому клиент везде читает одинаковую структуру. Исключение — скачивание файлов и экспорт 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; загрузки по умолчанию идут от новых к старым.

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

При сбое возвращается success: false с понятным сообщением об ошибке и соответствующим кодом состояния HTTP. Всегда ветвитесь по коду состояния, а не по тексту сообщения, который может быть переформулирован.

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

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

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

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