Contents
Installation
Connectivity check for the installation behind a public key.
Base URL, authentication and conventions of this API are on the Collector API page.
/configCheck the installation is connected
Returns the installation behind the key: the script uses it to know it is connected, and you can open it
from the browser address bar while testing. For this GET the origin is taken from Origin, or from
Referer when Origin is absent. A paused installation answers 403.
Rate limits. Shared with all Collector operations: 120 requests per minute per IP, 20,000 per minute per key.
key query parameter or X-Nucleo-Key headerHeaders
OriginstringrequiredRequired. Browsers set it; servers and tools must send it (on GET,
Refereris accepted instead). Its host must equal one of the installation's domains, or be a subdomain of a wildcard domain (*.acme.examplematchesshop.acme.exampleandeu.shop.acme.example, notacme.example). A wildcard must sit under your own registrable domain: it is refused on a public suffix (*.com,*.co.uk) and on shared platforms where every subdomain belongs to someone else (for example*.myshopify.com,*.vercel.app,*.netlify.app,*.github.io); such a wildcard saved earlier matches nothing. Register those hosts by their exact name.nullis accepted only when the installation has the Web Pixel enabled. An origin that does not match answers403.Example:https://shop.acme.exampleRefererstringOn GET operations only, used for the origin check when
Originis absent.Example:https://shop.acme.example/products/classic-tee-black
Responses
200The installation is active and the origin is allowed.application/json
HeadersAccess-Control-Allow-OriginEchoes the requestOriginwhen it was present and allowed.VaryAlwaysOrigin.
oktruerequiredstorestringrequiredStore slug.
Example:acmeinstallationstringrequiredInstallation name.
Example:Acme EU storefrontstatusstringrequiredAlways
active(a paused installation answers403).One ofactivelocalesarray of stringrequiredpixelEnabledbooleanrequiredWhether
Origin: null(the checkout Web Pixel) is accepted.
403The installation is paused, or the origin is not one of its domains. Both answer the same body; the exact reason is visible to the merchant in Catalog › Shoppers › Test events. application/json
messagestringrequired
404The key is missing, malformed or unknown (no detail is given on purpose).application/json
messagestringrequired
409The store behind the key is not provisioned yet.application/json
messagestringrequired
429Rate limit exceeded (120 requests per minute per IP, or 20,000 per minute per key). Nothing is written. application/json
HeadersRetry-AfterSeconds to wait before retrying.X-RateLimit-LimitRequests allowed per minute for the client IP.X-RateLimit-RemainingAlways0on a 429.X-RateLimit-ResetUnix timestamp at which the window resets.
messagestringrequired
curl -X GET "https://api-catalog.nucleoplatform.com/api/collect/v1/config?key=$NUCLEO_COLLECTOR_KEY" \
-H 'Origin: https://shop.acme.example' \
-H 'Referer: https://shop.acme.example/products/classic-tee-black' \
-H 'Accept: application/json'const res = await fetch(`https://api-catalog.nucleoplatform.com/api/collect/v1/config?key=${process.env.NUCLEO_COLLECTOR_KEY}`, {
method: "GET",
headers: {
Origin: "https://shop.acme.example",
Referer: "https://shop.acme.example/products/classic-tee-black",
Accept: "application/json",
},
});
const data = await res.json();
console.log(res.status, data);<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-catalog.nucleoplatform.com/api/collect/v1/config?key=' . getenv('NUCLEO_COLLECTOR_KEY'), [
'headers' => [
'Origin' => 'https://shop.acme.example',
'Referer' => 'https://shop.acme.example/products/classic-tee-black',
'Accept' => 'application/json',
],
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo $response->getBody();{
"ok": true,
"store": "acme",
"installation": "Acme EU storefront",
"status": "active",
"locales": [
"it",
"en"
],
"pixelEnabled": true
}{
"message": "Forbidden."
}{
"message": "Not found."
}{
"message": "Store is not ready."
}{
"message": "Too Many Attempts."
}