Skip to content
Stashtab Vault API
Esc
navigateopen⌘Jpreview

Submit an expected manifest (CSV upload)

File-upload alternative to POST /manifests for teams that live in spreadsheets. Expected columns: external_ref, description, sku, grader, cert_number, quantity. Product rows provide a catalog sku; slab rows provide grader and cert_number; a row never mixes both forms. One row per expected item. Valid rows are accepted into one manifest and invalid rows are returned independently.

POST/manifests/csv
Authorization
X-API-KeyAPI key · headerrequired
API key in format `sk_*`. Scoped to your partner account; server-side use only.
Header parameters
Idempotency-Keystringrequired
Unique key for safe retries. Reusing a key on the same endpoint returns the original result.
max length 255
Request body
requiredmultipart/form-data
filestringrequired
CSV file, UTF-8, header row required.
referencestringrequired
Your reference for this purchase batch.
sourceManifestSource
Where this purchase batch came from.
Allowed:card_showmarketplacedistributorother
Responses
201Rows processed independently into one manifest.
manifestManifestrequired
Show properties
idstring<uuid>required
referencestringrequired
sourceManifestSource
Where this purchase batch came from.
Allowed:card_showmarketplacedistributorother
statusManifestStatusrequired
`submitted` — open, nothing matched yet; `receiving` — items are arriving and matching; `reconciled` — the reconciliation report has been finalized.
Allowed:submittedreceivingreconciled
expected_arrival_startstring<date> | null
expected_arrival_endstring<date> | null
line_countintegerrequired
created_atstring<date-time>required
createdManifestLine[]required
Show properties
Array of ManifestLine
idstring<uuid>required
external_refstring | null
descriptionstringrequired
graderstring | null
cert_numberstring | null
quantityintegerrequired
statusstringrequired
`expected` — not yet arrived; `matched` — arrived and verified; `missing` — reconciliation closed without it arriving; `condition_mismatch` — arrived but intake verification flagged it.
Allowed:expectedmatchedmissingcondition_mismatch
matched_qidsQID[]required
skustring | null
errorsCsvRowError[]required
Show properties
Array of CsvRowError
codeErrorCoderequired
Stable machine-readable error vocabulary for v1.
Allowed:validation_errorstate_conflictenvironment_mismatchunsupported_destinationinvalid_api_keynot_foundrate_limited
fieldsobjectrequired
messagestringrequired
rowintegerrequired
One-based CSV data-row number, excluding the header.
min 1
totalsCsvBatchTotalsrequired
Show properties
createdintegerrequired
min 0
failedintegerrequired
min 0
submittedintegerrequired
min 0
400Validation failed.
codeErrorCoderequired
Stable machine-readable error vocabulary for v1.
Allowed:validation_errorstate_conflictenvironment_mismatchunsupported_destinationinvalid_api_keynot_foundrate_limited
extraobjectrequired
Structured details such as field errors or SKU availability.
messagestringrequired
Human-readable summary.
401Missing, invalid, expired, or environment-mismatched API key.
codeErrorCoderequired
Stable machine-readable error vocabulary for v1.
Allowed:validation_errorstate_conflictenvironment_mismatchunsupported_destinationinvalid_api_keynot_foundrate_limited
extraobjectrequired
Structured details such as field errors or SKU availability.
messagestringrequired
Human-readable summary.
429Rate limit exceeded for this API key.
codeErrorCoderequired
Stable machine-readable error vocabulary for v1.
Allowed:validation_errorstate_conflictenvironment_mismatchunsupported_destinationinvalid_api_keynot_foundrate_limited
extraobjectrequired
Structured details such as field errors or SKU availability.
messagestringrequired
Human-readable summary.
Try it
Server
Authorization
Parameters
Bodymultipart/form-data
Request
curl -X POST "https://api.vault.stashtab.gg/v1/manifests/csv" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: multipart/form-data" \
  -d '{
  "file": "string",
  "reference": "string",
  "source": "card_show"
}'
Response
{
  "manifest": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "reference": "string",
    "source": "card_show",
    "status": "submitted",
    "expected_arrival_start": "2019-08-24",
    "expected_arrival_end": "2019-08-24",
    "line_count": 0,
    "created_at": "2019-08-24T14:15:22Z"
  },
  "created": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "external_ref": "string",
      "description": "string",
      "grader": "string",
      "cert_number": "string",
      "quantity": 0,
      "status": "expected",
      "matched_qids": [
        "7c9e6679-7425-40de-944b-e07fc1f90ae7"
      ],
      "sku": "string"
    }
  ],
  "errors": [
    {
      "code": "validation_error",
      "fields": {
        "property1": [
          "string"
        ],
        "property2": [
          "string"
        ]
      },
      "message": "string",
      "row": 1
    }
  ],
  "totals": {
    "created": 0,
    "failed": 0,
    "submitted": 0
  }
}