TBBNMerchantDocs
Available

Directory

get/v1/directory/listings

Public global-directory listing read. Only GLOBAL/BOTH-visibility listings ever appear here — PRIVATE and ENTERPRISE never do. See the Glossary guide "Global vs Private vs Both vs Enterprise".

curl -X GET https://api.tbbnetwork.com/v1/directory/listings \
  -H "Authorization: Bearer sk_sandbox_..." \

Parameters

categoryqueryoptional
qqueryoptional
swapqueryoptional
sortqueryoptional
buyqueryoptional
minPricequeryoptional
maxPricequeryoptional
sellerqueryoptional
pagequeryoptional
matchForqueryoptional
kindqueryoptional
makequeryoptional
subcategoryqueryoptional
brandqueryoptional
minYearqueryoptional
maxYearqueryoptional
minBedroomsqueryoptional
offeringqueryoptional

Response (200)

FieldTypeRequired
dataobject[]—
nextCursorstringnull—
totalinteger—
pageinteger—
pageCountinteger—
matchedForobjectnull—
categoriesobject[]—
subcategoriesobject[]—
Example 200 response
{
  "data": [
    {
      "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "merchantId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "merchantListingRef": null,
      "sellerId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "title": "title",
      "category": "category",
      "subcategory": null,
      "brand": null,
      "model": null,
      "size": null,
      "condition": null,
      "year": null,
      "originalPrice": 1,
      "currency": "USD",
      "visibility": "PRIVATE",
      "status": "ACTIVE",
      "listingType": "SALE",
      "deliveryMethod": "LOCAL_PICKUP",
      "preferredSpaceBranchId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "city": null,
      "region": null,
      "locationLabel": null,
      "locationCountry": null,
      "sellerIdentityVerified": false,
      "publicNow": false,
      "notPublicReason": "PENDING_REVIEW",
      "kind": "GOODS",
      "details": null,
      "preferredSpaceId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "sellerStoreSlug": null,
      "viewerIsOwner": false,
      "merchantItemUrl": null,
      "requestedAmount": null,
      "willingToPay": null,
      "note": null,
      "images": [],
      "wants": [],
      "createdAt": "2026-07-01T12:00:00Z",
      "updatedAt": "2026-07-01T12:00:00Z",
      "syncedAt": "2026-07-01T12:00:00Z",
      "deletedAt": "2026-07-01T12:00:00Z"
    }
  ],
  "nextCursor": null,
  "total": 1,
  "page": 1,
  "pageCount": 1,
  "matchedFor": {
    "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "title": "title"
  },
  "categories": [
    {
      "category": "category",
      "count": 1
    }
  ],
  "subcategories": [
    {
      "subcategory": "subcategory",
      "count": 1
    }
  ]
}
get/v1/directory/storefronts/{slug}

A member's public storefront: their name, bio, photo, whether they've verified their identity, reputation, completed swaps and general location, and the items they listed themselves (never a store's listings of their items) — public ones only, 24 a page.

curl -X GET https://api.tbbnetwork.com/v1/directory/storefronts/{slug} \
  -H "Authorization: Bearer sk_sandbox_..." \

Parameters

slugpathrequired
pagequeryoptional

Response (200)

FieldTypeRequired
storefrontobject—
listingsobject[]—
totalinteger—
pageinteger—
pageCountinteger—
Example 200 response
{
  "storefront": {
    "slug": "example-slug",
    "name": "Acme Co.",
    "bio": null,
    "avatarUrl": null,
    "identityVerified": false,
    "reputationScore": null,
    "memberSince": "2026-07-01T12:00:00Z",
    "completedSwaps": 1,
    "location": null
  },
  "listings": [
    {
      "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "merchantId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "merchantListingRef": null,
      "sellerId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "title": "title",
      "category": "category",
      "subcategory": null,
      "brand": null,
      "model": null,
      "size": null,
      "condition": null,
      "year": null,
      "originalPrice": 1,
      "currency": "USD",
      "visibility": "PRIVATE",
      "status": "ACTIVE",
      "listingType": "SALE",
      "deliveryMethod": "LOCAL_PICKUP",
      "preferredSpaceBranchId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "city": null,
      "region": null,
      "locationLabel": null,
      "locationCountry": null,
      "sellerIdentityVerified": false,
      "publicNow": false,
      "notPublicReason": "PENDING_REVIEW",
      "kind": "GOODS",
      "details": null,
      "preferredSpaceId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "sellerStoreSlug": null,
      "viewerIsOwner": false,
      "merchantItemUrl": null,
      "requestedAmount": null,
      "willingToPay": null,
      "note": null,
      "images": [],
      "wants": [],
      "createdAt": "2026-07-01T12:00:00Z",
      "updatedAt": "2026-07-01T12:00:00Z",
      "syncedAt": "2026-07-01T12:00:00Z",
      "deletedAt": "2026-07-01T12:00:00Z"
    }
  ],
  "total": 1,
  "page": 1,
  "pageCount": 1
}

Possible errors

Any other failure (validation, auth, rate limiting, a resource that doesn't exist) returns this same envelope with a non-2xx status — error.code is stable and safe to branch on; error.requestId is worth logging and including in a support request.

Example error response
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "A human-readable description of what went wrong.",
    "requestId": "req_01hxyz..."
  }
}
get/v1/directory/listings/{id}

