3D Print Pricing API
3D Print PricingDevelopers
Сайт

REST API

Заказы, принтеры и склад филамента — чтение, а также обновление статуса заказа / списание веса катушки.

Поиск по документации

Перейти к разделу

Эндпоинты заказов

GET/print-jobs

Список заказов

Постраничный список заказов аккаунта, отсортированный по дате создания.

{
  "items": [
    {
      "id": "b6b6c8b0-...",
      "model_name": "Кронштейн",
      "quantity_pieces": 4,
      "material_name": "PETG",
      "color_hex": "#000000",
      "material_grams": 86.0,
      "print_hours": 3.5,
      "due_date": "2026-09-01",
      "order_notes": "",
      "workflow_status": "confirmed",
      "printer_id": null,
      "printer_name": null
    }
  ],
  "total": 1,
  "page": 1,
  "per_page": 50
}

В реальном ответе полей больше (себестоимость, скидки, клиент и т.п.) — здесь показаны только те, что нужны для интеграции с HA. Полный набор — как в веб-интерфейсе заказа.

GET/print-jobs/{id}

Один заказ

Та же структура, что и элемент списка выше, для конкретного id.

GET /print-jobs/b6b6c8b0-... → 200
PUT/print-jobs/{id}

Обновить статус (или другие поля)

Присылайте только те поля, которые меняете — остальные останутся как есть.

PUT /print-jobs/b6b6c8b0-...
Content-Type: application/json

{ "workflow_status": "assigned" }

Значение workflow_status, которого нет в таблице ниже (опечатка, устаревшее имя), молча откатит заказ в статус «Согласование» — сервер не вернёт ошибку. Сверяйтесь со списком статусов при отправке.

Статусы заказа

ЗначениеНазваниеКогда выставлять
negotiationNegociaçãoЗаказ создан, условия ещё обсуждаются
confirmedConfirmadoКлиент подтвердил, готов к печати
modelingModelagemМоделирование: заказ подтверждён, мастер готовит 3D-модель; материал не списан. Новое значение с 11.0
assignedImpressora atribuídaHA закрепил конкретный принтер/катушку за заказом
printingImprimindoПечать идёт на принтере
print_errorErro de impressãoKlipper/Moonraker сообщил об ошибке печати
packingPreparação do pedidoЗаказ собирается и упаковывается к отправке (в т.ч. из склада готовой продукции)
deliveryEntregaПечать готова, едет к клиенту
delivered_unpaidEntregue, aguardando pagamentoДоставлено клиенту, ждём оплату (отсрочка/рассрочка); материал уже списан. Новое значение с 11.0
doneConcluídoЗаказ выполнен
cancelledCanceladoЗаказ отменён
closedFechadoАрхивный статус, скрыт из основного списка

Эндпоинты принтеров

Только чтение — список принтеров фермы и данные одного принтера. Полезно, чтобы сопоставить printer_id заказа с реальным устройством или показать его имя/технологию во внешней системе.

GET/printers

Список принтеров

Все принтеры аккаунта, включая объединённые в группы (фермы).

{
  "items": [
    {
      "id": "3f2a9c10-...",
      "name": "Bambu Lab P1S",
      "internal_name": "Ферма 1 / принтер 3",
      "model": "P1S",
      "technology": "fdm",
      "group_id": "a1b2c3d4-...",
      "is_favorite": false,
      "sort_order": 2
    }
  ],
  "total": 1,
  "page": 1,
  "per_page": 50
}

В реальном ответе есть ещё поля (наработка часов, стоимость, служебные привязки к Bambu/Anycubic Cloud, токен агента мониторинга) — они не нужны для внешней автоматизации и здесь не показаны.

GET/printers/{id}

Один принтер

Та же структура, что и элемент списка выше, для конкретного id.

Эндпоинты филаментов

Чтение каталога материалов склада и списание веса катушки по мере расхода — этого достаточно, чтобы завести живой учёт из Klipper/Moonraker, Home Assistant или n8n, по той же идее, что и эндпоинт веса катушки в Spoolman.

GET/filaments

Список филаментов

Все позиции склада материалов аккаунта.

{
  "items": [
    {
      "id": "7c4d1e20-...",
      "name": "PETG Black",
      "brand": "eSUN",
      "type_name": "PETG",
      "colors": ["#000000"],
      "is_gradient": false,
      "spool_weight_grams": 1000.0,
      "used_grams": 340.0,
      "spool_count": 2,
      "low_stock_threshold_grams": 150.0
    }
  ],
  "total": 1,
  "page": 1,
  "per_page": 50
}

