Przejdź do głównej treści
Na tej stronie

Engine API

Jeśli po prostu tniesz płyty, ta strona nie jest Ci potrzebna. Optymalizator w CutOptim robi już wszystko to, co jest tu opisane. Engine API to ten sam silnik, tylko bez ekranu — na wypadek, gdy inne oprogramowanie potrzebuje planów cięcia bez tego, żeby ktoś otwierał aplikację.

Wszystko, co CutOptim robi w Twojej przeglądarce, zaczyna się od jednego obliczenia: mając te elementy i ten materiał bazowy, jak najlepiej je pociąć? Engine API udostępnia dokładnie to obliczenie przez internet, więc pytanie może zadać inny program i sam otrzymać odpowiedź — bez przeglądarki, bez klikania, bez nikogo zalogowanego.

I to cała idea. To nie nowy optymalizator, nie lepszy optymalizator i nie większy plan. To ten sam silnik, dostępny dla oprogramowania zamiast dla człowieka.


Czy to jest dla mnie?

Dla zdecydowanej większości użytkowników CutOptim uczciwa odpowiedź brzmi nie. Jeśli Twój dzień pracy polega na otwarciu CutOptim, wpisaniu elementów i materiału bazowego oraz wydrukowaniu albo wyeksportowaniu planu, to aplikacja jest produktem, a ta strona jest dla Ciebie bez znaczenia.

Engine API jest dla jednej sytuacji: plany cięcia mają pojawiać się wewnątrz oprogramowania, z którego już korzystasz, bez tego, żeby ktokolwiek wchodził na CutOptim. W praktyce oznacza to jedną z dwóch osób:

  • Już korzystasz z oprogramowania, w którym plan cięcia powinien się znaleźć. System ERP prowadzący Twoje zamówienia, narzędzie ofertowe wyceniające zlecenia albo oprogramowanie samej maszyny. Zamiast operatora przepisującego tę samą listę elementów do CutOptim, ten program pyta silnik bezpośrednio i pokazuje plan tam, gdzie praca już się dzieje.
  • Ktoś buduje dla Ciebie oprogramowanie. Własny programista, lokalna firma informatyczna albo dostawca Twojej maszyny. Engine API jest tym, do czego się oni podłączają.

Korzystanie z Engine API oznacza, że ktoś pisze do niego oprogramowanie. Nie ma tu interfejsu, nie ma arkusza do wypełnienia i nie ma czego instalować — to usługa dla programów, a pracę wykonuje ten, kto pisze ten program. Jeśli po Twojej stronie nikt nie pisze kodu, to aplikacja jest tym, czego szukasz.

Jeśli nie masz pewności, po której stronie tej granicy jesteś, oto dobry test: czy plan mógłby pojawić się bez tego, żeby ktokolwiek o niego poprosił? Jeśli tak, API ma dla Ciebie znaczenie. Jeśli o powstaniu planu cięcia zawsze decyduje człowiek, aplikacja jest już właściwym narzędziem.


Co robi