Get a single listing from the public global directory

curl -X GET https://api.tbbnetwork.com/v1/directory/listings/{id} \
  -H "Authorization: Bearer sk_sandbox_..." \

Parameters

idpathrequired

Response (200)

FieldTypeRequired
idstring (uuid)—
merchantIdstring,null (uuid)—
merchantListingRefstringnull—
sellerIdstring (uuid)—
titlestring—
categorystring—
subcategorystringnull—
brandstringnull—
modelstringnull—
sizestringnull—
conditionstringnull—
yearintegernull—
originalPricenumber—
currencystring—
visibilityPRIVATE | GLOBAL | BOTH | ENTERPRISE—
statusACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED—
listingTypeSALE | TRADE | BOTH—
deliveryMethodLOCAL_PICKUP | SHIPPING | BOTH | —
preferredSpaceBranchIdstring,null (uuid)—
citystringnull—
regionstringnull—
locationLabelstringnull—
locationCountrystringnull—
sellerIdentityVerifiedboolean—
publicNowboolean—
notPublicReasonPENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | —
kindGOODS | VEHICLE | PROPERTY | SERVICE | TICKET—
detailsobject—
preferredSpaceIdstring,null (uuid)—
sellerStoreSlugstringnull—
viewerIsOwnerboolean—
merchantItemUrlstring,null (uri)—
requestedAmountnumbernull—
willingToPaynumbernull—
notestringnull—
imagesstring[]—
wantsobject[]—
createdAtstring (date-time)—
updatedAtstring (date-time)—
syncedAtstring (date-time)—
deletedAtstring,null (date-time)—
Example 200 response
{
  "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "merchantId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "merchantListingRef": null,
  "sellerId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "title": "title",
  "category": "category",
  "subcategory": null,
  "brand": null,
  "model": null,
  "size": null,
  "condition": null,
  "year": null,
  "originalPrice": 1,
  "currency": "USD",
  "visibility": "PRIVATE",
  "status": "ACTIVE",
  "listingType": "SALE",
  "deliveryMethod": "LOCAL_PICKUP",
  "preferredSpaceBranchId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "city": null,
  "region": null,
  "locationLabel": null,
  "locationCountry": null,
  "sellerIdentityVerified": false,
  "publicNow": false,
  "notPublicReason": "PENDING_REVIEW",
  "kind": "GOODS",
  "details": null,
  "preferredSpaceId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "sellerStoreSlug": null,
  "viewerIsOwner": false,
  "merchantItemUrl": null,
  "requestedAmount": null,
  "willingToPay": null,
  "note": null,
  "images": [
    "value"
  ],
  "wants": [
    {
      "kind": "GOODS",
      "details": {
        "make": "Toyota",
        "yearMin": 2015,
        "mileageMax": 100000,
        "mileageUnit": "km"
      },
      "category": "category",
      "subcategory": null,
      "brand": null,
      "note": null,
      "minCondition": "New",
      "imageUrl": null
    }
  ],
  "createdAt": "2026-07-01T12:00:00Z",
  "updatedAt": "2026-07-01T12:00:00Z",
  "syncedAt": "2026-07-01T12:00:00Z",
  "deletedAt": "2026-07-01T12:00:00Z"
}

Possible errors

404Not found, or not GLOBAL/BOTH visibility