TBBNMerchantDocs
Available

Listings

get/merchant/listings

Your own catalogue — every listing you've sent, in any status but deleted (live, in a trade, taken down, sold, held for review, removed by TBBN), newest first, with counts per status. Search titles and your own references with q. A team member signed in to the dashboard can always read it; changing a listing needs a role with the catalogue permission.

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

Parameters

statusqueryoptional
qqueryoptional
refqueryoptional
cursorqueryoptional
limitqueryoptional

Response (200)

FieldTypeRequired
dataobject[]—
nextCursorstringnull—
countsobject—
Example 200 response
{
  "data": [
    {
      "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "title": "title",
      "merchantListingRef": null,
      "category": "category",
      "status": "status",
      "originalPrice": "originalPrice",
      "currency": "USD",
      "images": [],
      "fromFeed": false,
      "feedDelistedAt": "2026-07-01T12:00:00Z",
      "syncedAt": "2026-07-01T12:00:00Z",
      "seller": null,
      "sellerRef": null
    }
  ],
  "nextCursor": null,
  "counts": null
}

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..."
  }
}
post/merchant/listings

Create or sync a listing. Upserts on (merchantId, merchantListingRef) — a repeat call with the same ref updates the existing listing rather than creating a duplicate. A listing sync is counted when this creates or changes a listing; sending it again unchanged is free. See the integration walkthrough's "Sync your listings".

curl -X POST https://api.tbbnetwork.com/merchant/listings \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Idempotency-Key: 5f2f...b91" \
  -H "Content-Type: application/json" \
  -d '{
  "merchantId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "merchantListingRef": "merchantListingRef",
  "sellerId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "sellerRef": "sellerRef",
  "title": "title",
  "category": "category",
  "subcategory": "subcategory",
  "brand": "brand",
  "model": "model",
  "size": "size",
  "condition": "condition",
  "year": 1,
  "originalPrice": 1,
  "currency": "USD",
  "visibility": "PRIVATE",
  "listingType": "SALE",
  "deliveryMethod": "LOCAL_PICKUP",
  "kind": "GOODS",
  "details": null,
  "preferredSpaceId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "preferredSpaceBranchId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "merchantItemUrl": "https://example.com/resource",
  "requestedAmount": 1,
  "willingToPay": 1,
  "note": "note",
  "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
    }
  ]
}'

Parameters

Request body

FieldTypeRequired
merchantIdstring (uuid)yes
merchantListingRefstringyes
sellerIdstring (uuid)—
sellerRefstring—
titlestringyes
categorystringyes
subcategorystring—
brandstring—
modelstring—
sizestring—
conditionstring—
yearinteger—
originalPricenumberyes
currencystringyes
visibilityPRIVATE | GLOBAL | BOTH | ENTERPRISEyes
listingTypeSALE | TRADE | BOTHyes
deliveryMethodLOCAL_PICKUP | SHIPPING | BOTH—
kindGOODS | VEHICLE | PROPERTY | SERVICE | TICKET—
detailsobject—
preferredSpaceIdstring (uuid)—
preferredSpaceBranchIdstring (uuid)—
merchantItemUrlstring (uri)—
requestedAmountnumber—
willingToPaynumber—
notestring—
imagesstring[]—
wantsobject[]—

Response (201)

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 201 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

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..."
  }
}
put/merchant/listings/{id}

Update a listing by id (partial — only supplied fields change)

curl -X PUT https://api.tbbnetwork.com/merchant/listings/{id} \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Content-Type: application/json" \
  -d '{
  "merchantId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "merchantListingRef": "merchantListingRef",
  "sellerId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "sellerRef": "sellerRef",
  "title": "title",
  "category": "category",
  "subcategory": "subcategory",
  "brand": "brand",
  "model": "model",
  "size": "size",
  "condition": "condition",
  "year": 1,
  "originalPrice": 1,
  "currency": "USD",
  "visibility": "PRIVATE",
  "listingType": "SALE",
  "deliveryMethod": "LOCAL_PICKUP",
  "kind": "GOODS",
  "details": null,
  "preferredSpaceId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "preferredSpaceBranchId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "merchantItemUrl": "https://example.com/resource",
  "requestedAmount": 1,
  "willingToPay": 1,
  "note": "note",
  "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
    }
  ]
}'

Parameters

idpathrequired

Request body

FieldTypeRequired
merchantIdstring (uuid)yes
merchantListingRefstringyes
sellerIdstring (uuid)—
sellerRefstring—
titlestringyes
categorystringyes
subcategorystring—
brandstring—
modelstring—
sizestring—
conditionstring—
yearinteger—
originalPricenumberyes
currencystringyes
visibilityPRIVATE | GLOBAL | BOTH | ENTERPRISEyes
listingTypeSALE | TRADE | BOTHyes
deliveryMethodLOCAL_PICKUP | SHIPPING | BOTH—
kindGOODS | VEHICLE | PROPERTY | SERVICE | TICKET—
detailsobject—
preferredSpaceIdstring (uuid)—
preferredSpaceBranchIdstring (uuid)—
merchantItemUrlstring (uri)—
requestedAmountnumber—
willingToPaynumber—
notestring—
imagesstring[]—
wantsobject[]—

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

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..."
  }
}
delete/merchant/listings/{id}

