marketplace

GET /v1/marketplace/{vertical}/{slug}

One live Zinn®, as anyone sees it.

All marketplace endpoints

Authentication

Send an API key as a bearer token. This endpoint does not state a specific permission in the specification, so give your key the least it needs and check the response rather than assuming.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X GET https://api.zinndigital.com/v1/marketplace/{vertical}/{slug} \
  -H "Authorization: Bearer zdk_live_…"

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Anonymous and SINGLE-VARIANT. No user-agent branch, no `Vary: Cookie`, no signed-in mode — docs/83 §3's rule is that Googlebot must see exactly what an anonymous visitor sees. A `domain` renders as `site****.com`; a `url` or `file` does not render at all. The full value is not in the tables this reads. ⛔ An unknown field kind is SKIPPED, never degraded to text: a page served by a newer engine than the deployed bundle must not print `12000` for a money field whose truth is `$120.00`, because a visitor has no way to tell a wrong number from a right one. ⛔ A listing whose stamped schema version has no history row is a **404**, not a render against the type's current head. Quietly showing different facts is worse than showing nothing.

Parameters

NameTypeRequiredWhat it is
vertical (path)stringYes
slug (path)stringYes
locale (query)stringNoRender every operator-authored string — field labels, help text, enum option labels — in this locale, falling back to the source language per string. ⛔ A query parameter rather…

Response

NameTypeRequiredWhat it is
source_localestringNoThe language the **seller** wrote this listing in (#2606 slice E), or `""` when nothing has been translated and the question does not arise. ⭐ The owner's ruling was *"translate…
copy_localestringNoThe language `title` and `summary` are actually IN — the requested locale when a translation was served, `""` when they are the seller's own words. ⛔ Not the locale that was ask…
idstringYes
slugstringYes
titlestringYes
summarystringYes
marketplace_keystringYes
imagesMarketplaceImage[]NoCover first, so a client that renders only the first entry renders the right one without knowing the rule. Empty until the seller uploads one.
storefront_layoutMarketplaceStorefrontLayoutNoHow a vertical's results are laid out on the public storefront. Owner instruction 2026-08-08: *"layouts suited to what is sold — a guest post is a list/table, not a product card…
category_pathstringNo
listing_type_keystringYes
schema_versionintegerYes
vendor_display_namestringYesThe Zinner®'s public name — never the legal name held for identity checks.
price_minorintegerYes
price_max_minorintegerYes
currencystringYes
sales_countintegerYes
published_atstringNo
fieldsMarketplacePublicField[]Yes
packagesMarketplacePackage[]Yes

Errors this endpoint can return

404