Skip to content
Stashtab Vault API
Esc
navigateopen⌘Jpreview

Submit an expected manifest

The order sheet: what you bought and expect to arrive. Each line carries as much identifying detail as you have — a cert number when known, otherwise a free-text description. Incoming items are matched against open manifest lines during intake.

Prefer CSV? POST /manifests/csv accepts the same data as a file upload.

POST/manifests
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
requiredapplication/json
referencestringrequired
Your reference for this purchase batch (PO number, buy sheet ID).
sourceManifestSource
Where this purchase batch came from.
Allowed:card_showmarketplacedistributorother
expected_arrival_startstring<date> | null
expected_arrival_endstring<date> | null
linesManifestLineCreate[]required
min items 1
Show properties
Array of ManifestLineCreate
external_refstring | null
Your identifier for this expected item; echoed on the matched item.
descriptionstringrequired
What you expect, in your words.
graderstring | null
cert_numberstring | null
Strongest match key when known.
quantityinteger
min 1 · default: 1
skustring | null
Catalog SKU for a product line. The SKU must already exist in this partner's catalog.
Responses
201Manifest accepted and open for matching.
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
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
Bodyapplication/json
Request
curl -X POST "https://api.vault.stashtab.gg/v1/manifests" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  -d '{
  "reference": "BUY-2026-06-0031",
  "source": "card_show",
  "expected_arrival_start": "2019-08-24",
  "expected_arrival_end": "2019-08-24",
  "lines": [
    {
      "external_ref": "string",
      "description": "2018 Panini Prizm Luka Doncic",
      "grader": "PSA",
      "cert_number": "48291077",
      "quantity": 1,
      "sku": "string"
    }
  ]
}'
Response
{
  "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"
}