Twoje oprogramowanie przesyła te same dwie rzeczy, które wpisałbyś w aplikacji — listę elementów i listę materiału bazowego — w formacie JSON. Silnik odsyła pełną odpowiedź:

  • Cały układ. Każdy element umieszczony na konkretnej płycie lub pręcie, wraz z informacją, czy został obrócony.
  • Plan cięcia. Nie tylko obrazek z prostokątami: rzeczywista gilotynowa sekwencja cięcia, po kolei, tak żeby plan dało się wykonać na pile panelowej.
  • Liczby. Ile płyt albo prętów zajmie zlecenie, procentowe wykorzystanie materiału, ile potrzeba cięć oraz łączna cena zużytego materiału. Przy płytach otrzymujesz też dwie uczciwe miary liczby cięć — linie cięcia, które scalają cięcia korzystające z jednego ustawienia prowadnicy, oraz przejścia piły, które liczą każde przejście — a do tego łączną długość cięcia.
  • Opcjonalnie rysunek. Poproś o include: ["svg","csv","dxf"], a odpowiedź poniesie też układ jako gotowy plik — samodzielny rysunek 2D SVG, plik DXF R12/AC1009 albo listę cięć CSV — w treści JSON, bez magazynowania i bez drugiego wywołania. (SVG dotyczy tylko 2D.)
  • Twoje własne identyfikatory, zwrócone. Dołącz obiekt meta — numer artykułu, pozycję zamówienia, referencję klienta — do dowolnego elementu lub wiersza materiału bazowego, a wróci on niezmieniony przy każdym rozmieszczonym kawałku i każdej płycie lub pręcie, dzięki czemu plan pokrywa się z Twoim własnym systemem. To właśnie tego pola należy użyć, gdy chcesz wysłać wszystkie swoje płyty, oznaczyć każdą własnym kodem i odczytać z odpowiedzi, którą płytę wybrał optymalizator — wpisz kod w stock[].meta, a wróci on w sheets[].meta. Nigdy nie wpływa to na rozmieszczenie. Do identyfikacji nie używaj pola material: material to twardy podział — element wycinany jest wyłącznie z materiału bazowego o tym samym materiale — więc wypełnienie pola material we wszystkich wierszach materiału bazowego przy pozostawieniu elementów bez tego pola sprawia, że każdy element wraca jako unmatched, a wynik jest pusty.

Tryby optymalizacji są cztery, wszystkie odpowiadają aplikacji — jeden dla płyt 2D, jeden dla materiału 1D liniowego (pręty, profile, rury), jeden dla drewna, którego materiał ma przekrój, oraz nesting z rzeczywistych kształtów (POST /v1/optimize/nest), który układa dowolne wielokąty do cięcia laserowego, plazmowego i strumieniem wody (tryb Nesting aplikacji). Każdy endpoint optymalizacji ma też bezpłatny endpoint walidacji, który sprawdza zapytanie bez jego rozwiązywania (patrz niżej).

Endpointy

Bazowy URL to https://api.cutoptim.com. Endpointy optymalizacji i zużycia przenoszą klucz w nagłówku Authorization: Bearer <key>; endpointy walidacji i zdrowia nie wymagają klucza.

Endpoint Co robi
POST /v1/optimize/2d optymalizacja cięcia płyt 2D
POST /v1/optimize/1d optymalizacja 1D / liniowa — pręty, profile, rury
POST /v1/optimize/wood Optymalizacja drewna — 1D z dopasowaniem przekroju
POST /v1/optimize/nest Nesting kształtów rzeczywistych — nieregularne wielokąty do cięcia laserem, plazmą i strumieniem wody
POST /v1/validate/2d · /1d · /wood · /nest Walidacja zapytania bez rozwiązywania — bezpłatnie, bez klucza, bez limitu
GET /v1/jobs/{id} Odpytaj asynchroniczne zadanie silnika max — wyłącznie własne zadania, bez limitu
POST /v1/import/nest Odczytuje obrysy elementów z pliku SVG lub DXF — wymaga klucza, nie zużywa limitu
GET /v1/usage zużycie i limit KONTA w bieżącym miesiącu (wszystkie klucze dzielą jeden)
GET /v1/health sprawdzenie dostępności — nie wymaga klucza

Większość wywołań od razu zwraca gotowy wynik. Jedynym wyjątkiem jest asynchroniczny silnik max (patrz Trzy silniki poniżej): zgłoszenie max zwraca identyfikator zadania, a Ty odpytujesz GET /v1/jobs/{id}, aż plan będzie gotowy.

Endpointy walidacji przyjmują tę samą treść co odpowiadający im endpoint optymalizacji i sprawdzają ją bez uruchamiania obliczeń: błędnie sformułowane zapytanie wraca jako 400 z nazwą dokładnie tego pola, które jest nie tak, a poprawne zwraca valid: true wraz z ostrzeżeniami o wykonalności (na przykład o elemencie, który nie pasuje do żadnego materiału bazowego). Nic nie kosztują i nie wymagają klucza, więc możesz walidować swoje ładunki podczas budowania integracji — jeszcze zanim będziesz mieć klucz — i potwierdzić, że zapytanie nie zostanie odrzucone, bez zużywania jednego z miesięcznych wywołań.

Dlaczego drewno ma własny endpoint