Soft-delete a listing

curl -X DELETE https://api.tbbnetwork.com/merchant/listings/{id} \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Idempotency-Key: 5f2f...b91" \

Parameters

idpathrequired

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..."
  }
}
post/merchant/listings/{id}/availability

Report an availability change for one of your listings — SOLD or UNAVAILABLE when it sells or goes out of stock elsewhere, ACTIVE when it's available again. TBBN sets RESERVED itself while the item is part of a trade.

curl -X POST https://api.tbbnetwork.com/merchant/listings/{id}/availability \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Idempotency-Key: 5f2f...b91" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "ACTIVE"
}'

Parameters

idpathrequired

Request body

FieldTypeRequired
statusACTIVE | RESERVED | SOLD | UNAVAILABLEyes

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

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..."
  }
}
put/merchant/listings/{id}/wants

Replace a listing's wants array (full replace, not merge) — see the Glossary guide "Wants"

curl -X PUT https://api.tbbnetwork.com/merchant/listings/{id}/wants \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Content-Type: application/json" \
  -d '{
  "wants": [
    {
      "kind": "GOODS",
      "details": {
        "make": "Toyota",
        "yearMin": 2015,
        "mileageMax": 100000,
        "mileageUnit": "km"
      },
      "category": "category",
      "subcategory": null,
      "brand": null,
      "note": null,
      "minCondition": "New",
      "imageUrl": null
    }
  ]
}'

Parameters

idpathrequired

Request body

FieldTypeRequired
wantsobject[]yes

Response (200)

Example 200 response
[
  {
    "kind": "GOODS",
    "details": {
      "make": "Toyota",
      "yearMin": 2015,
      "mileageMax": 100000,
      "mileageUnit": "km"
    },
    "category": "category",
    "subcategory": null,
    "brand": null,
    "note": null,
    "minCondition": "New",
    "imageUrl": null
  }
]

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/listings/{id}/wants

Read a listing's wants array

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

Parameters

idpathrequired

Response (200)

Example 200 response
[
  {
    "kind": "GOODS",
    "details": {
      "make": "Toyota",
      "yearMin": 2015,
      "mileageMax": 100000,
      "mileageUnit": "km"
    },
    "category": "category",
    "subcategory": null,
    "brand": null,
    "note": null,
    "minCondition": "New",
    "imageUrl": null
  }
]
get/v1/merchant/feed-source

This merchant's catalog feed configuration — see the Catalog feed guide.

curl -X GET https://api.tbbnetwork.com/v1/merchant/feed-source \
  -H "Authorization: Bearer sk_sandbox_..." \

Possible errors

404No feed source configured yet

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..."
  }
}
post/v1/merchant/feed-source

Create or replace this merchant's feed source config

curl -X POST https://api.tbbnetwork.com/v1/merchant/feed-source \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Idempotency-Key: 5f2f...b91" \
  -H "Content-Type: application/json" \
  -d '{
  "feedUrl": "https://example.com/resource",
  "feedFormat": "XML",
  "feedUsername": "feedUsername",
  "feedPassword": "feedPassword",
  "defaultSellerId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "enabled": false
}'

Request body

FieldTypeRequired
feedUrlstringyes
feedFormatXML | CSVyes
feedUsernamestring—
feedPasswordstring—
defaultSellerIdstring (uuid)—
enabledboolean—

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..."
  }
}
post/v1/merchant/feed-source/fetch-now

Manual fetch, doesn't wait for the 24h scheduled cycle — same escape hatch Google/Meta's own scheduled-feed UIs both offer.

curl -X POST https://api.tbbnetwork.com/v1/merchant/feed-source/fetch-now \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Idempotency-Key: 5f2f...b91" \

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/listings/{id}

Get a listing

curl -X GET https://api.tbbnetwork.com/v1/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

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/listings

Directory-lite listing read across all visibilities the caller is entitled to — full ranked search lives in Search/Matching

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

Parameters

categoryqueryoptional
merchantIdqueryoptional
visibilityqueryoptional

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
    }
  ]
}
post/v1/listings/individual

Create a listing of your own as a signed-in member (no merchant). The seller is always the signed-in member.

curl -X POST https://api.tbbnetwork.com/v1/listings/individual \
  -H "Authorization: Bearer <session access token>" \
  -H "Idempotency-Key: 5f2f...b91" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "title",
  "category": "category",
  "subcategory": "subcategory",
  "brand": "brand",
  "model": "model",
  "size": "size",
  "condition": "condition",
  "year": 1,
  "originalPrice": 1,
  "currency": "USD",
  "listingType": "SALE",
  "deliveryMethod": "LOCAL_PICKUP",
  "kind": "GOODS",
  "details": null,
  "preferredSpaceId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "preferredSpaceBranchId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "city": "city",
  "region": "CA",
  "latitude": 1,
  "longitude": 1,
  "requestedAmount": 1,
  "willingToPay": 1,
  "note": "note",
  "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
    }
  ]
}'

