Reference

Marketplace API

Updated 1 Oct 2026

On this page

For agents

Load this page when: you need to find marketplace books or add or remove one over HTTP

  • Browse with GET /api/marketplace/browse. It needs no key and sits outside /api/v1.
  • Add a book only when the user wants it. It uses one library slot.
  • Pass the listing id, not the book id, to subscribe and unsubscribe.

The marketplace is the public shelf of books other people published. Adding a book is free and takes no payment. See Marketplace.

Browse listings

GET https://heytrove.ai/api/marketplace/browse

Lists public listings. This endpoint is not under /api/v1 and needs no key. Anonymous responses may be cached for a short time.

Parameters

NameInTypeRequiredConstraintsMeaning
searchquerystringnononeSearch query.
tagquerystringnotag slugShow one tag only.
categoryquerystringnoa listing categoryShow one category. An unknown value returns 400 with the allowed list.
sortquerystringnonewest, popular or azSort order. Default newest.
pagequeryintegerno1 to 10,000Page number. Default 1.
limitqueryintegerno1 to 100Page size. Default 20.
sincequerystringnoISO-8601 dateOnly listings submitted after this time.
proOnlyquerybooleannotrueOnly Pro listings.

Request

bash
curl "https://heytrove.ai/api/marketplace/browse?search=postgres&sort=popular&limit=5"

Response

json
{
  "listings": [
    {
      "id": "cmlst123",
      "slug": "use-the-index-luke",
      "category": null,
      "proOnly": false,
      "tags": [{ "name": "Postgres", "slug": "postgres" }],
      "subscriberCount": 120,
      "createdAt": "2026-09-01T09:00:00.000Z",
      "item": {
        "title": "Use The Index, Luke",
        "description": null,
        "author": "Markus Winand",
        "sourceType": "pdf",
        "pageCount": 42
      },
      "seller": { "name": "Markus", "imageUrl": null }
    }
  ],
  "total": 1,
  "page": 1,
  "totalPages": 1
}

Errors

StatusMessageFix
400Invalid `since`: expected an ISO-8601 date such as 2026-09-01 or 2026-09-01T00:00:00ZFix the date.
400Invalid `category` Use a value from the allowed list in the body.

CLI equivalent: trove marketplace browse.

Add a listing to your library

POST https://heytrove.ai/api/v1/marketplace/subscribe

Adds a listed book to your library. It uses one library slot. A Pro-only listing can be added on any plan, but it returns a short preview until you upgrade.

Parameters

NameInTypeRequiredConstraintsMeaning
listingIdbodystringyes1 to 64 charactersListing id from browse.

Request

bash
curl https://heytrove.ai/api/v1/marketplace/subscribe \
  -H "Authorization: Bearer trove_your_key" \
  -H "Content-Type: application/json" \
  -d '{"listingId":"cmlst123"}'

Response

json
{ "success": true, "itemId": "cmabc123" }

Errors

StatusMessageCodeFix
400listingId is requirednoneSend listingId.
400Cannot subscribe to your own listingnoneYou already own it.
404Listing not foundnoneCheck the id.
409Already subscribed to this listingCONFLICTNothing to do. The body has the itemId.
403Your library is full. Upgrade to add more items.PLAN_LIMIT_EXCEEDEDSee Errors.
429Too many library writes in a short window — wait a minute and retry.RATE_LIMITEDWait for Retry-After.

CLI equivalent: trove marketplace subscribe.

Remove a listing from your library

DELETE https://heytrove.ai/api/v1/marketplace/subscribe

Removes a marketplace book from your library and frees one slot. You can add it again while it is listed.

Parameters

NameInTypeRequiredConstraintsMeaning
listingIdbodystringyes1 to 64 charactersListing to remove.

Request

bash
curl -X DELETE https://heytrove.ai/api/v1/marketplace/subscribe \
  -H "Authorization: Bearer trove_your_key" \
  -H "Content-Type: application/json" \
  -d '{"listingId":"cmlst123"}'

Response

json
{ "success": true }

Errors

StatusMessageCodeFix
400listingId is requirednoneSend listingId.
404No subscription found for this listingNOT_FOUNDYou have not added this listing.

CLI equivalent: trove marketplace unsubscribe.

    Marketplace API | Trove