Materiał liniowy zna jeden wymiar, długość, więc każdy pręt może posłużyć każdemu elementowi. Z drewnem tak nie jest: elementu 50×150 nie da się wyciąć z pręta 50×100, niezależnie od tego, ile długości zostało. Dlatego endpoint drewna przyjmuje oba boki przekroju przy każdym elemencie i każdej pozycji materiału, dzieli zlecenie według przekroju, dopasowuje do każdego przekroju jego własny materiał i zwraca przekroje osobno — każdy z własnymi prętami i własnymi sumami, obok liczb dla całego zlecenia.

Dwa szczegóły warte poznania przed integracją:

  • Oba boki przekroju można podać w dowolnej kolejności. 50×100 i 100×50 to ta sama belka obrócona i trafiają do jednego przekroju. Różnica w tym, jak akurat wprowadzono Twoje dane, nie może więc sprawić, że materiał zniknie.

  • „Brak materiału o tym przekroju” i „nie zmieściło się” są raportowane osobno. Pierwsze to brak materiału, drugie to problem pojemności, a każdy naprawia się inaczej — zmieszane w jednej liście wysłałyby Twojego użytkownika w złe miejsce.

Można to przybliżyć kilkoma własnymi wywołaniami 1d, grupując elementy samodzielnie. Kosztowałoby to jedno zapytanie z Twojego limitu na przekrój zamiast jednego na zlecenie, przeniosłoby dopasowanie materiału do Twojego kodu i dałoby sumę zlecenia, którą musiałbyś złożyć sam — i która niekoniecznie zgadzałaby się z tym, co dla tego samego zlecenia pokazuje aplikacja CutOptim.


Elementy z pliku CAD

Endpoint nestingu przyjmuje nie tylko współrzędne. Element może zamiast nich nieść source — dokument SVG lub DXF — a serwer odczyta z pliku jego obrys wraz z otworami. To ten sam czytnik, którego używa aplikacja, gdy upuścisz rysunek na jej tryb Nesting, więc biblioteki elementów istniejącej już jako pliki CAD nie trzeba najpierw przepisywać na listy współrzędnych.

Plik zastępuje wyłącznie geometrię. Ilość, materiał, dozwolone obroty i Twoje własne metadane pozostają zwykłymi polami wiersza elementu, dokładnie tak jak przy wysyłaniu współrzędnych. Jeden plik opisuje jeden element; gdy pojedynczy rysunek zawiera kilka oddzielnych części, POST /v1/import/nest najpierw dzieli go na gotowe wiersze — a to wywołanie wymaga klucza, lecz nie zużywa żądania z Twojego miesięcznego limitu.

Nic nie jest przechowywane. Plik istnieje wyłącznie jako samo żądanie: jest czytany w pamięci i znika w chwili, gdy odpowiedź zostaje zapisana. Nie zostaje kopia na dysku ani w bazie danych, nic nie trafia do logu i nie ma potem czego usuwać. Z jednostkami postępujemy tak samo — DXF może zadeklarować milimetry lub cale i my zgłaszamy to, co zadeklarował, ale współrzędne nigdy nie są przeliczane, bo żadna wartość w tym API nie niesie jednostki.

Za każdym razem ta sama odpowiedź

Silnik jest deterministyczny: te same dane wejściowe zawsze zwracają ten sam wynik. W algorytmie nie ma żadnej losowości ani zegara.

Brzmi to akademicko, ale to właśnie praktyczny powód, żeby na tym budować. Oznacza bowiem, że wyniki można buforować — jeśli o dokładnie to zlecenie już raz zapytałeś, możesz bezpiecznie użyć wcześniejszej odpowiedzi, zamiast pytać ponownie. Oznacza też, że integrację można testować: plan da się porównać ze znanym, poprawnym wynikiem, a różnica jest wtedy prawdziwą różnicą, a nie szumem. Oprogramowanie, które w poniedziałek podaje klientowi cenę, w piątek podaje tę samą cenę.


Trzy silniki

