API ya Ship Toolkit

Endpointi za lebo na PDF zilizohifadhiwa hukubali JSON kupitia HTTPS na hurudisha moja kwa moja faili za PDF zilizozalishwa. Weka funguo za API nje ya msimbo chanzo na uzitume kama tokeni za bearer.

Kuanza haraka

URL msingihttps://shiptoolkit.com
MbinuPOST kwa API za uzalishaji zilizohifadhiwa
UthibitishajiAuthorization: Bearer <api-key>
MwiliContent-Type: application/json
IdempotensiIdempotency-Key: <unique value>
Mafanikioapplication/pdf

API za lebo na PDF zilizohifadhiwa zinahitaji ufunguo wa API. Ili kuomba ufikiaji, wasiliana na shiptoolkit@element-express.com.

Majibu ya PDF yaliyofanikiwa yanajumuisha Content-Disposition, X-Page-Count, X-Content-SHA256, na pia X-Label-Type au X-PDF-Operation. Majibu ya hitilafu ni JSON yenye sehemu error .

{
  "standardLabelSize": [
    "2.00x1.00",
    "2.25x1.25",
    "2.50x1.00",
    "3.00x1.00",
    "3.00x1.50",
    "3.00x2.00",
    "4.00x2.00",
    "50x30mm",
    "60x30mm",
    "60x40mm"
  ],
  "cartonMarkLabelSize": ["6x4", "4x4", "4x3", "4x2"]
}

Msaidizi wa Python

import base64
import json
import os
import uuid
import urllib.request
from pathlib import Path

BASE_URL = "https://shiptoolkit.com"
API_KEY = os.environ["SHIPTOOLKIT_API_KEY"]

def post_pdf(path, payload, output_file):
    request = urllib.request.Request(
        BASE_URL + path,
        data=json.dumps(payload).encode("utf-8"),
        method="POST",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json",
            "Idempotency-Key": str(uuid.uuid4()),
            "User-Agent": "ShipToolkit-API-Example/1.0",
        },
    )
    with urllib.request.urlopen(request, timeout=60) as response:
        pdf = response.read()
        if not pdf.startswith(b"%PDF-"):
            raise RuntimeError("Ship Toolkit returned a non-PDF response.")
    Path(output_file).write_bytes(pdf)

def pdf_base64(filename):
    return base64.b64encode(Path(filename).read_bytes()).decode("ascii")

Msaidizi wa Java

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;
import java.util.UUID;

class ShipToolkitApi {
    static final String BASE_URL = "https://shiptoolkit.com";
    static final String API_KEY = System.getenv("SHIPTOOLKIT_API_KEY");
    static final HttpClient CLIENT = HttpClient.newHttpClient();

    static void postPdf(String path, String json, Path outputFile)
            throws IOException, InterruptedException {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(BASE_URL + path))
            .header("Authorization", "Bearer " + API_KEY)
            .header("Content-Type", "application/json")
            .header("Idempotency-Key", UUID.randomUUID().toString())
            .header("User-Agent", "ShipToolkit-API-Example/1.0")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();
        HttpResponse<byte[]> response = CLIENT.send(
            request,
            HttpResponse.BodyHandlers.ofByteArray()
        );
        if (response.statusCode() != 200) {
            throw new IOException("Ship Toolkit API failed: " + response.statusCode());
        }
        Files.write(outputFile, response.body());
    }

    static String pdfBase64(Path file) throws IOException {
        return Base64.getEncoder().encodeToString(Files.readAllBytes(file));
    }
}

API za lebo

Endpointi hizi hurudisha faili za lebo za PDF na zinahitaji ufunguo wa API wa bearer.

POST /v1/labels/amazon-fnsku

Unda lebo ya bidhaa ya Amazon kutoka FNSKU ya herufi 10.

SehemuAinaInahitajikaChaguo-msingiMasharti
skustringtrue-pattern: ^[A-Z0-9]{10}$
modelstringtrue-maxLength: 240
titlestringtrue-maxLength: 500
madeInstringtrue-maxLength: 80
labelSizeenumtrue-standardLabelSize
oldSkustringfalse""maxLength: 128
productConditionenumfalse"other"["new", "other"]

Python

payload = {
    "sku": "X001ABC123",
    "model": "ABC-123",
    "title": "Sample product",
    "madeIn": "China",
    "productCondition": "new",
    "labelSize": "2.25x1.25",
    "oldSku": "OLD-123",
}
post_pdf("/v1/labels/amazon-fnsku", payload, "amazon-fnsku.pdf")

Java

String json = """
{
  "sku": "X001ABC123",
  "model": "ABC-123",
  "title": "Sample product",
  "madeIn": "China",
  "productCondition": "new",
  "labelSize": "2.25x1.25",
  "oldSku": "OLD-123"
}
""";
ShipToolkitApi.postPdf(
    "/v1/labels/amazon-fnsku",
    json,
    Path.of("amazon-fnsku.pdf")
);

POST /v1/labels/amazon-fba-ups