Цена катушки (spool_price_rub) в ответе тоже есть, но не нужна для автоматизации фермы и здесь не показана.

GET/filaments/{id}

Один филамент

Та же структура, что и элемент списка выше, для конкретного id.

POST/filaments/{id}/consume

Списать вес катушки

Списывает граммы с катушки (FIFO по партиям) и возвращает обновлённый филамент. Использует тот же id филамента, что и поле выше.

API на чтение: свой сайт и Excel

Создайте токен с правом «Только чтение» в «Настройки → Интеграции → Токены доступа» и отметьте разделы, которые он может читать: каталог моделей, заказы, клиенты, склад, заявки. Такой токен отвечает 403 на любой запрос, который меняет данные, и на разделы, которые ему не выданы. Токен передаётся только в заголовке Authorization: Bearer pat_…. Токен внутри ссылки (например, IMPORTDATA в Google Таблицах) намеренно не поддерживается: ссылки попадают в историю браузера и логи.

GET/read-api/{orders|clients|stock|models|leads}

Плоские списки: страницы, дата изменения, CSV

Параметры: page, per_page (до 1000), updated_since (дата/время ISO — только изменённые с этого момента), format=json|csv, delimiter=, или ; (для CSV). У заказов есть ещё workflow_status и is_paid, у моделей — for_sale=true (витрина), у склада — kind=filament|resin|finished. Персональные данные клиентов (имя, телефон, почта) есть, только если токен создан с этой опцией. Лимит: 120 запросов в минуту и 3000 в час на токен.

GET https://api.3dprintpricing.pro/read-api/orders?updated_since=2026-10-01T00:00:00Z&per_page=200
Authorization: Bearer pat_...

GET https://api.3dprintpricing.pro/read-api/stock?format=csv&delimiter=%3B

Excel (Power Query)

Данные → Получить данные → Из других источников → Пустой запрос → Расширенный редактор, вставьте запрос ниже и подставьте свой токен. Подойдёт и обычное «Из Интернета»: выберите «Расширенное» и добавьте заголовок Authorization со значением Bearer pat_…. Обновление данных — Данные → Обновить всё.

let
  Source = Csv.Document(
    Web.Contents(
      "https://api.3dprintpricing.pro/read-api/orders",
      [Query = [format = "csv", per_page = "1000"],
       Headers = [Authorization = "Bearer pat_ВАШ_ТОКЕН"]]
    ),
    [Delimiter = ",", Encoding = 65001, QuoteStyle = QuoteStyle.Csv]
  ),
  Promoted = Table.PromoteHeaders(Source, [PromoteAllScalars = true])
in
  Promoted

Google Таблицы (Apps Script)

IMPORTDATA заголовки передавать не умеет, поэтому — «Расширения → Apps Script» и короткий скрипт, который запускается по расписанию.

function loadOrders() {
  const res = UrlFetchApp.fetch(
    "https://api.3dprintpricing.pro/read-api/orders?format=csv&per_page=1000",
    { headers: { Authorization: "Bearer pat_YOUR_TOKEN" } }
  );
  const rows = Utilities.parseCsv(res.getContentText().replace(/^\uFEFF/, ""));
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Orders");
  sheet.clear();
  sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
}

Свой сайт

Для публичной витрины ключ не нужен: открыты JSON анкеты мастера, бейдж badge.svg и виджет оценки. Токен «только чтение» используйте на своём сервере (не в коде страницы) и кэшируйте ответ — например, /read-api/models?for_sale=true.

Вопросы по интеграции — через обычную поддержку 3D Print Pricing.Написать в поддержку
REST API✦WEBHOOKS✦HOME ASSISTANT✦DISCORD✦SLACK✦N8N✦KLIPPER✦
REST API✦WEBHOOKS✦HOME ASSISTANT✦DISCORD✦SLACK✦N8N✦KLIPPER✦

Попробуйте 3D Print Pricing бесплатно

© 2026 · 3DPP API · v11.1.0 · 16+

Максим Иван Андреевич · Самозанятый (НПД) · ИНН 524308881820 · print.calculator.3d@gmail.com

REST API — заказы, принтеры, склад филамента · 3D Print Pricing