המדריך הזה מריץ את מה שבית דפוס באמת קונה — הסרת רקע, קו חיתוך במילימטרים, וייצוא DXF שמדפסה פותחת — בקריאה אחת. כל בקשה וכל תשובה כאן נלכדו מהמערכת החיה ומורצות מחדש בכל בדיקה: הדף הזה לא יכול לסטות מה-API.
לוגו, קו, טקסט, מדבקה — PNG עם רקע שקוף ושוליים, כפי שלקוח שולח. זה מה שהשרשרת הזו בנויה בשבילו. תצלום יעבור, אבל יצא פוסטרי — המדריך הזה הוא לאיורים שטוחים.
השרשרת כולה מתומחרת מראש — שלושה שלבים בחיוב אחד, עם הנחת חבילה. המספרים כאן נמשכים חיים מ-/api/pricing, לא מודפסים בדף.
/v1/pipeline מקבל את הקובץ ואת רשימת השלבים. כל שלב עובר דרך רישום המנועים; ההערכה, התקרה והחיוב נגזרים מהשרשרת כולה ולא מהשלב הראשון. ה-Idempotency-Key הוא מה שמונע חיוב כפול כשהרשת נופלת אחרי שהשרת קיבל.
curl -X POST http://localhost:8080/v1/pipeline \ -H "Authorization: Bearer $VECTORFY_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -F file=@sticker.png \ -F 'steps=@steps.json'
[
{
"operation": "cutout"
},
{
"operation": "cutline",
"params": {
"output": "svg"
}
},
{
"operation": "export",
"params": {
"output": "dxf"
}
}
]
התשובה חוזרת מיד עם מזהה והערכה; מבצעים polling על העבודה. בסיום, credits_charged שווה ל-estimated_credits — מה שצוטט הוא מה שחויב. עבודה שנכשלה לא מחויבת כלל.
אל תסתכלו רק על הסטטוס. cut_mm הוא המדבקה במילימטרים ו-physical_mm הוא העמוד; cut_contour_deviation_mm הוא כמה הקו שפורסם סוטה מהחיתוך בפועל — נמדד, לא מונח; clipped_at_edge אומר אם הלהב ירוץ לאורך הקצה; mask_source אומר מאיפה הגיעה המסכה. אלה המספרים שבית דפוס קורא לפני שמעמיס חומר.
{
"id": "job_…",
"status": "succeeded",
"operation": "pipeline",
"engine": "pipeline-runner",
"estimated_credits": "…",
"credits_charged": "…",
"result": {
"url": "https://<your-host>/files/out/…/output.dxf?sig=…",
"bytes": 4695
},
"diagnostics": {
"steps": [
{
"operation": "cutout",
"diagnostics": {
"method": "existing-alpha",
"model_ran": false
}
},
{
"operation": "cutline",
"diagnostics": {
"mask_source": "alpha",
"cut_mm": [
50.3,
36.76
],
"physical_mm": [
59.3,
42.3
],
"cut_contour_deviation_mm": 0.0393,
"clipped_at_edge": false
}
},
{
"operation": "export",
"diagnostics": {
"cut_mm": [
50.29,
36.74
],
"physical_mm": [
59.27,
42.33
]
}
}
]
}
}
{
"cutout": [
"method",
"model_ran"
],
"cutline": [
"mask_source",
"cut_mm",
"physical_mm",
"cut_contour_deviation_mm",
"clipped_at_edge"
],
"export": [
"cut_mm",
"physical_mm"
]
}
הקובץ מצהיר $INSUNITS=4 — מילימטרים — כי R12 בלי יחידות הוא קובץ שתוכנת סימון מניחה שהוא באינצ'ים, ומדבקה של 50 מ"מ נכנסת ב-1,270. פתחו אותו ב-CutStudio, SignCut או FlexiSign ומדדו עם סרגל לפני שחותכים ויניל. בדיקה בקוד אינה מכונה שחותכת.
engine ברמה העליונה הוא שורת הקטלוג שחויבה — לא טענה שמודל רץ. האמת יושבת ב-diagnostics.model_ran: קובץ שהגיע עם מסכה משלו לא מריץ את מודל הפילוח, והתשובה אומרת זאת. כשמודל מאומן כן רץ, diagnostics.model נוקב בשמו וגילוי הרישיון מופיע ב-warnings — משווק-משנה חייב להעביר אותו ללקוח שלו.
הצעה → הערכה ב-202 → חיוב בסיום, ושלושתם אותו מספר. הקרדיטים לא פגים לעולם. מחיר ה-gang sheet המעורב (gangsheet-nest) הוא מחיר-מבוא ועדיין לא נקבע סופית — כל מספר אחר בדף הזה הוא המחיר החי.