Add text overlays to Amazon FBA and UPS labels, then return 4 x 6 inch output pages with optional scaling and duplicate copies.

SehemuAinaInahitajikaChaguo-msingiMasharti
pdfBase64stringtrue-maxBytes: 7MB
filenamestringfalse"amazon-fba-ups-labels.pdf"maxLength: 160
fbaTextstringfalse""maxLength: 500
upsTextstringfalse""maxLength: 500
scalePercentnumberfalse95min: 1, max: 100
twoFbaCopiesbooleanfalsefalse-
twoUpsCopiesbooleanfalsefalserequires twoFbaCopies

Python

payload = {
    "pdfBase64": pdf_base64("fba-ups-source.pdf"),
    "filename": "fba-ups-source.pdf",
    "fbaText": "BOX 1",
    "upsText": "CARTON A",
    "scalePercent": 95,
    "twoFbaCopies": False,
    "twoUpsCopies": False,
}
post_pdf("/v1/labels/amazon-fba-ups", payload, "fba-ups-labels.pdf")

Java

String source = ShipToolkitApi.pdfBase64(Path.of("fba-ups-source.pdf"));
String json = """
{
  "pdfBase64": "%s",
  "filename": "fba-ups-source.pdf",
  "fbaText": "BOX 1",
  "upsText": "CARTON A",
  "scalePercent": 95
}
""".formatted(source);
ShipToolkitApi.postPdf(
    "/v1/labels/amazon-fba-ups",
    json,
    Path.of("fba-ups-labels.pdf")
);

Source pages may be native 4 x 6, 4.25 x 6, or US Letter pages with two labels. US Letter pages use the built-in two-label crop layout.

POST /v1/labels/walmart-sku

Unda lebo ya bidhaa ya Walmart fulfillment kutoka SKU ya Walmart yenye tarakimu 14.

SehemuAinaInahitajikaChaguo-msingiMasharti
skustringtrue-pattern: ^\d{14}$
modelstringtrue-maxLength: 240
titlestringtrue-maxLength: 500
madeInstringtrue-maxLength: 80
labelSizeenumtrue-standardLabelSize
productConditionenumfalse"other"["new", "other"]

Python

payload = {
    "sku": "12345678901234",
    "model": "ShipToolkit-001",
    "title": "Walmart fulfillment label",
    "madeIn": "China",
    "productCondition": "new",
    "labelSize": "2.25x1.25",
}
post_pdf("/v1/labels/walmart-sku", payload, "walmart-sku.pdf")

Java

String json = """
{
  "sku": "12345678901234",
  "model": "ShipToolkit-001",
  "title": "Walmart fulfillment label",
  "madeIn": "China",
  "productCondition": "new",
  "labelSize": "2.25x1.25"
}
""";
ShipToolkitApi.postPdf(
    "/v1/labels/walmart-sku",
    json,
    Path.of("walmart-sku.pdf")
);

POST /v1/labels/outbound-box

Unda lebo fupi ya boksi linalotoka yenye msimbo pau wa boksi na muhtasari wa bidhaa.

SehemuAinaInahitajikaChaguo-msingiMasharti
boxIdstringtrue-maxLength: 80
organizationstringtrue-maxLength: 160
itemsarray<object>true-maxItems: 200
items[].skustringfalseitems[].model maxLength: 128
items[].quantitystring|numberfalseitems[].qtymaxLength: 20
dimensionstringfalse""maxLength: 120
weightstringfalse""maxLength: 120
labelSizeenumfalse"2.25x1.25"standardLabelSize
createBarcodebooleanfalsetrue-
barcodeValuestringfalseboxIdmaxLength: 80

Python

payload = {
    "boxId": "BOX-1001",
    "organization": "Example Seller",
    "dimension": "20 x 10 x 8 in",
    "weight": "15 lbs",
    "labelSize": "3.00x1.50",
    "createBarcode": true,
    "items": [
        {"sku": "X001ABC123", "quantity": 4},
        {"sku": "X001ABC456", "quantity": 2},
    ],
}
post_pdf("/v1/labels/outbound-box", payload, "outbound-box.pdf")

Java

String json = """
{
  "boxId": "BOX-1001",
  "organization": "Example Seller",
  "dimension": "20 x 10 x 8 in",
  "weight": "15 lbs",
  "labelSize": "3.00x1.50",
  "createBarcode": true,
  "items": [
    {"sku": "X001ABC123", "quantity": 4},
    {"sku": "X001ABC456", "quantity": 2}
  ]
}
""";
ShipToolkitApi.postPdf(
    "/v1/labels/outbound-box",
    json,
    Path.of("outbound-box.pdf")
);

POST /v1/labels/carton-mark

Unda lebo za alama za katoni zenye ukurasa mmoja kwa kila katoni.

