---
title: "Batch Create"
method: POST
path: "/v1/batches"
---

# Batch Create

`POST /v1/batches`

## Request

- Base URL: `https://api.logimu.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.logimu.com/v1/batches`
- Auth: none declared

Create a named, re-runnable batch (R2). Validated like the estimate:
invalid lines are kept — they come back as `failed` result rows carrying the
reason (R11: never silently dropped) — and duplicates are noted and folded
for billing. kind=search (0539): a list of search TERMS served like /v1/serp
— always live; duplicate terms are answered on their canonical line rather
than fetched twice (a live SERP fetch is a real cost). Every other endpoint
is a kind too (2026-10-12): one key per line (or `pages` for the ranked
lists), the endpoint's query parameters in `params`, each row billed as
the endpoint bills it - see /docs#batch-all.

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Request body

- BatchCreateRequest
  - `name` string, required
  - `kind` string: product (default): a list of ASINs served like /v1/product. search: a list of search TERMS served like /v1/serp — every run is a live Amazon fetch, Amazon marketplaces only. seller / brand / category / keywords (paid plans): seller ids / brand names / category ids / seed terms served like /v1/seller, /v1/brand, /v1/category and /v1/keywords. Every other endpoint (2026-10-12): shopping, warehouse_search, category_search (terms), bestsellers (urls), offers (asins), deals (category_ids: deals department ids or all), seller_products / seller_brands / seller_network (seller_ids), brand_sellers / brand_network (brands), keywords_compare (seeds), categories (category_ids), and the ranked lists brands_top / brands_movers / sellers_top / sellers_movers / categories_top (no list: pages). The endpoint's query parameters go in params. See /docs#batch-all.
  - `country` string, required: us, uk, de, ca, au, fr, it, es, jp, mx, br, walmart (search batches: Amazon only)
  - `mode` string, nullable: Product batches (required there): cache = warehouse only (stale rows skipped, disclosed); live = scrape every row; auto = warehouse when fresh enough, scrape the rest. Walmart: the same three since 2026-10-18 (live = 2 credits a row). Seller batches: the same three (default auto, stored profile when younger than max_age_days). seller_products batches: cache (default) or live. Every other kind is served the way its endpoint serves it - sending a mode there is a 422.
  - `max_age_days` integer
  - `asins` string[], nullable: Product batches: ASINs (10-char) — or numeric item IDs for country=walmart. Every submitted line comes back as a result row.
  - `gtins` string[], nullable: Product batches, instead of asins (2026-10-12): barcodes (UPC / EAN / GTIN / ISBN-13; 8, 12, 13 or 14 digits). Each resolves like /v1/product?gtin= - our observed listings, a book's ISBN-10, the same product on another Amazon marketplace, and in mode auto / live one Amazon search per barcode we cannot place; every row says how (gtin_resolution). Unresolvable barcodes are never billed.
  - `source` string, nullable: Product batches (2026-10-14): tracked = the list is every ASIN this key is tracking on the batch's marketplace, read when the batch is created and at every re-run (POST /v1/track, GET /v1/product?track=true); typically with include ["history_only"]. Amazon only.
  - `terms` string[], nullable: Search batches: the search terms. shopping / warehouse_search: the queries. category_search: category names. Every submitted line comes back as a result row (ok / empty / failed - never silently dropped).
  - `seller_ids` string[], nullable: seller / seller_products / seller_brands / seller_network batches: Amazon seller ids. Every line comes back as a result row (ok / empty / not_tracked / failed).
  - `brands` string[], nullable: brand / brand_sellers / brand_network batches: brand names as Amazon prints them.
  - `category_ids` union[], nullable: category batches: the warehouse's category ids. categories batches: parent ids, or root. deals batches: deals department ids, or all.
    - union
      - string
      - integer
  - `seeds` string[], nullable: keywords / keywords_compare batches: seed terms or prefixes (3-120 characters), one per line.
  - `pages` integer, nullable: Search batches: pages per term (1-3, default 1). Positions stay continuous across pages; billed per page ACTUALLY fetched. Ranked-list batches: how many pages of 25 rows to take (1-40, default 1) - one result row per page.
  - `urls` string[], nullable: Best Sellers batches: Amazon Best Sellers URLs, one per line, all on the batch's marketplace.
  - `params` object, nullable: Endpoint batches: the query parameters of the endpoint the batch runs, fixed for every row (validated like the endpoint's own; unknown names are a 422). See /docs#batch-all.
  - `webhook_url` string, nullable: Optional: POSTed on run completion/pause, HMAC-SHA256 signed (X-Logimu-Signature: sha256=<hex>). The signing secret is returned ONCE in the create response — store it.
  - `include` string[], nullable: Optional extras per JSONL result row. Seller / brand / category batches: ["history"] attaches the endpoint's history block (+0.5 per row when it comes back). Product batches: ["reviews"] attaches the observed featured-review set (≤50 per product, free); ["used"] adds the used / refurbished / open-box / collectible offers to current_sellers (and the per-condition series with offer_history; free, 2026-09-28; the CSV lowest_offer_price stays the lowest NEW offer); ["offer_history"] attaches the buy-box timeline + per-seller price series and ["bsr_history"] the per-category BSR rank history (Amazon only, included in the row price - no extra credits); ["history_only"] returns only the stored series per row at 0.05 credit (Amazon only, stored data, any age; the batch runs as cache). Search batches: ["blocks"] attaches the paid-placement blocks (ad_blocks/video_blocks/brand_stores — page-1-only by nature, free). Off by default; CSV columns unaffected.
  - `history_sellers` integer: With include offer_history: sellers carrying a point series per row (default 10, max 50); every observed seller is listed regardless.
  - `history_points` integer: With include offer_history: points per series - the most recent observed days (default 500, max 20,000). Wider series are included too - no extra credits.

## Response `201`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/logimu/apis/logimu-api.md) · [All operations](https://skmtc.dev/logimu/apis/logimu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/logimu/apis/logimu-api/revisions/3d3f90ad2335?raw)
