Ship Toolkit API
Die gehosteten Endpunkte für Etiketten und PDFs akzeptieren JSON über HTTPS und geben generierte PDF-Dateien direkt zurück. Bewahren Sie API-Schlüssel außerhalb des Quellcodes auf und senden Sie sie als Bearer-Token.
Schnellstart
Basis-URLhttps://shiptoolkit.com
MethodePOST für gehostete Generierungs-APIs
AuthentifizierungAuthorization: Bearer <api-key>
BodyContent-Type: application/json
IdempotenzIdempotency-Key: <unique value>
Erfolgapplication/pdf für Etiketten- und PDF-APIs
Gehostete Etiketten- und PDF-APIs erfordern einen API-Schlüssel. Um Zugriff anzufordern, kontaktieren Sie
shiptoolkit@element-express.com.
Erfolgreiche PDF-Antworten enthalten Content-Disposition, X-Page-Count,
X-Content-SHA256 sowie entweder X-Label-Type oder X-PDF-Operation. Fehlerantworten sind JSON mit einem Feld error .
Python-Helfer
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")
Java-Helfer
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));
}
}
Etiketten-APIs
Diese Endpunkte geben PDF-Etikettendateien zurück und erfordern einen Bearer-API-Schlüssel.
POST /v1/labels/amazon-fnsku
Erstellen Sie ein Amazon-Produktetikett aus einer 10-stelligen FNSKU.
- Pflichtfelder
sku, model, title, madeIn, labelSize
- Optionale Felder
oldSku, productCondition
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/walmart-sku
Erstellen Sie ein Walmart-Fulfillment-Produktetikett aus einer 14-stelligen Walmart-SKU.
- Pflichtfelder
sku, model, title, madeIn, labelSize
- Validierung
sku muss genau 14 Ziffern enthalten.
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
Erstellen Sie ein kompaktes Ausgangskarton-Etikett mit Karton-Barcode und Artikelübersicht.
- Pflichtfelder
boxId, organization, items
- Optionale Felder
dimension, weight, labelSize
Python
payload = {
"boxId": "BOX-1001",
"organization": "Example Seller",
"dimension": "20 x 10 x 8 in",
"weight": "15 lbs",
"labelSize": "2.25x1.25",
"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": "2.25x1.25",
"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
Erstellen Sie Kartonmarkierungs-Etiketten mit einer Seite pro Karton.
- Pflichtfelder
consignee, shipper, destinationAddress, orderNo, cartonTotal, quantity, productDescription
- Optionale Felder
labelSize, barcodeValue, cartonStart
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
Passen Sie Amazon-Transparency-Etiketten-PDFs mit FNSKU, Modell, Datum und Ziel-Etikettengröße an.
- Pflichtfelder
pdfBase64, fnsku, labelSize
- Optionale Felder
model, date
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")
);
PDF-APIs
Diese Endpunkte geben transformierte PDF-Dateien zurück und erfordern einen Bearer-API-Schlüssel.
POST /v1/pdf/resize
Ändern Sie jede Seite auf ein voreingestelltes oder benutzerdefiniertes Seitenformat, ohne Quellinhalte zuzuschneiden.
- Pflichtfelder
pdfBase64
- Optionale Felder
filename, size, orientation, customWidth, customHeight, customUnit
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
Skalieren Sie Seiteninhalte um die Mitte, während die Seitengröße unverändert bleibt.
- Pflichtfelder
pdfBase64
- Optionale Felder
filename, scalePercent von 1 bis 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"));