Listings
/merchant/listingsYour 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
| status | query | optional |
| q | query | optional |
| ref | query | optional |
| cursor | query | optional |
| limit | query | optional |
Response (200)
| Field | Type | Required |
|---|---|---|
| data | object[] | — |
| nextCursor | stringnull | — |
| counts | object | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/merchant/listingsCreate 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
| Field | Type | Required |
|---|---|---|
| merchantId | string (uuid) | yes |
| merchantListingRef | string | yes |
| sellerId | string (uuid) | — |
| sellerRef | string | — |
| title | string | yes |
| category | string | yes |
| subcategory | string | — |
| brand | string | — |
| model | string | — |
| size | string | — |
| condition | string | — |
| year | integer | — |
| originalPrice | number | yes |
| currency | string | yes |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | yes |
| listingType | SALE | TRADE | BOTH | yes |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string (uuid) | — |
| preferredSpaceBranchId | string (uuid) | — |
| merchantItemUrl | string (uri) | — |
| requestedAmount | number | — |
| willingToPay | number | — |
| note | string | — |
| images | string[] | — |
| wants | object[] | — |
Response (201)
| Field | Type | Required |
|---|---|---|
| id | string (uuid) | — |
| merchantId | string,null (uuid) | — |
| merchantListingRef | stringnull | — |
| sellerId | string (uuid) | — |
| title | string | — |
| category | string | — |
| subcategory | stringnull | — |
| brand | stringnull | — |
| model | stringnull | — |
| size | stringnull | — |
| condition | stringnull | — |
| year | integernull | — |
| originalPrice | number | — |
| currency | string | — |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | — |
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED | — |
| listingType | SALE | TRADE | BOTH | — |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | | — |
| preferredSpaceBranchId | string,null (uuid) | — |
| city | stringnull | — |
| region | stringnull | — |
| locationLabel | stringnull | — |
| locationCountry | stringnull | — |
| sellerIdentityVerified | boolean | — |
| publicNow | boolean | — |
| notPublicReason | PENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string,null (uuid) | — |
| sellerStoreSlug | stringnull | — |
| viewerIsOwner | boolean | — |
| merchantItemUrl | string,null (uri) | — |
| requestedAmount | numbernull | — |
| willingToPay | numbernull | — |
| note | stringnull | — |
| images | string[] | — |
| wants | object[] | — |
| createdAt | string (date-time) | — |
| updatedAt | string (date-time) | — |
| syncedAt | string (date-time) | — |
| deletedAt | string,null (date-time) | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/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
| id | path | required |
Request body
| Field | Type | Required |
|---|---|---|
| merchantId | string (uuid) | yes |
| merchantListingRef | string | yes |
| sellerId | string (uuid) | — |
| sellerRef | string | — |
| title | string | yes |
| category | string | yes |
| subcategory | string | — |
| brand | string | — |
| model | string | — |
| size | string | — |
| condition | string | — |
| year | integer | — |
| originalPrice | number | yes |
| currency | string | yes |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | yes |
| listingType | SALE | TRADE | BOTH | yes |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string (uuid) | — |
| preferredSpaceBranchId | string (uuid) | — |
| merchantItemUrl | string (uri) | — |
| requestedAmount | number | — |
| willingToPay | number | — |
| note | string | — |
| images | string[] | — |
| wants | object[] | — |
Response (200)
| Field | Type | Required |
|---|---|---|
| id | string (uuid) | — |
| merchantId | string,null (uuid) | — |
| merchantListingRef | stringnull | — |
| sellerId | string (uuid) | — |
| title | string | — |
| category | string | — |
| subcategory | stringnull | — |
| brand | stringnull | — |
| model | stringnull | — |
| size | stringnull | — |
| condition | stringnull | — |
| year | integernull | — |
| originalPrice | number | — |
| currency | string | — |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | — |
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED | — |
| listingType | SALE | TRADE | BOTH | — |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | | — |
| preferredSpaceBranchId | string,null (uuid) | — |
| city | stringnull | — |
| region | stringnull | — |
| locationLabel | stringnull | — |
| locationCountry | stringnull | — |
| sellerIdentityVerified | boolean | — |
| publicNow | boolean | — |
| notPublicReason | PENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string,null (uuid) | — |
| sellerStoreSlug | stringnull | — |
| viewerIsOwner | boolean | — |
| merchantItemUrl | string,null (uri) | — |
| requestedAmount | numbernull | — |
| willingToPay | numbernull | — |
| note | stringnull | — |
| images | string[] | — |
| wants | object[] | — |
| createdAt | string (date-time) | — |
| updatedAt | string (date-time) | — |
| syncedAt | string (date-time) | — |
| deletedAt | string,null (date-time) | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/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
| id | path | required |
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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/merchant/listings/{id}/availabilityReport 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
| id | path | required |
Request body
| Field | Type | Required |
|---|---|---|
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | yes |
Response (200)
| Field | Type | Required |
|---|---|---|
| id | string (uuid) | — |
| merchantId | string,null (uuid) | — |
| merchantListingRef | stringnull | — |
| sellerId | string (uuid) | — |
| title | string | — |
| category | string | — |
| subcategory | stringnull | — |
| brand | stringnull | — |
| model | stringnull | — |
| size | stringnull | — |
| condition | stringnull | — |
| year | integernull | — |
| originalPrice | number | — |
| currency | string | — |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | — |
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED | — |
| listingType | SALE | TRADE | BOTH | — |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | | — |
| preferredSpaceBranchId | string,null (uuid) | — |
| city | stringnull | — |
| region | stringnull | — |
| locationLabel | stringnull | — |
| locationCountry | stringnull | — |
| sellerIdentityVerified | boolean | — |
| publicNow | boolean | — |
| notPublicReason | PENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string,null (uuid) | — |
| sellerStoreSlug | stringnull | — |
| viewerIsOwner | boolean | — |
| merchantItemUrl | string,null (uri) | — |
| requestedAmount | numbernull | — |
| willingToPay | numbernull | — |
| note | stringnull | — |
| images | string[] | — |
| wants | object[] | — |
| createdAt | string (date-time) | — |
| updatedAt | string (date-time) | — |
| syncedAt | string (date-time) | — |
| deletedAt | string,null (date-time) | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/merchant/listings/{id}/wantsReplace 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
| id | path | required |
Request body
| Field | Type | Required |
|---|---|---|
| wants | object[] | yes |
Response (200)
[
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/listings/{id}/wantsRead a listing's wants array
curl -X GET https://api.tbbnetwork.com/v1/listings/{id}/wants \
-H "Authorization: Bearer sk_sandbox_..." \Parameters
| id | path | required |
Response (200)
[
{
"kind": "GOODS",
"details": {
"make": "Toyota",
"yearMin": 2015,
"mileageMax": 100000,
"mileageUnit": "km"
},
"category": "category",
"subcategory": null,
"brand": null,
"note": null,
"minCondition": "New",
"imageUrl": null
}
]/v1/merchant/feed-sourceThis 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
| 404 | No 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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/merchant/feed-sourceCreate 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
| Field | Type | Required |
|---|---|---|
| feedUrl | string | yes |
| feedFormat | XML | CSV | yes |
| feedUsername | string | — |
| feedPassword | string | — |
| defaultSellerId | string (uuid) | — |
| enabled | boolean | — |
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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/merchant/feed-source/fetch-nowManual 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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/listings/{id}Get a listing
curl -X GET https://api.tbbnetwork.com/v1/listings/{id} \
-H "Authorization: Bearer sk_sandbox_..." \Parameters
| id | path | required |
Response (200)
| Field | Type | Required |
|---|---|---|
| id | string (uuid) | — |
| merchantId | string,null (uuid) | — |
| merchantListingRef | stringnull | — |
| sellerId | string (uuid) | — |
| title | string | — |
| category | string | — |
| subcategory | stringnull | — |
| brand | stringnull | — |
| model | stringnull | — |
| size | stringnull | — |
| condition | stringnull | — |
| year | integernull | — |
| originalPrice | number | — |
| currency | string | — |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | — |
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED | — |
| listingType | SALE | TRADE | BOTH | — |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | | — |
| preferredSpaceBranchId | string,null (uuid) | — |
| city | stringnull | — |
| region | stringnull | — |
| locationLabel | stringnull | — |
| locationCountry | stringnull | — |
| sellerIdentityVerified | boolean | — |
| publicNow | boolean | — |
| notPublicReason | PENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string,null (uuid) | — |
| sellerStoreSlug | stringnull | — |
| viewerIsOwner | boolean | — |
| merchantItemUrl | string,null (uri) | — |
| requestedAmount | numbernull | — |
| willingToPay | numbernull | — |
| note | stringnull | — |
| images | string[] | — |
| wants | object[] | — |
| createdAt | string (date-time) | — |
| updatedAt | string (date-time) | — |
| syncedAt | string (date-time) | — |
| deletedAt | string,null (date-time) | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/listingsDirectory-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
| category | query | optional |
| merchantId | query | optional |
| visibility | query | optional |
Response (200)
| Field | Type | Required |
|---|---|---|
| data | object[] | — |
| nextCursor | stringnull | — |
| total | integer | — |
| page | integer | — |
| pageCount | integer | — |
| matchedFor | objectnull | — |
| categories | object[] | — |
| subcategories | object[] | — |
{
"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
}
]
}/v1/listings/individualCreate 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
| Field | Type | Required |
|---|---|---|
| title | string | yes |
| category | string | yes |
| subcategory | string | — |
| brand | string | — |
| model | string | — |
| size | string | — |
| condition | string | — |
| year | integer | — |
| originalPrice | number | yes |
| currency | string | — |
| listingType | SALE | TRADE | BOTH | yes |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string (uuid) | — |
| preferredSpaceBranchId | string (uuid) | — |
| city | string | — |
| region | string | — |
| latitude | number | — |
| longitude | number | — |
| requestedAmount | number | — |
| willingToPay | number | — |
| note | string | — |
| images | string[] | yes |
| wants | object[] | — |
Response (200)
| Field | Type | Required |
|---|---|---|
| id | string (uuid) | — |
| merchantId | string,null (uuid) | — |
| merchantListingRef | stringnull | — |
| sellerId | string (uuid) | — |
| title | string | — |
| category | string | — |
| subcategory | stringnull | — |
| brand | stringnull | — |
| model | stringnull | — |
| size | stringnull | — |
| condition | stringnull | — |
| year | integernull | — |
| originalPrice | number | — |
| currency | string | — |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | — |
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED | — |
| listingType | SALE | TRADE | BOTH | — |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | | — |
| preferredSpaceBranchId | string,null (uuid) | — |
| city | stringnull | — |
| region | stringnull | — |
| locationLabel | stringnull | — |
| locationCountry | stringnull | — |
| sellerIdentityVerified | boolean | — |
| publicNow | boolean | — |
| notPublicReason | PENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string,null (uuid) | — |
| sellerStoreSlug | stringnull | — |
| viewerIsOwner | boolean | — |
| merchantItemUrl | string,null (uri) | — |
| requestedAmount | numbernull | — |
| willingToPay | numbernull | — |
| note | stringnull | — |
| images | string[] | — |
| wants | object[] | — |
| createdAt | string (date-time) | — |
| updatedAt | string (date-time) | — |
| syncedAt | string (date-time) | — |
| deletedAt | string,null (date-time) | — |
{
"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"
}/v1/listings/mineEvery 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)
[
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/listings/individual/{id}/availabilitySet 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
| id | path | required |
Request body
| Field | Type | Required |
|---|---|---|
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | yes |
Response (200)
| Field | Type | Required |
|---|---|---|
| id | string (uuid) | — |
| merchantId | string,null (uuid) | — |
| merchantListingRef | stringnull | — |
| sellerId | string (uuid) | — |
| title | string | — |
| category | string | — |
| subcategory | stringnull | — |
| brand | stringnull | — |
| model | stringnull | — |
| size | stringnull | — |
| condition | stringnull | — |
| year | integernull | — |
| originalPrice | number | — |
| currency | string | — |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | — |
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED | — |
| listingType | SALE | TRADE | BOTH | — |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | | — |
| preferredSpaceBranchId | string,null (uuid) | — |
| city | stringnull | — |
| region | stringnull | — |
| locationLabel | stringnull | — |
| locationCountry | stringnull | — |
| sellerIdentityVerified | boolean | — |
| publicNow | boolean | — |
| notPublicReason | PENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string,null (uuid) | — |
| sellerStoreSlug | stringnull | — |
| viewerIsOwner | boolean | — |
| merchantItemUrl | string,null (uri) | — |
| requestedAmount | numbernull | — |
| willingToPay | numbernull | — |
| note | stringnull | — |
| images | string[] | — |
| wants | object[] | — |
| createdAt | string (date-time) | — |
| updatedAt | string (date-time) | — |
| syncedAt | string (date-time) | — |
| deletedAt | string,null (date-time) | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/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
| id | path | required |
Request body
| Field | Type | Required |
|---|---|---|
| title | string | yes |
| category | string | yes |
| subcategory | string | — |
| brand | string | — |
| model | string | — |
| size | string | — |
| condition | string | — |
| year | integer | — |
| originalPrice | number | yes |
| currency | string | — |
| listingType | SALE | TRADE | BOTH | yes |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string (uuid) | — |
| preferredSpaceBranchId | string (uuid) | — |
| city | string | — |
| region | string | — |
| latitude | number | — |
| longitude | number | — |
| requestedAmount | number | — |
| willingToPay | number | — |
| note | string | — |
| images | string[] | yes |
| wants | object[] | — |
Response (200)
| Field | Type | Required |
|---|---|---|
| id | string (uuid) | — |
| merchantId | string,null (uuid) | — |
| merchantListingRef | stringnull | — |
| sellerId | string (uuid) | — |
| title | string | — |
| category | string | — |
| subcategory | stringnull | — |
| brand | stringnull | — |
| model | stringnull | — |
| size | stringnull | — |
| condition | stringnull | — |
| year | integernull | — |
| originalPrice | number | — |
| currency | string | — |
| visibility | PRIVATE | GLOBAL | BOTH | ENTERPRISE | — |
| status | ACTIVE | RESERVED | SOLD | UNAVAILABLE | DELETED | — |
| listingType | SALE | TRADE | BOTH | — |
| deliveryMethod | LOCAL_PICKUP | SHIPPING | BOTH | | — |
| preferredSpaceBranchId | string,null (uuid) | — |
| city | stringnull | — |
| region | stringnull | — |
| locationLabel | stringnull | — |
| locationCountry | stringnull | — |
| sellerIdentityVerified | boolean | — |
| publicNow | boolean | — |
| notPublicReason | PENDING_REVIEW | NOT_LAUNCHED | NOT_ACTIVE | | — |
| kind | GOODS | VEHICLE | PROPERTY | SERVICE | TICKET | — |
| details | object | — |
| preferredSpaceId | string,null (uuid) | — |
| sellerStoreSlug | stringnull | — |
| viewerIsOwner | boolean | — |
| merchantItemUrl | string,null (uri) | — |
| requestedAmount | numbernull | — |
| willingToPay | numbernull | — |
| note | stringnull | — |
| images | string[] | — |
| wants | object[] | — |
| createdAt | string (date-time) | — |
| updatedAt | string (date-time) | — |
| syncedAt | string (date-time) | — |
| deletedAt | string,null (date-time) | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/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
| id | path | required |
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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/waitlist/demo-requestsRequest 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
| Field | Type | Required |
|---|---|---|
| name | string | yes |
| string (email) | yes | |
| businessName | string | yes |
| website | string | — |
| phone | string | — |
| role | string | — |
| services | string[] | yes |
| message | string | — |
| source | string | — |
Response (202)
| Field | Type | Required |
|---|---|---|
| message | string | — |
{
"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.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "A human-readable description of what went wrong.",
"requestId": "req_01hxyz..."
}
}/v1/listings/{id}/visitA 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
| id | path | required |
| v | query | optional |
Possible errors
| 404 | The listing has no store page |
