CLICKWISE DevelopersExplore the product catalog →
Publisher API · v1

Products for your next great post.

Search the Clickwise GTIN catalog, refresh prices and stock, and publish links tracked to your own publisher account. Built for content and comparison integrations, including Content Egg.

Base URL
https://partners.clickwise.net/api/v1/publisher/

Only currently approved programs and authorized feed markets are returned. A product URL is always a Clickwise link attributed to the calling publisher. Merchant source links, other publishers’ data and network financial terms are never part of a product response.

1. Use your publisher API key

Use the existing API key from your Clickwise publisher account—the same credential used by the affiliate MCP catalog tools. Product feed access must be active on your account. If you need access or a nonpayable integration demo, contact partnerships@clickwise.net. A demo key works only with this Publisher Products API (search and lookup): every other Clickwise API and the MCP catalog tools answer 403 to it, and a demo account never applies to programs.

Send either X-API-Key: YOUR_PUBLISHER_KEY or Authorization: Bearer YOUR_PUBLISHER_KEY over HTTPS. Keep this key on your server (for example, in the WordPress plugin’s server configuration). Do not embed it in a public page, URL or browser script. Portal session cookies and operator keys do not authenticate this API.

curl --get 'https://partners.clickwise.net/api/v1/publisher/products/' \
  -H "X-API-Key: $CLICKWISE_PUBLISHER_KEY" \
  --data-urlencode 'q=running shoes' \
  --data-urlencode 'country=ES' \
  --data-urlencode 'limit=20'

GET /api/v1/publisher/products/

ParameterMeaning
q · requiredCase-insensitive phrase contained in the product title. 3–200 characters.
countryOptional ISO alpha-2 market, such as ES, DE or GB. UK is accepted as an alias for GB. Omit it to search the markets enabled for your product-feed access; an account without a market list gets 400 and must send country.
merchantOptional positive integer: the Clickwise merchant/campaign ID returned in merchant.id. An unapproved merchant yields no products.
limit1–100 products; default 20.
offset0–10000; default 0. Follow next_offset, keeping all other filters unchanged.

Search returns fresh, in-stock products only. Results are ordered by stable product ID. Pagination reflects the current catalog; changing inventory or permissions can move items between pages. No expensive total count is calculated.

3. Refresh products in existing posts

GET /api/v1/publisher/products/lookup/

Supply ids, gtins, or both: comma-separated lists with 1–100 identifiers combined. A product ID is the opaque string returned in id; keep GTINs as strings to preserve leading zeroes. GTIN checksums are validated. Both lists are combined as a union; products are not duplicated.

curl --get 'https://partners.clickwise.net/api/v1/publisher/products/lookup/' \
  -H "Authorization: Bearer $CLICKWISE_PUBLISHER_KEY" \
  --data-urlencode 'ids=12345,12346' \
  --data-urlencode 'gtins=4006381333931,5901234123457' \
  --data-urlencode 'country=DE' \
  --data-urlencode 'limit=100'

The same country, merchant, limit and offset parameters apply; without country, lookup covers every authorized market of the requested items. A GTIN may match several merchants and markets, so follow next_offset even for a small batch. Lookup includes fresh out-of-stock and preorder/backorder products. Refresh availability and price together. Missing, expired, removed or unauthorized items are omitted identically; an empty result does not assert that a product is in stock or that the ID exists. Remove or hide stale offers in your integration rather than retaining an old price indefinitely.

4. Read the response

{
  "products": [{
    "id": "12345",
    "gtin": "4006381333931",
    "title": "Example running shoes",
    "price": "79.9500",
    "currency": "EUR",
    "image": "https://merchant.example/images/shoes.jpg",
    "url": "https://partners.clickwise.net/dl/gfEXAMPLE/?sub_id=feed_42_es",
    "merchant": {"id": 123, "name": "Example Store"},
    "availability": "in_stock",
    "country": "ES",
    "updated_at": "2026-09-28T08:00:00+00:00"
  }],
  "count": 1,
  "limit": 20,
  "offset": 0,
  "next_offset": null,
  "freshness_hours": 48
}

This is an illustrative response; identifiers and links above are placeholders. price is a decimal string in currency, not a floating-point number. image may be empty when no safe image is available. Stock values come from the validated feed (in_stock, out_of_stock, preorder, backorder). updated_at is when the source offer was last seen, not the request time. The canonical GTIN/program/country ID survives normal price and stock refreshes; a removed and later recreated catalog row can have a new ID.

Use url as the product link without replacing its attribution. A result does not approve any new program. Account status, assignments, channel grants and freshness are checked on every call. Search and lookup query the existing catalog database; they do not trigger network feed downloads.

5. Limits & errors

The default rate is 60 requests per minute per publisher account, shared between search and lookup and between both authentication headers; a rotated key keeps the same budget. Requests are also limited per client address before the key is checked. Response pages contain at most 100 items. Catalog rows must have been seen within 48 hours and their source freshness deadline must still be valid. Responses use Cache-Control: private, no-store.

StatusWhat to do
200Read products and follow next_offset until null. An empty array is a valid result.
400Correct invalid, unknown or repeated parameters, invalid GTINs, or exceeded bounds. Send country if the response asks for it.
401Supply an active publisher API key. A revoked key or inactive account cannot authenticate.
403Product feed access is not active for this publisher.
405Use GET; this API does not accept product writes.
429Wait for the Retry-After response header (seconds), then retry with backoff.
503Temporary catalog/rate-limit dependency failure, a query over its time budget, or your links being refreshed at that moment. Retry with backoff; no untracked fallback links are returned.
{"detail": "Product feed access is not active for this publisher."}

Keys can be disabled by Clickwise; revocation applies to the next request. Search and lookup never change approvals, billing, commissions or payouts; they only create your own tracked link for each returned product. Demo accounts use real scoped catalog data and tracked links but are marked as test and nonpayable accounts, and their keys are limited to this API. Do not use a demo key for revenue traffic.