Skip to main content
POST
/
orders
/
bulk
Create Bulk Upload
curl --request POST \
  --url https://api.zinc.com/orders/bulk \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "filename": "<string>",
  "rows": [
    {}
  ]
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "row_count": 123,
  "placed_count": 123,
  "failed_count": 123,
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "filename": "<string>",
  "rows": [
    {
      "index": 123,
      "status": "<string>",
      "order_id": "<string>",
      "order_status": "<string>",
      "error": "<string>",
      "recipient": "<string>",
      "product_urls": [
        "<string>"
      ],
      "passthrough": {}
    }
  ]
}
Create a bulk-upload batch from parsed CSV rows. The batch is accepted immediately and its rows are placed as individual orders asynchronously.
Validate the upload first with Validate Bulk Upload — it reports per-row errors and estimated spend without placing anything.

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.

Response

Returns the new batch with status: "pending". Track progress by polling Get Bulk Upload:
  • id — Batch UUID.
  • statuspendingprocessingcompleted (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 and emits the usual webhook events.

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

A bulk-upload batch and (on the detail endpoint) its per-row results.

id
string<uuid>
required
status
enum<string>
required

Lifecycle of a CSV bulk-upload batch.

Available options:
pending,
processing,
completed,
failed
row_count
integer
required
placed_count
integer
required
failed_count
integer
required
created_at
string<date-time>
required
updated_at
string<date-time>
required
filename
string | null
rows
BulkRowResult · object[]