Skip to main content
If you need to analyze a list of parcels — a portfolio review, a search-results page, a comparison view — POST /v1/batch is more efficient than firing N parallel POST /v1/analyze calls. Each item is still its own report (priced and tracked individually), but you submit them as a single request and get a single batch ID back.

Request shape

Limits

If you need higher per-batch limits (volume contracts), email [email protected].

Per-item fields

Each item accepts the same fields as POST /v1/analyze: Each item can use a different mode — useful when comparing different perspectives on the same parcel.

Top-level fields

delivery_mode controls how completion events arrive — see delivery modes below. webhook_url and metadata at the top level apply to items that don’t supply their own.

Response

Status code: 202 Accepted. Each report_id becomes a normal report you can GET /v1/reports/{id} like any other.

Delivery modes

per_item (default)

You receive a report.completed (or report.failed) webhook for each item as it finishes. Best for UIs that progressively render results.

batch

You receive a single batch.completed webhook after every item has finished (success or failure). The payload includes all reports inline:
Best for batch jobs that process the whole set atomically. You can also combine: set delivery_mode: "batch" AND a per-item webhook_url if you want both.

Billing

Each item is priced as an individual report (currently $3.99). The full batch cost is deducted when the batch is created — not as each item finishes. If your balance is insufficient to cover the entire batch, the API returns 402 insufficient_balance and no items are created. Top up to at least items_count × $3.99, then retry with the same idempotency key. Spend caps apply to the full batch cost, so a single batch can trip a daily or monthly cap that would have allowed individual reports.

Failures within a batch

Some items completing while others fail is normal. Each item’s status is independent — a failed report doesn’t roll back the batch or refund the others. Check each report’s status field after delivery.

When not to use batch

  • Latency-sensitive single requests. A single batch of 1 isn’t allowed (min 2). Use POST /v1/analyze for one-offs.
  • Mixed priorities. Items in a batch run roughly together. If one item is urgent, send it as its own request.
  • Different webhook secrets per item. Webhook secrets are per-customer, not per-request — see webhooks.