API, SDK, and platform updates. Each entry is tagged by type: New, Improved, Fixed, or Breaking.
April 2026: Simplified architecture
ListBee’s API is now simpler and more powerful. Stores have been removed, listings have a proper lifecycle, and deliverables are mutable.
What changed
- Breaking: Store entity removed — accounts own listings directly. All
/v1/stores/endpoints are gone. Profile fields (display name, bio, avatar) now live on the account. - Breaking: Listing management routes changed from
/{slug}to/{listing_id}. Slugs are still used for public product page URLs. - Breaking: Listing states changed from active/paused to draft/published/paused. New listings start as drafts and must be explicitly published.
- Changed: Deliverables are now mutable. Set, replace, or remove a listing’s deliverable via
PUT /v1/listings/{id}/deliverableandDELETE /v1/listings/{id}/deliverable. Draft state only. - Changed: File upload via
POST /v1/filesreturns a token. Pass the token to the deliverable endpoint to attach files. - Changed: Slugs are now derived from the listing name (human-readable). Changeable in draft, frozen after publish.
- Changed: Fulfillment mode is computed from deliverable presence — no longer set explicitly.
- Removed: Custom domains.
- Removed: Multi-store support. One account = one brand.
- New: Webhook delivery logs —
GET /v1/webhooks/{id}/eventsto inspect delivery history. - New: Webhook test endpoint —
POST /v1/webhooks/{id}/testto verify your endpoint. - New: Webhook retry —
POST /v1/webhooks/{id}/events/{event_id}/retryto retry failed deliveries. - New: Auto-disable for webhooks after 3 consecutive permanent failures.
- New: 29 supported currencies including zero-decimal currencies (JPY, KRW).
Migration
Store removal
Before:
After:
Listing routes
Before:
After:
Listing creation
Before:
After:
Fulfillment architecture
ListBee now supports two fulfillment modes on every listing: managed (ListBee delivers digital content automatically) and external (your app handles delivery via webhooks). Sell physical goods, AI-generated content, custom services — anything that needs logic after payment.
What changed
- New:
fulfillmentfield on listings —"managed"or"external". Defaults inferred from whethercontentis provided. - New:
checkout_schemaon listings — collect custom fields from buyers at checkout (text, select, date, address). Max 10 fields. - New:
POST /v1/orders/{id}/fulfill— push generated content or mark external orders as fulfilled. - New:
POST /v1/orders/{id}/ship— record shipping carrier, tracking code, and seller note. - New: Order status expanded —
pending,paid,fulfilled,canceled,failed(was:pending,paid,expired). - New: Order fields —
checkout_data,shipping_address,fulfillment_status,carrier,tracking_code,seller_note,paid_at,fulfilled_at. - New: Webhook events —
order.fulfilled,order.shipped. - New:
configure_webhookreadiness action — appears on external fulfillment listings without a webhook. - Breaking:
content_typerenamed todeliverable_type,content_keytodeliverable_key,content_valuetodeliverable_value,content_metatodeliverable_meta,has_contenttohas_deliverable. - Breaking:
order.completedwebhook event removed — replaced byorder.paidandorder.fulfilled. - Breaking:
stripe_session_idremoved from order responses.
Migration
Field renames
Before:
After:
Webhook events
Before:
After:
See the Fulfillment modes guide for the full overview, Selling physical products for address collection, and Dynamic fulfillment for AI-generated content delivery.
Google Analytics tracking
Sellers can now connect a GA4 Measurement ID to their account. ListBee injects gtag.js on product pages and thank-you pages, and fires a purchase event when an order completes. UTM parameters are configurable per listing with sensible defaults.
What changed
- New:
ga_measurement_idfield onAccountResponse— GA4 Measurement ID associated with the account - New:
PUT /v1/accountnow acceptsga_measurement_id— set or clear the Measurement ID (G-XXXXXXXXXXformat, ornull) - New:
utm_source,utm_medium,utm_campaignfields onCreateListingRequest,UpdateListingRequest, andListingResponse— override per-listing UTM attribution (all optional, max 100 chars each) - Behavior: When
ga_measurement_idis set,gtag.jsis injected on product pages and thank-you pages; apurchaseevent fires on the thank-you page withtransaction_id,value, andcurrency - Behavior: UTM defaults applied at render time —
utm_source→listbee,utm_medium→product_page,utm_campaign→ listing slug; null fields use defaults
See the Google Analytics tracking guide for setup steps and code examples.
Agent-native infrastructure
New endpoints
POST /v1/account/signup+POST /v1/account/verify— agent-initiated account creation with email OTPGET/POST/DELETE /v1/api-keys— API key managementPUT /v1/listings/{slug}— listing updates (content immutable)POST /v1/account/stripe-key— direct Stripe key inputPOST /v1/account/stripe/connect— Stripe Connect via APIDELETE /v1/account/stripe— disconnect Stripe
Readiness evolution
blockers→actionswithkind(api/human) andnextpointer- Agents now know what to call and whether they can do it autonomously
Agent discovery
/llms.txtendpoint for agent discoveryIdempotency-Keyheader on all POST endpoints