Bulk send shipping update orders
API v2 is in public beta: endpoints and fields can change before general availability. See the changelog
/preorders/orders/bulk_send_shipping_updateCosts 2 rate-limit points · Rate limits
Email a shipping update to many preorder customers (up to 1000 order_ids, or apply_to_all with the order list filters).
Matches the dashboard bulk action Send shipping update. Cancelled and refunded orders are skipped and reported failed. Poll status_url for per-order results.
Also searched asbulk send shipping updateemail shipping updatessend shipping updates in bulknotify many customers about shipping
Headers
Idempotency-KeystringA fresh unique key for every write (a new UUID, say); reuse it only to retry that write. Keys are remembered for 1 hour: the same key and the same request within that hour returns the first result, with
Idempotent-Replayed: true, without running again; the same key with a different method, path or body is refused (422idempotency_key_reused); a retry while the first is still running gets 409idempotency_key_in_progress. Keys are per store. Server errors and rate limits are not kept, so their retry runs.
Request body
searchstringExample:stringfinancial_statusstringExample:stringfulfillment_statusstringExample:stringpreorder_fulfillment_statusstringExample:stringcancelled_statusstringExample:stringpayment_collection_statusstringExample:stringoffer_idstringExample:stringshopify_variant_idstringExample:45000000001shopify_product_idstringExample:78000000001vendorsstringExample:stringcustomer_idstringExample:stringfromstringExample:stringtostringExample:stringorder_idsarray of stringsapply_to_allstringExample:stringsubjectstringExample:stringheaderstringExample:stringdescriptionstringExample:string
Errors
Missing or invalid X-Auth-Token.
An earlier request with the same Idempotency-Key is still running. Wait, then resend the same request with the same key.
The request failed validation.
Rate limited: cost-weighted per token (read 1, write 2; 360 points / 60s). Check Retry-After.
Every error has the same shape: see Errors.
curl -X POST "https://app.stoqapp.com/api/v2/external/preorders/orders/bulk_send_shipping_update" \
-H "X-Auth-Token: $STOQ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"search": "string",
"financial_status": "string",
"fulfillment_status": "string",
"preorder_fulfillment_status": "string",
"cancelled_status": "string",
"payment_collection_status": "string",
"offer_id": "string",
"shopify_variant_id": "45000000001",
"shopify_product_id": "78000000001",
"vendors": "string",
"customer_id": "string",
"from": "string",
"to": "string",
"order_ids": [
"string"
],
"apply_to_all": "string",
"subject": "string",
"header": "string",
"description": "string"
}'const res = await fetch("https://app.stoqapp.com/api/v2/external/preorders/orders/bulk_send_shipping_update", {
method: "POST",
headers: {
"X-Auth-Token": process.env.STOQ_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"search": "string",
"financial_status": "string",
"fulfillment_status": "string",
"preorder_fulfillment_status": "string",
"cancelled_status": "string",
"payment_collection_status": "string",
"offer_id": "string",
"shopify_variant_id": "45000000001",
"shopify_product_id": "78000000001",
"vendors": "string",
"customer_id": "string",
"from": "string",
"to": "string",
"order_ids": [
"string"
],
"apply_to_all": "string",
"subject": "string",
"header": "string",
"description": "string"
}),
});
const data = await res.json();import os
import requests
res = requests.post(
"https://app.stoqapp.com/api/v2/external/preorders/orders/bulk_send_shipping_update",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
json={
"search": "string",
"financial_status": "string",
"fulfillment_status": "string",
"preorder_fulfillment_status": "string",
"cancelled_status": "string",
"payment_collection_status": "string",
"offer_id": "string",
"shopify_variant_id": "45000000001",
"shopify_product_id": "78000000001",
"vendors": "string",
"customer_id": "string",
"from": "string",
"to": "string",
"order_ids": [
"string"
],
"apply_to_all": "string",
"subject": "string",
"header": "string",
"description": "string"
},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v2/external/preorders/orders/bulk_send_shipping_update")
req = Net::HTTP::Post.new(uri, "X-Auth-Token" => ENV["STOQ_API_KEY"], "Content-Type" => "application/json")
req.body = {
search: "string",
financial_status: "string",
fulfillment_status: "string",
preorder_fulfillment_status: "string",
cancelled_status: "string",
payment_collection_status: "string",
offer_id: "string",
shopify_variant_id: "45000000001",
shopify_product_id: "78000000001",
vendors: "string",
customer_id: "string",
from: "string",
to: "string",
order_ids: [
"string"
],
apply_to_all: "string",
subject: "string",
header: "string",
description: "string"
}.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body){
"job_id": "job_a1b2c3",
"status_url": "/api/v2/external/jobs/job_a1b2c3"
}{
"errors": [
"Invalid API key"
],
"code": "auth_invalid",
"details": [
{
"code": "auth_invalid",
"message": "Invalid API key",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"A request with this Idempotency-Key is still running"
],
"code": "idempotency_key_in_progress",
"details": [
{
"code": "idempotency_key_in_progress",
"message": "A request with this Idempotency-Key is still running",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"name is required"
],
"code": "validation_failed",
"details": [
{
"code": "validation_failed",
"message": "name is required",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"Rate limit exceeded"
],
"code": "rate_limited",
"details": [
{
"code": "rate_limited",
"message": "Rate limit exceeded",
"path": null,
"value": null,
"expected": null
}
]
}