> ## Documentation Index
> Fetch the complete documentation index at: https://www.zinc.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Bulk Upload

> Place many orders at once from a CSV upload

Create a bulk-upload batch from parsed CSV rows. The batch is accepted
immediately and its rows are placed as individual orders asynchronously.

<Info>
  Validate the upload first with
  [Validate Bulk Upload](/v2/api-reference/orders/validate-bulk-upload) — it
  reports per-row errors and estimated spend without placing anything.
</Info>

## Request

The request body is identical to the validate endpoint:

* **filename** *(optional)* — Original uploaded filename, for display.
* **rows** — Array of objects, one per CSV row, mapping column header to cell value.

Unrecognized columns are preserved as `passthrough` data on each row and
echoed back in the [results CSV](/v2/api-reference/orders/download-bulk-results).

## Response

Returns the new batch with `status: "pending"`. Track progress by polling
[Get Bulk Upload](/v2/api-reference/orders/get-bulk-upload):

* **id** — Batch UUID.
* **status** — `pending` → `processing` → `completed` (or `failed`).
* **row\_count** / **placed\_count** / **failed\_count** — Row tallies, updated as
  rows are processed.

Each successfully placed row becomes a regular order — it appears in
[List Orders](/v2/api-reference/orders/list-orders) and emits the usual
[webhook events](/v2/api-reference/introduction/webhooks).


## OpenAPI

````yaml versions/latest.json POST /orders/bulk
openapi: 3.1.0
info:
  title: Zinc
  summary: >-
    Zinc lets you search, buy, and return items from top online retailers with a
    single API.
  description: >-
    Search, buy, and return items from top online retailers with a single API.
    Supports AI agent ordering via MPP (HTTP 402) — no account required.
    Supported retailers include 1-800-Flowers, Ace Hardware, Amazon, Amazon DE,
    Best Buy, Lowe's, Partstown, Pokémon Center, Target, The Home Depot,
    Walmart, Wayfair, and 2 more. Ships to the US and 1 other country (DE).
  version: '2026-07-10'
  x-logo:
    url: https://mintlify.s3.us-west-1.amazonaws.com/zinc/logo/light.png
  contact:
    name: Zinc API Support
    email: support@zinc.com
    url: https://zinc.com/docs
  x-guidance: >-
    Zinc lets AI agents buy products from online retailers via a single API. Use
    POST /agent/orders to place an order — no Zinc account needed, payment is
    handled via MPP (HTTP 402 flow). Provide a product URL from a supported
    retailer, a shipping address, and max_price in cents. The API charges
    max_price + $1 API fee upfront and refunds the difference on completion. To
    find products first, the /agent/* data endpoints (search, products/search,
    products/offers, products/details) are MPP-paid at $0.01 per call;
    /agent/search returns orderable URLs to feed straight into /agent/orders.
    GET /retailers lists supported retailers for free (no payment or account).
    Authenticated equivalents (orders, products, managed-accounts) require a
    Bearer token (API key prefixed zn_). Docs: https://zinc.com/docs Supported
    retailers include 1-800-Flowers, Ace Hardware, Amazon, Amazon DE, Best Buy,
    Lowe's, Partstown, Pokémon Center, Target, The Home Depot, Walmart, Wayfair,
    and 2 more, shipping to the US and 1 other country (DE).
  x-supported-retailers:
    - 1-800-Flowers
    - Ace Hardware
    - Amazon
    - Amazon DE
    - Best Buy
    - Lowe's
    - Partstown
    - Pokémon Center
    - Target
    - The Home Depot
    - Walmart
    - Wayfair
    - Zinc
    - eBay
  x-supported-countries:
    - US
    - DE
servers:
  - url: https://api.zinc.com
    description: Production
security:
  - BearerAuth: []
paths:
  /orders/bulk:
    post:
      tags:
        - orders
      summary: Create Bulk Upload
      description: Create a bulk-upload batch and place its rows asynchronously.
      operationId: create_bulk_upload_orders_bulk_post
      parameters:
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUploadRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkBatchResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    BulkUploadRequest:
      properties:
        filename:
          anyOf:
            - type: string
            - type: 'null'
          title: Filename
          description: Original uploaded filename, for display.
        rows:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Rows
          description: Parsed CSV rows, each a mapping of column header to cell value.
      type: object
      title: BulkUploadRequest
      description: Raw CSV rows (header -> cell) posted from the dashboard.
    BulkBatchResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        filename:
          anyOf:
            - type: string
            - type: 'null'
          title: Filename
        status:
          $ref: '#/components/schemas/BulkBatchStatus'
        row_count:
          type: integer
          title: Row Count
        placed_count:
          type: integer
          title: Placed Count
        failed_count:
          type: integer
          title: Failed Count
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        rows:
          items:
            $ref: '#/components/schemas/BulkRowResult'
          type: array
          title: Rows
      type: object
      required:
        - id
        - status
        - row_count
        - placed_count
        - failed_count
        - created_at
        - updated_at
      title: BulkBatchResponse
      description: A bulk-upload batch and (on the detail endpoint) its per-row results.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    BulkBatchStatus:
      type: string
      enum:
        - pending
        - processing
        - completed
        - failed
      title: BulkBatchStatus
      description: Lifecycle of a CSV bulk-upload batch.
    BulkRowResult:
      properties:
        index:
          type: integer
          title: Index
        status:
          type: string
          title: Status
          description: placed | failed | pending
        order_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Order Id
        order_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Order Status
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
        recipient:
          anyOf:
            - type: string
            - type: 'null'
          title: Recipient
        product_urls:
          items:
            type: string
          type: array
          title: Product Urls
        passthrough:
          additionalProperties: true
          type: object
          title: Passthrough
      type: object
      required:
        - index
        - status
      title: BulkRowResult
      description: Per-row outcome once a batch has been (or is being) processed.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    BearerAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Zinc API key (Bearer zn_...)

````