Parameters

Request body

FieldTypeRequired
titlestringyes
categorystringyes
subcategorystring—
brandstring—
modelstring—
sizestring—
conditionstring—
yearinteger—
originalPricenumberyes
currencystring—
listingTypeSALE | TRADE | BOTHyes
deliveryMethodLOCAL_PICKUP | SHIPPING | BOTH—
kindGOODS | VEHICLE | PROPERTY | SERVICE | TICKET—
detailsobject—
preferredSpaceIdstring (uuid)—
preferredSpaceBranchIdstring (uuid)—
citystring—
regionstring—
latitudenumber—
longitudenumber—
requestedAmountnumber—
willingToPaynumber—
notestring—
imagesstring[]yes
wantsobject[]—

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"
}
get/v1/listings/mine

Every listing the signed-in member created, in every status except deleted. The public listing read returns only what is available; this is how an owner sees their Pending and Sold items.

curl -X GET https://api.tbbnetwork.com/v1/listings/mine \
  -H "Authorization: Bearer <session access token>" \

Response (200)

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

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..."
  }
}
post/v1/listings/individual/{id}/availability

Set one of your own listings to Available (ACTIVE), Pending (RESERVED) or Sold. Only the member who created the listing may change it; merchant-synced listings are managed on the merchant's platform.

curl -X POST https://api.tbbnetwork.com/v1/listings/individual/{id}/availability \
  -H "Authorization: Bearer <session access token>" \
  -H "Idempotency-Key: 5f2f...b91" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "ACTIVE"
}'

Parameters

idpathrequired

Request body

FieldTypeRequired
statusACTIVE | RESERVED | SOLD | UNAVAILABLEyes

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

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..."
  }
}
put/v1/listings/individual/{id}

Edit one of your own listings

curl -X PUT https://api.tbbnetwork.com/v1/listings/individual/{id} \
  -H "Authorization: Bearer <session access token>" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "title",
  "category": "category",
  "subcategory": "subcategory",
  "brand": "brand",
  "model": "model",
  "size": "size",
  "condition": "condition",
  "year": 1,
  "originalPrice": 1,
  "currency": "USD",
  "listingType": "SALE",
  "deliveryMethod": "LOCAL_PICKUP",
  "kind": "GOODS",
  "details": null,
  "preferredSpaceId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "preferredSpaceBranchId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "city": "city",
  "region": "CA",
  "latitude": 1,
  "longitude": 1,
  "requestedAmount": 1,
  "willingToPay": 1,
  "note": "note",
  "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
    }
  ]
}'

Parameters

idpathrequired

Request body

FieldTypeRequired
titlestringyes
categorystringyes
subcategorystring—
brandstring—
modelstring—
sizestring—
conditionstring—
yearinteger—
originalPricenumberyes
currencystring—
listingTypeSALE | TRADE | BOTHyes
deliveryMethodLOCAL_PICKUP | SHIPPING | BOTH—
kindGOODS | VEHICLE | PROPERTY | SERVICE | TICKET—
detailsobject—
preferredSpaceIdstring (uuid)—
preferredSpaceBranchIdstring (uuid)—
citystring—
regionstring—
latitudenumber—
longitudenumber—
requestedAmountnumber—
willingToPaynumber—
notestring—
imagesstring[]yes
wantsobject[]—

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

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..."
  }
}
delete/v1/listings/individual/{id}

Remove one of your own listings

curl -X DELETE https://api.tbbnetwork.com/v1/listings/individual/{id} \
  -H "Authorization: Bearer <session access token>" \
  -H "Idempotency-Key: 5f2f...b91" \

Parameters

idpathrequired

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..."
  }
}
post/v1/waitlist/demo-requests

Request a product demo (public — no credential required)

curl -X POST https://api.tbbnetwork.com/v1/waitlist/demo-requests \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Idempotency-Key: 5f2f...b91" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Acme Co.",
  "email": "you@example.com",
  "businessName": "businessName",
  "website": "website",
  "phone": "+1-555-0173",
  "role": "role",
  "services": [
    "MARKETPLACE_INTEGRATION"
  ],
  "message": "message",
  "source": "source"
}'

Request body

FieldTypeRequired
namestringyes
emailstring (email)yes
businessNamestringyes
websitestring—
phonestring—
rolestring—
servicesstring[]yes
messagestring—
sourcestring—

Response (202)

FieldTypeRequired
messagestring—
Example 202 response
{
  "message": "message"
}

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/listings/{id}/visit

A shopper's link to a store's own item page (the listing's merchantItemUrl): redirects there (302) and counts a store visit, billed to the store at the store-visit price — once per shopper per listing per day; crawlers and link previews are never counted. Link to this rather than to merchantItemUrl directly. v is the site's own visitor id, when it has one. 404 when the listing has no https store page.

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

Parameters

idpathrequired
vqueryoptional

Possible errors

404The listing has no store page