API - Überblick

API - Verbindung und Autorisierung

Richte API-Schlüssel ein, prüfe die Verbindung und lerne, wie du Fehler und Anfragelimits behandelst.

Endpunktübersicht

MethodeEndpunktBeschreibungZugriff
GET/public-api/healthzStatusprüfung des Dienstes.öffentlich
GET/public-api/v1/auth/checkValidiert Zugangsdaten und gibt Shop, Berechtigungsbereiche und Tarifmöglichkeiten zurück.beliebige authentifizierte Zugangsdaten

Authentifizierung und Basis-URL

https://alterproduct.com/public-api/v1

Erstelle API-Zugangsdaten in den E-Commerce-Einstellungen. Das Access Token wird nur einmal angezeigt. Speichere es daher sofort im sicheren Geheimnisspeicher deines Backends.

Bewahre Access Key und Access Token auf deinem Server auf. Authentifizierte Endpunkte lehnen vom Browser ausgehende Aufrufe mit Origin- oder Referer-Headern ab.

Zugangsdaten können auf Berechtigungsbereiche beschränkt werden. Prüfe mit GET /auth/check den aktiven Shop, die Tarifmöglichkeiten und die für die Zugangsdaten zurückgegebenen Berechtigungsbereiche.

x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
ParameterErforderlichDetails
x-alter-access-keyjaÖffentliche Kennung der Zugangsdaten.
x-alter-access-tokenjaGeheimes Token, das zum Zugriffsschlüssel gehört.
x-alter-client-fingerprintneinOptionaler stabiler Fingerabdruck zur Begrenzung von Einbettungssitzungsanfragen.
Authorizationnur LaufzeitVon POST /embed/session zurückgegebenes Bearer-Token für /runtime/bootstrap.

Verbindungstest

Nutze den Authentifizierungsendpunkt, bevor du Synchronisierung oder Einbettungsfunktionen in einer Live-Integration aktivierst.

GET https://alterproduct.com/public-api/v1/auth/check

Beispielanfrage (fetch)

const response = await fetch('https://alterproduct.com/public-api/v1/auth/check', {
  method: 'GET',
  headers: {
    'x-alter-access-key': process.env.ALTER_ACCESS_KEY,
    'x-alter-access-token': process.env.ALTER_ACCESS_TOKEN
  }
});

const payload = await response.json();

if (!response.ok) {
  throw new Error(payload?.code || payload?.error || `Alter API ${response.status}`);
}

console.log(payload);

Beispielantwort

{
  "ok": true,
  "message": "success",
  "storefrontId": 12,
  "userOwnerId": 34,
  "credentialId": 56,
  "scopes": ["orders:read", "orders:write", "products:read"],
  "plan": {
    "requiredPlan": "Business",
    "currentPlanName": "Business",
    "eligible": true,
    "runtimeFlags": {
      "viewer": true,
      "configurator": true,
      "customizer": true
    },
    "limits": {
      "activeRuntimeBindingsLimit": 100,
      "monthlyReassignmentLimit": 1000,
      "monthlyEmbedTokenLimit": 50000
    }
  }
}

Die folgende Hilfsfunktion wird in den weiteren Beispielen verwendet. Sie nutzt einfaches fetch und läuft in Node.js 18+ oder jeder Serverlaufzeit, die fetch bereitstellt.

const ALTER_API_BASE = 'https://alterproduct.com/public-api/v1';

const authHeaders = {
  'x-alter-access-key': process.env.ALTER_ACCESS_KEY,
  'x-alter-access-token': process.env.ALTER_ACCESS_TOKEN
};

async function alterFetch(path, options = {}) {
  const response = await fetch(`${ALTER_API_BASE}${path}`, {
    ...options,
    headers: {
      ...authHeaders,
      ...(options.body ? { 'Content-Type': 'application/json' } : {}),
      ...options.headers
    }
  });

  const payload = await response.json().catch(() => null);

  if (!response.ok) {
    throw new Error(payload?.code || payload?.error || `Alter API ${response.status}`);
  }

  return payload;
}

Fehler und Anfragelimits

Die meisten Controller-Fehler werden als Antwort mit code vereinheitlicht. Authentifizierungs-Middleware und Anfragelimiter können stattdessen eine Antwort mit error zurückgeben.

// Controller error
{
  "code": "assetCatalog.invalidType"
}

// Auth middleware or rate limit
{
  "error": "Unauthorized"
}

{
  "error": "Too Many Requests"
}
TypLimitZeitfenster
Global600 Anfragen60 Sekunden
GET /auth/check60 Anfragen60 Sekunden
Bestellungen lesen/Produkte lesen300 Anfragen60 Sekunden
Bestellungen schreiben/Einbettungssitzungen/Laufzeitzuordnungen120 Anfragen60 Sekunden
Assets/Designimporte lesen180 Anfragen60 Sekunden
Schriftarten300 Anfragen60 Sekunden
WP-Verbindungsaustausch30 Anfragen60 Sekunden
GET /model-generator/*600 Anfragen60 Sekunden