
A customised FastEditor product becomes a print-ready file in four steps: Create Smartlink sends the shopper to the editor, the Add to Cart callback returns the design and its projectKey, Sale Notification reports the order, and File Delivery posts the print files to your callback URL. Persist the projectKey and return a 201.
Most FastEditor integration questions come down to one thing: where does my print file come from, and how do I know which order it belongs to? The answer is a four-step handshake between your backend and FastEditor. Once you can picture the whole loop, the individual API calls make a lot more sense.
Start by generating a deeplink with the Create Smartlink endpoint (POST /api/smartlink). You tell FastEditor which product to open (via supplier + productAttributes, supplier + virtualSku, or a projectId to reopen a project) and pass optional context like country, currency, language, quantity, and your own userId.
You can also send a customAttributes object here — it comes back to you in the Add to Cart callback, which makes it useful for carrying correlation data through the flow. The response is a single URL; redirect the shopper to it.
When the shopper finishes designing, FastEditor forwards them to your cart URL and appends a query parameter, fe_cart_url. That parameter is itself a URL — make a GET request to it from your backend and you'll receive a JSON array of items to add to the cart.
The fields you'll lean on:
projectKey — FastEditor's unique identifier for the finished copy of the project. This is the value you must send back in the Sale Notification.projectId — the project identifier you can later feed to Create Smartlink to reopen the design.sku, quantity, price, currency, country, language, imageUrl, and any customAttributes you sent in Step 1.output — an array with one entry per used print position, holding preview URLs, print method, print area and artwork dimensions, PMS colours, and the customer's original uploads.Security gotcha #1: validate that the domain of the receivedfe_cart_urlmatches the expected value (*.fasteditor.com) before you call it. Don't blindly fetch a URL handed to you in a query string.
After checkout, call the Sale Notification endpoint (POST /webhook/notifyorder) to let FastEditor know print files should be generated. The body is an order with one or more orderItems and a callbackUrl.
curl -X POST "https://api.editor.staging.fasteditor.com/webhook/notifyorder" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"orderId": "order_123",
"orderItems": [
{
"projectKey": "916",
"orderItemId": "item_6750898",
"quantity": "50",
"totalSaleValue": "59.99"
}
],
"callbackUrl": "https://printfiles.mystore.com"
}'Each order item requires three things: the projectKey from the Add to Cart callback, your own orderItemId, and the quantity. The top-level callbackUrl is required too — it's where the finished print files are delivered next. You can also include billingInfo / shippingInfo, which matter when FastEditor submits orders to the supplier directly.
This step — File Delivery — is a request to you. FastEditor generates the print files and POSTs them to the callbackUrl you supplied. Implement a handler to receive it.
The payload includes the projectKey (to match back to your order item), a files array of download URLs, and an output array — one object per page or section, each with:
name — identifies the page/section (e.g. front, back, bookCover, innerPages)printFiles — URLs to the generated print filesproofUrls — print proof files, provided for logo productsprintMethod — the print method used for that sectionFor logo products you may also receive uploads (the customer's original files, so you can check vectorization results) and the callbackUrl echoed back.
Security gotcha #2: FastEditor adds the X-Api-Key header to the File Delivery request so you can verify the sender. Check it. Your account manager shares this value at the start of the integration.Response gotcha: FastEditor checks for a201response status code from your endpoint to confirm the data was received and saved. Return201— not200— on success, or the delivery may be treated as failed.
Create Smartlink (POST /api/smartlink)
| -> redirect shopper to returned URL
v
Add to Cart (GET the fe_cart_url)
| -> receive items + projectKey (persist projectKey)
v
Sale Notification (POST /webhook/notifyorder)
| -> send projectKey + orderItemId + quantity + callbackUrl
v
File Delivery (FastEditor POSTs to your callbackUrl)
| -> verify X-Api-Key, save files, return 201
v
Print-ready files in handprojectKey the moment you receive it in the Add to Cart callback — it's required for Sale Notification.fe_cart_url domain (*.fasteditor.com) before fetching it.X-Api-Key header on inbound File Delivery requests.201 from your File Delivery handler on success.X-Api-Key run from your backend.After the shopper customises a product, you call the Sale Notification endpoint (POST /webhook/notifyorder) with the order's projectKey. FastEditor then generates the print files and posts them to the callbackUrl you provided, via the File Delivery webhook.
projectKey is FastEditor's unique identifier for a finished design. You receive it in the Add to Cart callback and must send it back in the Sale Notification so FastEditor can generate and deliver the correct print files for that order item.
Return 201. FastEditor checks for a 201 response from your endpoint to confirm the print-file data was received and saved correctly.