Skip to main content
POST
Validate Bulk Upload
Dry-run a CSV upload: every row is validated and the estimated spend is calculated, but no orders are placed. Use this to show a confirmation preview before calling Create Bulk Upload.

Request

Send the parsed CSV as JSON:
  • filename (optional) — Original uploaded filename, for display.
  • rows — Array of objects, one per CSV row, mapping column header to cell value.
Columns that don’t map to a known order field are echoed back as passthrough data on each row and included in the results CSV.

Response

The summary tells you whether the batch is safe to place:
  • total_rows / valid_rows / invalid_rows — Row counts.
  • estimated_total_cents — Estimated spend across all valid rows.
  • wallet_balance_cents — Your current wallet balance.
  • sufficient_funds — Whether your balance covers the estimate.
  • rows — Per-row validation results, each with ok and any errors.
Surface rows[].errors to the user so they can fix the CSV and re-validate. Only call Create Bulk Upload once invalid_rows is 0 and sufficient_funds is true.

Authorizations

Authorization
string
header
required

Zinc API key (Bearer zn_...)

Headers

authorization
string | null

Body

application/json

Raw CSV rows (header -> cell) posted from the dashboard.

filename
string | null

Original uploaded filename, for display.

rows
Rows · object[]

Parsed CSV rows, each a mapping of column header to cell value.

Response

Successful Response

Dry-run summary returned before any orders are placed.

total_rows
integer
required
valid_rows
integer
required
invalid_rows
integer
required
estimated_total_cents
integer
required
wallet_balance_cents
integer
required
sufficient_funds
boolean
required
filename
string | null
rows
BulkRowValidation · object[]