API daje wybór silnika. Pierwsze dwa działają synchronicznie, trzeci jest asynchroniczny. Różnica nie polega na jakości — to kompromis między szybkością, tym, czy wynik da się pociąć na pile panelowej, i tym, jak blisko dochodzi do teoretycznego minimum.

  • heuristic jest domyślny i jest tym samym, którego używa aplikacja. Tworzy układy gilotynowe: najwyższe wykorzystanie materiału, każdy układ da się pociąć na pile panelowej i zawsze pełny plan cięcia. Synchroniczny.
  • balanced trzeba włączyć samemu. Korzysta zamiast tego ze swobodnego nestingu, który przy bardzo dużych zleceniach jest zdecydowanie szybszy — zmierzone ~25× szybciej przy zleceniu na 2000 elementów — za cenę nieco niższego wykorzystania materiału. Ważne zastrzeżenie: jego układów często nie da się pociąć od krawędzi do krawędzi, więc dla nich nie zwraca żadnego planu cięcia. Synchroniczny.
  • max trzeba włączyć samemu i działa tylko dla 2D. To przeszukiwanie drzewa po stronie serwera, które osiąga dowiedzione optimum przy znacznie większej liczbie zleceń niż silnik domyślny, a jego układy nadal da się pociąć gilotynowo. Kosztem jest czas: obliczenie max trwa od sekund do minuty, więc nie odpowiada w treści zapytania. Zamiast tego POST /v1/optimize/2d z engine: "max" zwraca identyfikator zadania, a Ty odpytujesz GET /v1/jobs/{id}, aż będzie gotowy. Jest nadal deterministyczny. Sięgnij po niego, gdy przy dużym, wartościowym zleceniu warto poczekać na ostatnich kilka płyt. Modeluje jeden format materiału w pełnym rozmiarze płyty, w nieograniczonej ilości, więc żądanie zawierające dodatkowo drugi format materiału, trim na bok, ograniczony zapas (respectStock), materiały lub grupy słojów jest odrzucane z góry kodem 400, który nazywa dokładnie to, czego silnik nie potrafi — zanim wywołanie zostanie naliczone. Takie zlecenia kieruj do heuristic, który obsługuje je wszystkie.

balanced to nie „lepsze wyniki”. Jest szybszy i daje nieco niższe wykorzystanie materiału, a gdy jego układ nie jest gilotynowy, nie ma planu cięcia, który dałoby się podać operatorowi piły. Wybierz go tylko wtedy, gdy przy bardzo dużym zleceniu szybkość liczy się bardziej niż plan gotowy na piłę. Jeśli nie masz pewności, zostań przy domyślnym.


Limity

Każde zapytanie ma swoje granice, więc zlecenie, które wymknęło się z ręki, kończy się wyraźnym błędem, a nie zawieszeniem:

Limit Wartość
Elementów na zapytanie 2000
Wierszy materiału bazowego na zapytanie 50
Rozmiar treści zapytania 1 MB
Rozmiar treści żądania — ścieżki nest, które mogą nieść rysunek 10 MB
Aktywnych kluczy na konto 10
Wywołania validate bez klucza na adres 120 / minutę
Zadania max w stanie queued/running na konto 5

Uzyskanie dostępu

Zacznij od strony Engine API. Engine API jest rozliczane osobno od planów aplikacji i żadna zmiana planu go nie włącza.

  1. Wykup albo napisz. Wykupienie na stronie Engine API to najszybsza droga — działa z okresem próbnym, a dostęp sam pojawia się na koncie. Jeśli wolisz najpierw opisać swoją integrację albo potrzebujesz wolumenu powyżej planu standardowego, napisz do nas i podaj, co chcesz podłączyć i mniej więcej ile planów cięcia miesięcznie będzie potrzebnych.
  2. Dostęp zostaje dodany do Twojego konta. Nic więcej w Twoim koncie się nie zmienia.
  3. Utwórz klucz. Gdy Twoje konto ma już dostęp do API, w Twoim panelu pojawia się karta klucze API. Klucze tworzysz tam, nazywasz i usuwasz samodzielnie.
  4. Skopiuj klucz od razu. Pełny klucz pokazywany jest dokładnie raz, w chwili jego utworzenia.

