🚧 Testing Mode — This marketplace is still in development. Nothing here is live or binding yet.

🔌 ShedBid Connect

Your inventory already lives somewhere — a CRM, shed-builder software, a spreadsheet. Plug it into ShedBid and your buildings list themselves, auctions run themselves, and your system hears back the moment something sells. Three on-ramps, easiest first.

Level 1 · No code

Upload a CSV

Export your inventory as a spreadsheet, upload it in your vendor dashboard → ShedBid Connect, and every row becomes a live auction. Re-upload any time: rows carrying an external_id (your SKU or stock number) update the same listing instead of duplicating it.

⬇ Download the CSV template

Columns

ColumnRequiredNotes
external_idrecommendedYour SKU. The upsert key - lets re-imports update instead of duplicate.
building_typeyese.g. Lofted Barn, Utility Shed, Cabin
size or width+lengthyes12x24 works fine
starting_priceyes$4,500.00 or 4500 - both fine
conditionnonew (default) or repo
reserve_price, buy_it_nownoReserve is your hidden floor - bidders never see the number
auction_daysno1-30, default 7
lot or zipyes*Lot name (as in your dashboard) or a ZIP. The lot's address becomes the listing location.
delivery_radius_milesnoHow far you deliver; buyers outside it can't bid. Defaults to your company setting.
photo_urlsnoUp to 8 public image URLs, separated by | - fetched and resized automatically
rto_available, rto_down_payment, rto_monthly_payment, rto_term_monthsnoRent-to-own terms shown on the listing
Level 2 · Set & forget

Auto-sync an inventory feed

Host that same CSV (or a JSON array) at a URL — most CRMs and shed-builder platforms can publish an export — save the URL in your dashboard, and ShedBid pulls it every hour. New units get listed, changed rows get updated, sold listings are left alone. Put a building on your feed today; it's on auction within the hour, with zero clicks.

https://your-website.com/shedbid-inventory.csv # or .json # JSON feeds: an array of listing objects, or {"listings": [...]} [ {"external_id": "SKU-1001", "building_type": "Lofted Barn", "size": "12x24", "condition": "new", "starting_price": 4500, "buy_it_now": 7900, "lot": "Dallas Main Lot", "photo_urls": ["https://your-cdn.com/barn1.jpg"]} ]

The dashboard shows the result of every sync (created / updated / skipped / failed, with reasons), and you can trigger a pull manually any time.

Level 3 · Full integration

REST API

Create an API key in your vendor dashboard and send it as a Bearer token. Machine-readable spec: /api/v1/openapi.json — point your integration platform (or your AI assistant) at it and it can wire itself up.

Quickstart

# 1. Check your key curl https://shedbid.com/api/v1/ping \ -H "Authorization: Bearer sbk_live_YOUR_KEY" # 2. Post a building - live auction in one call curl -X POST https://shedbid.com/api/v1/listings \ -H "Authorization: Bearer sbk_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "external_id": "SKU-1001", "building_type": "Lofted Barn", "size": "12x24", "condition": "new", "starting_price": 4500, "reserve_price": 6200, "buy_it_now": 7900, "auction_days": 7, "lot": "Dallas Main Lot", "photo_urls": ["https://your-cdn.com/barn-front.jpg"], "rto_terms": {"available": true, "down_payment": 650, "monthly_payment": 189, "term_months": 36} }' # 3. Post the SAME external_id again -> it updates, never duplicates. # Safe to sync your whole inventory nightly via POST /api/v1/import.

Endpoints

EndpointWhat it does
GET /api/v1/pingVerify your key; returns your company + store URL
GET /api/v1/lotsYour sale lots (for lot_id / lot)
GET /api/v1/listingsYour listings; filter ?status=active or ?external_id=SKU
POST /api/v1/listingsCreate a listing (upserts by external_id)
GET /api/v1/listings/{id}One listing incl. bid history (numeric id or SLID)
PATCH /api/v1/listings/{id}Update fields. Fairness rule: once bids exist the reserve can be lowered, never raised.
POST /api/v1/listings/{id}/endWithdraw an active listing (only while it has no bids)
POST /api/v1/importBulk: JSON array or raw CSV body (max 500 rows), per-row report back
GET /api/v1/events?since_id=NPoll bid/sold/ended events - the pull alternative to webhooks

Rate limit: 120 requests/minute per key. Errors come back as JSON: {"error": {"code", "message"}} with proper HTTP status codes (401, 404, 409, 422, 429). Note: our host's firewall rejects body-less POSTs — always send a JSON body, even an empty {} (e.g. on /end), with Content-Type: application/json.

Webhooks (we call you)

Save a webhook URL in your dashboard and ShedBid POSTs JSON events to it, checked every 5 minutes:

EventFires whenPayload highlights
listing.bidA new bid lands on your listingamount, bid_count, current_high, reserve_met
listing.soldAuction won or Buy It Nowsale_price + buyer name/email/phone - so your CRM can mark the unit sold and start the paperwork
listing.endedAuction ends unsoldreason (reserve_not_met / no_sale), high_bid
pingYou press "Send test ping"hello message

Every delivery is signed. Verify the X-ShedBid-Signature header with the signing secret from your dashboard:

// PHP $expected = 'sha256=' . hash_hmac('sha256', file_get_contents('php://input'), $secret); $valid = hash_equals($expected, $_SERVER['HTTP_X_SHEDBID_SIGNATURE'] ?? ''); // Node const sig = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex'); const valid = crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(req.headers['x-shedbid-signature'] || ''));

Failed deliveries retry twice (on the next 5-minute ticks), then park in your delivery log. Can't receive webhooks? Poll GET /api/v1/events instead - same events, pull style.

Zapier / Make / n8n

No custom app needed: use a plain HTTP request step with your Bearer key to create listings, and a webhook trigger step as the receiving end for sold/bid events. The flat JSON in and out is designed for exactly this.

Ground rules