Poshmark API documentation
A REST API for your own Poshmark sales data. Register with your Poshmark credentials, sync your full order and listing history once, then query revenue and orders from anywhere. Every authenticated request carries a bearer token and is billed $0.01 against your balance.
New accounts start with $10 of credit — 1,000 calls. All data (orders, listings, users) is scoped to your account; you only ever see your own.
The flow, end to end
- POST /register — create an account, get a UUID API key and $10 credit.
- POST /sync — import your full history (runs 5–15 min).
- GET /status — poll until it returns "ready".
- GET /revenue / GET /order — query your data.
Authentication
Every endpoint except /register, /status, and /health requires your API key as a bearer token. Your key is a UUID v4 returned by /register. Send it on every authenticated request:
A missing or malformed header returns 401; a well-formed key that doesn't exist also returns 401. Keep your key secret — anyone holding it can spend your balance. /status is the one exception: it takes the key as a query parameter (?apiKey=…) so you can check sync progress without auth.
Syncing your data
Before you can query anything, PoshmarkAPI signs in as you and imports your order and listing history. This runs synchronously inside POST /sync and takes 5–15 minutes depending on how many orders you have. Kick it off once; re-run it later to pull in new sales. While a sync is running, a second /sync returns 409.
Your account moves through four sync states:
Query endpoints return 202 while your status is not_synced or syncing, so poll GET /status until it flips to ready.
Errors & status codes
Errors are returned as JSON: { "error": "message" }. The codes you'll see:
Billing & credit
Pay-as-you-go: $0.01 per successful billed call, drawn from your balance. New accounts get $10 (1,000 calls). Only 200 responses on billed endpoints are charged — a request that errors (400, 401, 402, 404, 202…) costs nothing.
When your balance drops below one cent, billed endpoints return 402 until you add credit. Your key stays valid and nothing is deleted.
Create an account. Returns a UUID API key and applies $10 of starting credit. No authentication.
Errors: 400 missing/invalid fields · 409 username already registered.
Import your full Poshmark history — orders first, then the listing behind each order. Runs synchronously and returns when the import finishes (5–15 min). Requires bearer auth. No body.
Errors: 409 a sync is already running · 401 / 402 auth · 500 sync failed (details in scrapeError via /status).
Because /sync holds the connection open for minutes, make sure your client and any reverse proxy allow a long request timeout.
Check sync progress. Takes your key as a query parameter (no bearer header, not billed) so you can poll it freely.
Errors: 400 missing apiKey · 401 unknown key. lastSynced is null until the first successful sync.
Total net earnings and order count for a date range. revenue is the sum of each order's net earnings (after Poshmark's commission), returned as a string; orders with no recorded earnings are excluded. Requires bearer auth and a synced account.
Errors: 400 missing/invalid dates · 202 not synced yet · 401 / 402 auth.
Full detail for a single order in your account, including buyer and seller. Returns every stored field on the order (status, amounts, fees, net earnings, size, dates, tracking, and more) plus nested buyer and seller objects.
Errors: 400 missing orderId · 404 no such order in your account · 202 not synced · 401 / 402 auth.
Liveness check. No auth, not billed — useful for uptime monitors.
Ready to build?
Create a key and start with $10 of credit — no card required.