Klucz pokazywany jest tylko raz. CutOptim przechowuje wyłącznie jego skrót sha256, nigdy samego klucza — więc później nie odczyta go ani Ty, ani my. Przy tworzeniu skopiuj go od razu do konfiguracji swojego oprogramowania. Jeśli zgubisz klucz, usuń go i utwórz nowy; jeśli klucz kiedykolwiek wycieknie, usuń go, a wywołania natychmiast przestaną działać.

Traktuj klucz jak hasło: jego miejsce jest w konfiguracji Twojego oprogramowania, a nie w emailu, arkuszu kalkulacyjnym czy na zrzucie ekranu.

Co robi karta Klucze API w panelu

Trzy elementy — i warto precyzyjnie powiedzieć, co zmienia każdy z nich, zwłaszcza ostatni, po którym wiele osób spodziewa się wpływu na płatności. Nie ma go.

  • Utwórz klucz. Generuje nowy klucz i pokazuje go tylko raz, od razu. Nazwa (Integracja ERP, staging) służy wyłącznie do rozróżniania kluczy później. Do 10 aktywnych kluczy na konto.
  • Pasek zużycia. Dwie liczby: łączne zużycie konta w miesiącu kalendarzowym wobec limitu oraz, dla każdego klucza, ile zużył. Wartość per klucz odpowiada na pytanie, która integracja zjada pulę — nie jest osobnym budżetem.
  • Wycofaj. Wyłącza ten jeden klucz od następnego wywołania. Wiersz pozostaje widoczny, żeby historia nie zniknęła.

Wycofanie klucza nie ma nic wspólnego z subskrypcją. Nic nie anuluje, nic nie zwraca i nie zwalnia limitu — plan działa dalej, pula zostaje, po prostu nie masz już tego jednego klucza. Wycofuj, gdy klucz wyciekł albo integracja jest wygaszana. Aby przestać płacić, anuluj subskrypcję: dostęp trwa wtedy do końca opłaconego okresu, a potem przestają działać nawet istniejące klucze.

Jeden limit na konto, nie po jednym na klucz

Każdy aktywny klucz Twojego konta czerpie z tej samej miesięcznej puli. Utworzenie drugiego klucza nie tworzy drugiego limitu — klucze służą do oddzielenia stagingu od produkcji, nadania każdej integracji własnych poświadczeń i wycofania jednego bez ruszania pozostałych.

GET /v1/usage podaje stan konta (used, limit, remaining), więc odpowiada na pytanie, które faktycznie masz — ile zostało, zanim wywołania zaczną się nie udawać — niezależnie od tego, którym kluczem zapytałeś. Gdy pula się skończy, każdy klucz zwraca 402, nie tylko ten, który ją zużył.


Cena i limit zapytań

Engine API rozliczane jest osobno od planów aplikacji, ze stałą liczbą zapytań na miesiąc. Aktualna cena, miesięczny limit zapytań i długość okresu próbnego są podane na stronie Engine API — ta strona czyta je z naszej konfiguracji cennika, więc pokazuje zawsze prawidłową wartość.

Szczegóły techniczne — dokładną strukturę zapytania i odpowiedzi, wszystkie opcje, wszystkie kody błędów oraz sposób wersjonowania — znajdziesz w dokumentacji API.


Czego to nie zmienia

Warto powiedzieć to wprost, bo Engine API łatwo błędnie odczytać jako zmianę w produkcie:

  • Optymalizator w aplikacji pozostaje bez zmian. Nadal działa w Twojej przeglądarce, dokładnie tak jak wcześniej.
  • Plany Bezpłatny, Pro i Warsztat są nienaruszone. Nadal zawierają optymalizator w aplikacji, z tymi samymi limitami co wcześniej. Nic nie zostało przeniesione za API.
  • Nic, co robisz w aplikacji, nie zużywa zapytań API. Miesięczny limit API zużywają wyłącznie wywołania wykonywane przez Twoje własne oprogramowanie.

Engine API to dodatek dla osób integrujących CutOptim z innym oprogramowaniem. Jeśli to nie Ty, nic się nie zmieniło.

FAQ

