מקובץ למדבקה חתוכה,
בקריאה אחת.

המדריך הזה בונה את השרשרת שבית דפוס באמת קונה: הסרת רקע, קו חיתוך במילימטרים וייצוא DXF — הגשה אחת, ציטוט אחד, חיוב אחד.

  1. צור מפתח

    מפתח sk_test_ חינמי ומוגבל ל-1 מגה-פיקסל, ולא מחייב. מפתח sk_live_ מחייב קרדיטים. שניהם נוצרים בלוח הבקרה.

    # Keep it in an environment variable, never in the source.
    export VECTORFY_KEY=sk_test_…
  2. שלח את השרשרת

    כל שלב עובר דרך רישום המנועים, לא רק הראשון — וההערכה, התקרה והחיוב נגזרים מהשרשרת כולה.

    curl -X POST http://localhost:8080/v1/pipeline \
      -H "Authorization: Bearer $VECTORFY_KEY" \
      -H "Idempotency-Key: $(uuidgen)" \
      -F file=@artwork.png \
      -F 'steps=[{"operation":"cutout"},
                  {"operation":"cutline","params":{"output":"svg","bleed_mm":2}},
                  {"operation":"export","params":{"output":"dxf"}}]'
    Idempotency-Key אינו רשות. רשת שנופלת אחרי שהשרת קיבל את הבקשה היא בדיוק המקרה שבו לקוח משלם פעמיים — עם המפתח הזה השליחה החוזרת מחזירה את אותה עבודה במקום להריץ אותה שוב.
  3. קבל 202, לא תוצאה

    התשובה חוזרת מיד עם מזהה והערכת מחיר. עבודה אמיתית אורכת יותר מ-timeout ברירת המחדל של רוב הלקוחות, ולכן היא לא מוחזרת בתוך הבקשה.

    {
      "id": "job_29ab70d8e6d0f14f",
      "status": "queued",
      "estimated_credits": 4.25,
      "credits_charged": 0
    }
  4. משוך עד שהיא מסתיימת

    או הירשם ל-webhook וקבל את אותו גוף בדחיפה, חתום ב-HMAC. עבודה שנכשלה לא מחויבת וההחזקה משתחררת במלואה.

    curl http://localhost:8080/v1/jobs/job_29ab70d8e6d0f14f \
      -H "Authorization: Bearer $VECTORFY_KEY"
    
    # A chain reports PER STEP. Copied from a real run of the call above.
    { "status": "succeeded",
      "credits_charged": 4.25,
      "duration_ms": 436,
      "result": { "url": "https://…/out.dxf" },
      "diagnostics": { "steps": [
        { "step": 1, "operation": "cutout", "engine": "grabcut",
          "diagnostics": { "confidence": 1.0, "subject_fraction": 0.609 } },
        { "step": 2, "operation": "cutline",
          "diagnostics": { "cut_mm": [78.77, 78.75], "cut_paths": 1,
                           "bleed_mm": 2.0, "dpi_source": "chain" } },
        { "step": 3, "operation": "export",
          "diagnostics": { "layer": "CutContour", "cut_mm": [78.74, 78.74] } } ] } }
    diagnostics אינם קישוט. cut_mm הוא הגודל שהפלוטר יחתוך בפועל במילימטרים — מדדו אותו מול השרטוט לפני ריצת ייצור.

כשמשהו נכשל

כל שגיאה היא RFC 9457 עם קוד יציב, הסבר, ושדה retryable שאומר אם יש טעם לנסות שוב. לכל קוד יש דף משלו.

{ "type": "https://…/errors/output_exceeds_plan_cap",
  "code": "output_exceeds_plan_cap",
  "status": 400,
  "retryable": false,
  "detail": "61.4 MP exceeds the 32 MP cap…" }

מכאן