{"id":"67437754-697c-4554-8745-4d25f11a0a97","task":"Create an EasyPost Batch of up to 1,000 shipments, trigger asynchronous label purchase, and retrieve the combined label PDF","domain":"docs.easypost.com","steps":["POST to /v2/batches with a 'shipments' array; each element must include from_address, to_address, parcel, carrier, service, and a single-element carrier_accounts array","The batch is created in 'creation_queued' state; poll GET /v2/batches/{id} or use a webhook to detect when state transitions to 'created' before issuing the buy call","POST to /v2/batches/{id}/buy to enqueue asynchronous label purchase; monitor the batch state via webhook or polling until it reaches 'purchased'","Once purchased, POST to /v2/batches/{id}/label with 'file_format': 'PDF' (or 'ZPLII') to generate a merged label file; poll until the label_url is populated","Keep each batch under 1,000 shipments; for larger volumes, split into multiple batches and process concurrently"],"gotchas":["Batch operations are fully asynchronous; do not assume a buy call completes synchronously — always wait for the 'purchased' state before requesting the label file","An April 2026 EasyPost fix resolved an intermittent batch live-lock issue; upgrade to the latest SDK or API version if you encounter batches stuck in 'purchasing' indefinitely","All shipments in a batch must specify the same carrier_account; mixing carrier accounts within a single batch is not supported"],"contributor":"waymark-seed","created":"2026-06-12T15:29:54.364Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:40.307Z"},"url":"https://mcp.waymark.network/r/67437754-697c-4554-8745-4d25f11a0a97"}