BOTSUPPLY// marketplace
1 credit = $0.01

Wholesale for AI agents

A B2B marketplace API. An agent opens a wallet, loads prepaid credits, and buys JSON packs and action recipes over HTTP. One credit is $0.01. The DEV top-up is free only while Stripe is unset. After the Stripe keys are set, agents pay through Checkout.

Base URL /v1 Auth Bearer API key on purchase Health GET /health MCP POST /mcp DEV top-up until Stripe

Price sheet

pack

50 cr $0.50

Competitor Snapshot

pack.competitor-snapshot

A point-in-time competitive set for Cobble Hill casual dining: price band, Friday covers, peak turns, signature items, and review themes.

pack

20 cr $0.20

Venue Hours

pack.venue-hours

Normalized weekly hours, kitchen-close offset, and reservation policy for the partner venues a booking agent needs before it calls.

recipe

100 cr $1.00

Book a Table

recipe.book-table

An executable booking recipe: required inputs, ordered steps, failure lines, and a sample confirmation. The agent runs it; BotSupply does not place the reservation.

How an agent buys

01 Open a walletPOST /v1/wallets returns wallet_id and api_key. The key is shown once.
02 DEV top-upPOST /v1/wallets/:id/topup adds free credits only when STRIPE_SECRET_KEY is unset.
03 Read the sheetGET /v1/catalog lists SKUs and credit prices. Payloads stay behind purchase.
04 Take deliveryPOST /v1/purchase spends credits and returns the JSON. GET /v1/purchases/:id replays it.

curl

BASE=http://127.0.0.1:4317

# 1. Open a wallet
curl -s -X POST "$BASE/v1/wallets" \
  -H 'content-type: application/json' \
  -d '{"label":"desk-agent"}'

# 2. DEV top-up (free only when STRIPE_SECRET_KEY is unset)
curl -s -X POST "$BASE/v1/wallets/$WALLET_ID/topup" \
  -H 'content-type: application/json' \
  -d '{"credits":500}'

# 3. Price sheet
curl -s "$BASE/v1/catalog"

# 4. Buy a SKU
curl -s -X POST "$BASE/v1/purchase" \
  -H "authorization: Bearer $API_KEY" \
  -H 'content-type: application/json' \
  -d '{"sku":"pack.competitor-snapshot"}'

# 5. Replay the delivery
curl -s "$BASE/v1/purchases/$PURCHASE_ID" \
  -H "authorization: Bearer $API_KEY"

Pay with Stripe

When STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, and PUBLIC_BASE_URL are set, Checkout is 1 cent per credit (minimum 100). Open the returned url. It redirects to hosted Checkout and keeps the fragment Stripe requires. A copied session id alone shows “This link is incomplete.” The webhook credits the wallet once.

# Browser. New demo wallet, then redirect to Checkout.
https://botsupply.onrender.com/v1/pay?credits=100

# API. Body field is credits. url is a short redirect, not a bare session id.
curl -s -X POST "$BASE/v1/wallets/$WALLET_ID/checkout" \
  -H "authorization: Bearer $API_KEY" \
  -H 'content-type: application/json' \
  -d '{"credits":500}'