Placraftic REST API дозволяє студії 3D-друку інтегрувати свій каталог матеріалів, профілі якості друку, розрахунок вартості та замовлення із зовнішніми системами — власним сайтом, ERP, автоматизованими сценаріями чи будь-яким іншим сервісом, здатним виконувати HTTP-запити.
API побудоване на REST-принципах: передбачувані URL, стандартні HTTP-методи та коди відповіді, JSON для тіла відповіді. Кожен ключ належить конкретній студії — авторизований запит завжди працює в межах даних саме цієї студії.
Початок роботи#
- Увійдіть у панель студії та відкрийте розділ Ключі API (доступно лише власнику студії, за умови що тариф студії включає доступ до API).
- Натисніть «Створити ключ», дайте йому назву (наприклад, «Продакшн-інтеграція») і збережіть секрет — він показується рівно один раз.
- Використовуйте секрет як bearer-токен у заголовку
Authorizationдля кожного запиту доhttps://placraftic.com/api/v1.
API доступне на тарифах Pro та Enterprise. На тарифах Free та Basic будь-який запит до /api/v1/* відхиляється з кодом 403, незалежно від валідності ключа.
Автентифікація#
Кожен запит до API повинен містити заголовок Authorization з ключем у форматі bearer-токена:
Authorization: Bearer pk_live_f4be019aadb13fb8e617950e36d351d67bc8e5312a7ebd022479cd0de95db21
Ключі мають префікс pk_live_, за яким слідує 64-символьний випадковий рядок. Секрет генерується один раз, під час створення ключа, і зберігається на сервері лише у вигляді хешу — переглянути його повторно неможливо. Якщо секрет втрачено, відкличте ключ у панелі студії та створіть новий.
Ключ ідентифікує студію, а не користувача. В API немає окремого параметра «яка студія» — кожен запит автоматично обмежений тією студією, якій належить використаний ключ. Спроба звернутись до ресурсу іншої студії (за id матеріалу, замовлення тощо) повертає не 403 Forbidden, а 404 Not Found — з точки зору вашого ключа такого ресурсу не існує.
Запит без заголовка Authorization, з невалідним ключем або з відкликаним ключем повертає 401 Unauthorized.
Базова адреса#
Усі запити виконуються відносно:
https://placraftic.com/api/v1
Формат запитів#
Ендпоінти, що приймають лише текстові поля (жодного зараз немає серед GET-запитів), очікують application/json. Ендпоінти, що приймають файл моделі (POST /quotes, POST /orders), очікують multipart/form-data — це стандартна вимога HTML-форм для завантаження файлів, і саме її використовує власна форма замовлення студії.
Формат відповіді#
Усі відповіді — JSON-об'єкт з таким конвертом:
{
"data": { },
"metadata": null,
"errors": null,
"errorCode": null
}
| Поле | Опис |
|---|---|
data | Корисне навантаження: об'єкт для операцій з одним ресурсом, масив для списків. null при помилці. |
metadata | Додаткові дані про відповідь (у поточній версії API не використовується для жодного ендпоінта). |
errors | Деталізація помилок валідації по полях (див. Помилки). null, якщо запит успішний. |
errorCode | Машинозчитуваний код помилки. null, якщо запит успішний. |
Пагінація#
Жоден ендпоінт списку (GET /materials, GET /printing-qualities, GET /finishings, GET /products) наразі не підтримує пагінацію — повертається повний список ресурсів студії за один запит. Каталоги студій зазвичай налічують від кількох до кількох десятків позицій, тому це не є практичним обмеженням, але майте на увазі: параметри на кшталt page/limit ігноруються.
Помилки#
Помилка повертається у вигляді HTTP-статусу, відмінного від 2xx, з тілом:
{ "data": null, "errorCode": "..." }
Для помилок валідації (400) додатково заповнюється поле errors — об'єкт, де ключ це назва поля, а значення — масив повідомлень:
{
"data": null,
"errors": { "materialId": ["This value should not be blank."] },
"errorCode": "errors.validationFailed"
}
| Код | Значення | Типова причина |
|---|---|---|
400 | Некоректний запит | Відсутнє обов'язкове поле, невалідний тип значення, файл не додано |
401 | Не авторизовано | Заголовок Authorization відсутній, ключ невалідний або відкликаний |
403 | Доступ заборонено | Ключ валідний, але тариф студії не включає доступ до API |
404 | Не знайдено | Ресурс не існує, або належить іншій студії |
429 | Забагато запитів | Перевищено ліміт запитів для тарифу студії |
Ліміти запитів#
Ліміт рахується на студію, а не на IP-адресу — усі ключі, випущені для однієї студії, ділять один і той самий ліміт.
| Тариф | Ліміт |
|---|---|
| Pro | 300 запитів на годину |
| Enterprise | 2000 запитів на годину |
При перевищенні ліміту запит повертає 429 з тілом { "error": "API rate limit exceeded for this studio's plan" }. Заголовка Retry-After API поки не повертає — після 429 варто почекати кілька хвилин перед повторною спробою, а не орієнтуватись на точний час скидання лічильника.
Розділи довідника#
| Розділ | Що описує |
|---|---|
| Матеріали | Каталог матеріалів студії — читання |
| Якості друку | Профілі нарізки (висота шару, заповнення тощо) — читання |
| Постобробка | Послуги постобробки — читання |
| Товари | Каталог готових виробів — читання |
| Розрахунок вартості | Розрахунок ціни моделі за реальним каталогом студії |
| Замовлення | Створення та отримання замовлень |