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

Webhook

Получайте события заказов, принтеров, филамента, заявок и счетов на свой URL — без опроса по расписанию.

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

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

Настройка webhook

В Настройки → Интеграции → Разработчикам → Уведомления о заказах можно добавить сразу несколько каналов одновременно — например, Home Assistant и Discord вместе. У каждого канала свой формат тела запроса:

  • 3D Print Pricing / HA — общий JSON с HMAC-подписью, см. раздел ниже.
  • Discord / Slack — их родной формат incoming webhook (без подписи — весь секрет уже зашит в самом URL, который выдаёт Discord/Slack).

Добавьте канал, вставьте URL приёмника, включите — 3D Print Pricing покажет секрет один раз (только у формата «3D Print Pricing / HA»), скопируйте его сразу. Кнопка «Отправить тестовое событие» у каждого канала шлёт синтетическое событие webhook.test прямо сейчас, не дожидаясь реального заказа.

События order.created / order.status_changed

3D Print Pricing отправляет POST с JSON-телом на ваш URL при создании заказа и при каждой смене workflow_status. Доставка — best-effort (без повторных попыток при ошибке в MVP), поэтому не полагайтесь только на webhook — для сверки используйте GET /print-jobs.

POST <ваш URL>
Content-Type: application/json
X-3DP-Event: order.status_changed
X-3DP-Signature: sha256=<hex-подпись тела запроса>

{
  "event": "order.status_changed",
  "occurred_at": "2026-08-27T18:32:10.000Z",
  "data": {
    "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": "assigned",
    "printer_id": null,
    "printer_name": null
  }
}

Проверка подписи (псевдокод)

signature_header = "sha256=" + hex(HMAC_SHA256(webhook_secret, raw_request_body))
if signature_header != request.headers["X-3DP-Signature"]:
    reject()  # тело подделано или секрет не совпадает

Другие события (по подписке)

Каждый канал выбирает нужные события (чекбоксы в карточке канала или массив events в API). Существующие каналы по-прежнему получают только order.created и order.status_changed; события ниже — по подписке. Конверт и HMAC-подпись у всех событий одинаковые.

  • printer.print_finished / printer.print_failed — принтер закончил печать / сообщил об ошибке во время печати
  • filament.low_stock — остаток катушки дошёл до порога (задаётся в карточке филамента)
  • lead.created — новая заявка с профиля в каталоге мастеров
  • invoice.paid — счёт оплачен онлайн (needs_review — повторная оплата или по устаревшей сумме)
// printer.print_finished / printer.print_failed
{ "event": "printer.print_finished", "occurred_at": "2026-10-01T12:00:00+00:00",
  "data": { "printer_id": "9d1c...", "printer_name": "Bambu P1S", "filename": "bracket.3mf", "at": "2026-10-01T12:00:00+00:00" } }

// filament.low_stock
{ "event": "filament.low_stock", "occurred_at": "...",
  "data": { "filament_id": "5a2e...", "name": "PETG black", "remaining_grams": 180.0, "threshold_grams": 200.0 } }

// lead.created
{ "event": "lead.created", "occurred_at": "...",
  "data": { "lead_id": "c0f4...", "description": "Need 20 brackets", "contact": "@client", "client_email": "client@example.com",
            "budget": "up to 3000", "deadline": "next week", "has_file": true, "created_at": "..." } }

// invoice.paid
{ "event": "invoice.paid", "occurred_at": "...",
  "data": { "document_id": "7b3a...", "number": "INV-12", "amount": 4500.0, "paid_at": "...",
            "order_ids": ["b6b6c8b0-..."], "needs_review": false } }

API: POST /webhook-subscriptions и PUT /webhook-subscriptions/{id} принимают "events": ["order.created", "printer.print_finished", ...] (минимум одно; неизвестные имена — 422).

Управление подписками через API

То же самое, что карточка Настройки → Интеграции → Разработчикам, но программно — например, чтобы n8n/скрипт сам завёл канал при первом запуске, не заходя в веб-интерфейс. Максимум 10 каналов на аккаунт.

GET/webhook-subscriptions

Список подписок

Все каналы аккаунта (без секретов — они отдаются только один раз, при создании/пересоздании).

POST/webhook-subscriptions

Создать подписку

Секрет (для формата «3D Print Pricing / HA») вернётся в ответе один раз — сохраните его сразу.

POST/webhook-subscriptions/{id}/test

Отправить тестовое событие

Шлёт синтетическое событие webhook.test на URL уже существующей подписки — реальные заказы не трогает.

GET/webhook-subscriptions/{id}/deliveries

История доставок

Последние 20 попыток отправки по этой подписке (статус, ошибка, время).

DELETE/webhook-subscriptions/{id}

Удалить подписку

Использует то же id подписки, что и поля выше.

Вопросы по интеграции — через обычную поддержку 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 · v10.0 · 16+

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

Webhook — order.created / order.status_changed · 3D Print Pricing