SehemuAinaInahitajikaChaguo-msingiMasharti
consigneestringtrue-maxLength: 120
shipperstringtrue-maxLength: 120
destinationAddressstringtrue-maxLength: 500
orderNostringtrue-maxLength: 80
cartonTotalintegertrue-min: 1
quantitystring|numbertrue-maxLength: 80
productDescriptionstringtrue-maxLength: 500
labelSizeenumfalse"6x4"cartonMarkLabelSize
barcodeValuestringfalseorderNomaxLength: 120
cartonStartintegerfalse1min: 1

Python

payload = {
    "consignee": "Receiving Team",
    "shipper": "Example Seller",
    "destinationAddress": "123 Warehouse Way, Newark, DE 19713",
    "orderNo": "PO-20260717-001",
    "cartonTotal": 3,
    "quantity": "50 PCS",
    "productDescription": "Portable night light",
    "labelSize": "6x4",
}
post_pdf("/v1/labels/carton-mark", payload, "carton-mark.pdf")

Java

String json = """
{
  "consignee": "Receiving Team",
  "shipper": "Example Seller",
  "destinationAddress": "123 Warehouse Way, Newark, DE 19713",
  "orderNo": "PO-20260717-001",
  "cartonTotal": 3,
  "quantity": "50 PCS",
  "productDescription": "Portable night light",
  "labelSize": "6x4"
}
""";
ShipToolkitApi.postPdf(
    "/v1/labels/carton-mark",
    json,
    Path.of("carton-mark.pdf")
);

POST /v1/labels/transparency

Geuza PDF za lebo za Amazon Transparency ukitumia FNSKU, modeli, tarehe, na ukubwa lengwa wa lebo.

SehemuAinaInahitajikaChaguo-msingiMasharti
pdfBase64stringtrue-maxBytes: 7MB
fnskustringtrue-maxLength: 80
labelSizeenumtrue-standardLabelSize
modelstringfalse""maxLength: 240
datestringfalsenowmaxLength: 40

Python

payload = {
    "pdfBase64": pdf_base64("transparency-source.pdf"),
    "fnsku": "X001ABC123",
    "model": "MODEL-1",
    "date": "2026-07-17",
    "labelSize": "2.25x1.25",
}
post_pdf("/v1/labels/transparency", payload, "transparency.pdf")

Java

String source = ShipToolkitApi.pdfBase64(Path.of("transparency-source.pdf"));
String json = """
{
  "pdfBase64": "%s",
  "fnsku": "X001ABC123",
  "model": "MODEL-1",
  "date": "2026-07-17",
  "labelSize": "2.25x1.25"
}
""".formatted(source);
ShipToolkitApi.postPdf(
    "/v1/labels/transparency",
    json,
    Path.of("transparency.pdf")
);

API za PDF

Endpointi hizi hurudisha faili za PDF zilizobadilishwa na zinahitaji ufunguo wa API wa bearer.

POST /v1/pdf/resize

Badilisha ukubwa wa kila ukurasa kwa ukubwa uliowekwa au maalum bila kukata maudhui ya chanzo.

SehemuAinaInahitajikaChaguo-msingiMasharti
pdfBase64stringtrue-maxBytes: 7MB
filenamestringfalse"document.pdf"maxLength: 160
sizeenumfalse"letter""letter"|"legal"|"a4"|"4x6"|"custom"
orientationenumfalse"match""match"|"portrait"|"landscape"
customWidthnumberfalse-required when size="custom"
customHeightnumberfalse-required when size="custom"
customUnitenumfalse"in""in"|"mm"

Python

payload = {
    "pdfBase64": pdf_base64("source.pdf"),
    "filename": "source.pdf",
    "size": "custom",
    "customWidth": 2.25,
    "customHeight": 1.25,
    "customUnit": "in",
}
post_pdf("/v1/pdf/resize", payload, "resized.pdf")

Java

String source = ShipToolkitApi.pdfBase64(Path.of("source.pdf"));
String json = """
{
  "pdfBase64": "%s",
  "filename": "source.pdf",
  "size": "custom",
  "customWidth": 2.25,
  "customHeight": 1.25,
  "customUnit": "in"
}
""".formatted(source);
ShipToolkitApi.postPdf("/v1/pdf/resize", json, Path.of("resized.pdf"));

POST /v1/pdf/scale

Ongeza au punguza maudhui ya ukurasa kuzunguka katikati huku ukubwa wa kila ukurasa ukibaki vilevile.

SehemuAinaInahitajikaChaguo-msingiMasharti
pdfBase64stringtrue-maxBytes: 7MB
filenamestringfalse"document.pdf"maxLength: 160
scalePercentnumberfalse100min: 1, max: 400

Python

payload = {
    "pdfBase64": pdf_base64("source.pdf"),
    "filename": "source.pdf",
    "scalePercent": 82,
}
post_pdf("/v1/pdf/scale", payload, "scaled.pdf")

Java

String source = ShipToolkitApi.pdfBase64(Path.of("source.pdf"));
String json = """
{
  "pdfBase64": "%s",
  "filename": "source.pdf",
  "scalePercent": 82
}
""".formatted(source);
ShipToolkitApi.postPdf("/v1/pdf/scale", json, Path.of("scaled.pdf"));