Czy potrzebuję Engine API?
Prawie na pewno nie. Jeśli tniesz płyty albo pręty, otwierając CutOptim w przeglądarce, aplikacja robi już wszystko to, co robi API — API to ten sam silnik, tylko bez ekranu. Istnieje wyłącznie dla jednej sytuacji: inne oprogramowanie potrzebuje planów cięcia bez tego, żeby ktoś otwierał aplikację. Jeśli nikt nie pisze kodu korzystającego z CutOptim, możesz o nim zapomnieć.
Dla kogo Engine API jest naprawdę przeznaczone?
Dla dwóch rodzajów klientów: dla kogoś, kto już korzysta z oprogramowania, w którym plan cięcia powinien się znaleźć — systemu ERP prowadzącego zamówienia, narzędzia ofertowego wyceniającego zlecenia, oprogramowania samej maszyny — oraz dla kogoś, komu takie oprogramowanie jest właśnie budowane, przez własnego programistę albo firmę zewnętrzną. W obu przypadkach pracę wykonuje ten, kto pisze to oprogramowanie, a nie Ty w interfejsie CutOptim.
Jak uzyskać dostęp do Engine API?
Możesz wykupić dostęp na stronie Engine API — działa z okresem próbnym, a dostęp sam pojawia się na koncie. To najszybsza droga. Jeśli wolisz najpierw opisać integrację albo potrzebujesz wolumenu powyżej planu standardowego, napisz do nas. Tak czy inaczej w panelu pojawi się karta Klucze API i klucze tworzysz tam samodzielnie. Engine API jest rozliczane osobno od planów aplikacji i żadna zmiana planu go nie włącza.
Czy Engine API tnie też drewno, czy tylko płyty i pręty?
Wszystkie trzy tryby, które ma aplikacja, łącznie z drewnem. Endpoint drewna zna przekrój: elementy i materiał niosą oba boki przekroju, więc element 50×150 wycinany jest wyłącznie z materiału 50×150. Zlecenie dzielone jest według przekroju i każdy przekrój wraca z własnymi prętami i sumami, a zapotrzebowanie, dla którego przekroju nie ma żadnego materiału, raportowane jest osobno od elementów, które materiał miały i się nie zmieściły.
Czy Engine API zmienia mój plan Bezpłatny, Pro albo Warsztat?
Nie. Engine API to osobny dodatek i nie zmienia niczego w zwykłych planach. Optymalizator w aplikacji pozostaje bez zmian, nadal działa w Twojej przeglądarce i nadal jest zawarty w planach Bezpłatnym, Pro i Warsztat dokładnie tak jak wcześniej. Nic, co robisz w aplikacji, nie zużywa zapytań API.
Czy do Engine API jest SDK albo biblioteka kliencka?
Nie. Nie ma SDK, nie ma biblioteki klienckiej i nie ma wtyczki — API to zwykły HTTPS z treścią zapytania i odpowiedzi w formacie JSON, którą potrafi wywołać każdy język programowania, bez żadnego pakietu specyficznego dla CutOptim. Nie ma też webhooków. Większość wywołań od razu zwraca gotowy wynik; jedynym wyjątkiem jest asynchroniczny silnik max (tylko 2D), gdzie POST /v1/optimize/2d z engine "max" zwraca identyfikator zadania, które odpytujesz przez GET /v1/jobs/{id}, aż plan będzie gotowy.
Czy silnik balanced jest lepszy od domyślnego?
Nie — to kompromis, a nie ulepszenie. Domyślny silnik heuristic daje najwyższe wykorzystanie materiału i każdy jego układ da się pociąć na pile panelowej, więc zawsze zwraca plan cięcia. Silnik balanced jest znacznie szybszy przy bardzo dużych zleceniach, ale wykorzystanie materiału jest nieco niższe, a jego układów często nie da się pociąć od krawędzi do krawędzi, więc dla nich nie zwraca żadnego planu cięcia. Wybieraj go tylko wtedy, gdy przy dużym zleceniu szybkość liczy się bardziej niż plan gotowy na piłę.
Dlaczego mój klucz API pokazywany jest tylko raz?
Ponieważ CutOptim nigdy nie przechowuje samego klucza — tylko jego skrót sha256. Oznacza to, że nikt, także my, nie odczyta Twojego klucza z bazy danych, więc można go pokazać wyłącznie w chwili jego utworzenia. Skopiuj go od razu do konfiguracji swojego oprogramowania; jeśli go zgubisz, usuń ten klucz i utwórz nowy.
Co się dzieje, gdy wycofam klucz API — dostanę zwrot pieniędzy?
Nie, i nic to też nie anuluje. Wycofanie wyłącza ten jeden klucz od następnego wywołania; subskrypcja działa dalej, a miesięczny limit zostaje. Wycofaj klucz, gdy wyciekł albo integracja jest wygaszana, i utwórz zastępczy. Aby przestać płacić, anuluj subskrypcję — dostęp trwa wtedy do końca opłaconego okresu, a potem przestają działać nawet istniejące klucze.
Czy utworzenie większej liczby kluczy API daje więcej zapytań?
Nie. Miesięczny limit należy do konta, a każdy aktywny klucz czerpie z tej samej puli — drugi klucz nie dodaje drugiego limitu. Klucze służą do oddzielenia stagingu od produkcji, nadania każdej integracji własnych poświadczeń i wycofania jednego bez ruszania pozostałych. Gdy pula się skończy, każdy klucz zwraca 402, nie tylko ten, który ją zużył. GET /v1/usage podaje stan konta, niezależnie od użytego klucza.
Czy Engine API może zwrócić rysunek, a nie tylko współrzędne?
Tak. Dodaj include: ["svg","csv","dxf"] do zapytania optymalizacji, a odpowiedź poniesie układ jako gotowy plik, w treści JSON: samodzielny rysunek 2D SVG, plik DXF R12/AC1009 na warstwach STOCK/PARTS/LABELS albo listę cięć CSV. Nie ma magazynowania ani drugiego wywołania. SVG dotyczy tylko 2D; zapytanie 1D lub wood zwraca zamiast tego ostrzeżenie. Możesz też dołączyć obiekt meta (numer artykułu z ERP, identyfikator pozycji zamówienia albo referencję klienta) do dowolnego elementu lub wiersza materiału bazowego, a wróci on niezmieniony w wyniku, dzięki czemu plan uzgadnia się z Twoim systemem. Pole meta służy też do odczytania, którą płytę wybrał optymalizator: wpisz swój kod w stock[].meta, a wróci on w sheets[].meta, i nigdy nie wpływa to na rozmieszczenie. Do identyfikacji nie używaj pola material — material to twardy podział (element wycinany jest wyłącznie z materiału bazowego o tym samym materiale), więc wypełnienie pola material we wszystkich wierszach materiału bazowego przy pozostawieniu elementów bez tego pola sprawia, że każdy element wraca jako unmatched, a wynik jest pusty.
Czy mogę sprawdzić zapytanie bez zużywania jednego z miesięcznych wywołań?
Tak. POST /v1/validate/2d, /v1/validate/1d, /v1/validate/wood albo /v1/validate/nest przyjmuje tę samą treść co odpowiadający mu endpoint optymalizacji i sprawdza ją bez rozwiązywania — bezpłatnie, bez klucza API i bez zużycia limitu. Błędnie sformułowane zapytanie wraca jako 400 z nazwą dokładnie tego pola, które jest nie tak, a poprawne zwraca valid: true wraz z ostrzeżeniami o wykonalności (na przykład o elemencie, który nie pasuje do żadnego materiału bazowego). Używaj tego do walidacji ładunków podczas budowania integracji, jeszcze zanim będziesz mieć klucz.
Co dzieje się z plikiem SVG lub DXF wysłanym do API?
Nic z niego nie zostaje. Plik podróżuje jako treść żądania, jest czytany w pamięci po to, by uzyskać obrys elementu, i znika, gdy tylko odpowiedź zostanie zapisana — żadnej kopii na dysku, żadnej kopii w bazie danych, żadnego wpisu w logu, który by go zawierał, a więc nie ma potem czego usuwać ani o jaki okres przechowywania pytać. To ta sama bezstanowość, którą utrzymuje reszta API: Twoich planów cięcia też nie trzymamy dłużej niż żądanie, które je wytworzyło.

Zaktualizowano: 2 września 2026