Configurez les clés API, testez la connexion et découvrez la gestion des erreurs et des limites de requêtes.
https://alterproduct.com/public-api/v1
Créez des identifiants API dans le panneau des paramètres e-commerce. Le jeton d’accès n’est affiché qu’une fois : enregistrez-le immédiatement dans le stockage sécurisé des secrets de votre serveur.
Conservez la clé d’accès et le jeton d’accès sur votre serveur. Les points d’accès authentifiés rejettent les appels provenant du navigateur qui incluent les en-têtes Origin ou Referer.
Les identifiants peuvent avoir des portées limitées. Utilisez GET /auth/check pour vérifier la boutique active, les fonctionnalités de l’offre et les portées renvoyées pour l’identifiant.
x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
| Paramètre | Obligatoire | Détails |
|---|
x-alter-access-key | oui | Identifiant public des accès. |
x-alter-access-token | oui | Jeton secret associé à la clé d’accès. |
x-alter-client-fingerprint | non | Empreinte stable facultative pour la limitation des requêtes de session d’intégration. |
Authorization | environnement d’exécution uniquement | Jeton Bearer renvoyé par POST /embed/session, utilisé par /runtime/bootstrap. |
Utilisez le point d’accès de vérification de l’authentification avant d’activer la synchronisation ou les fonctions d’intégration en production.
GET https://alterproduct.com/public-api/v1/auth/check
Exemple de requête (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);
Exemple de réponse
{
"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
}
}
}
La fonction utilitaire ci-dessous est utilisée dans les exemples suivants. Elle repose sur fetch natif et peut s’exécuter dans Node.js 18+ ou dans tout environnement serveur fournissant fetch.
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;
}
La plupart des erreurs des contrôleurs sont normalisées en réponses code. Les intergiciels d’authentification et les limiteurs de requêtes peuvent renvoyer une réponse error à la place.
// Controller error
{
"code": "assetCatalog.invalidType"
}
// Auth middleware or rate limit
{
"error": "Unauthorized"
}
{
"error": "Too Many Requests"
}
| Type | Limite | Période |
|---|
Global | 600 requêtes | 60 secondes |
GET /auth/check | 60 requêtes | 60 secondes |
Lecture des commandes/produits | 300 requêtes | 60 secondes |
Écriture des commandes/sessions d’intégration/associations d’exécution | 120 requêtes | 60 secondes |
Lecture des ressources/imports de designs | 180 requêtes | 60 secondes |
Polices | 300 requêtes | 60 secondes |
Échange de connexion WP | 30 requêtes | 60 secondes |
GET /model-generator/* | 600 requêtes | 60 secondes |