Stel API-sleutels in, test de verbinding en ontdek hoe je omgaat met fouten en aanvraaglimieten.
https://alterproduct.com/public-api/v1
Maak API-inloggegevens aan in het paneel met e-commerce-instellingen. De Access Token wordt één keer getoond, dus sla deze direct op in de beveiligde opslag van je backend.
Bewaar de Access Key en Access Token op je server. Geauthenticeerde endpoints weigeren browserverzoeken met Origin- of Referer-headers.
Inloggegevens kunnen beperkte machtigingen hebben. Gebruik GET /auth/check om de actieve winkel, planmogelijkheden en machtigingen van de inloggegevens te controleren.
x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
| Parameter | Verplicht | Details |
|---|
x-alter-access-key | ja | Openbare identificatie van de inloggegevens. |
x-alter-access-token | ja | Geheim token dat bij de toegangssleutel hoort. |
x-alter-client-fingerprint | nee | Optionele vaste vingerafdruk voor de begrenzing van embedsessieverzoeken. |
Authorization | alleen runtime | Bearer-token van POST /embed/session, gebruikt door /runtime/bootstrap. |
Gebruik het authenticatiecontrole-endpoint voordat je synchronisatie of integratiefuncties in een liveomgeving inschakelt.
GET https://alterproduct.com/public-api/v1/auth/check
Voorbeeldverzoek (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);
Voorbeeldantwoord
{
"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
}
}
}
De onderstaande helper wordt in de overige voorbeelden gebruikt. Deze gebruikt gewone fetch en werkt in Node.js 18+ of elke serverruntime die fetch ondersteunt.
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;
}
De meeste controllerfouten worden omgezet in een code-antwoord. Authenticatiemiddleware en verzoekbegrenzers kunnen in plaats daarvan een error-antwoord geven.
// Controller error
{
"code": "assetCatalog.invalidType"
}
// Auth middleware or rate limit
{
"error": "Unauthorized"
}
{
"error": "Too Many Requests"
}
| Type | Limiet | Tijdsvenster |
|---|
Globaal | 600 verzoeken | 60 seconden |
GET /auth/check | 60 verzoeken | 60 seconden |
Bestellingen lezen/producten lezen | 300 verzoeken | 60 seconden |
Bestellingen schrijven/embedsessies/runtimekoppelingen | 120 verzoeken | 60 seconden |
Assets/ontwerpimports lezen | 180 verzoeken | 60 seconden |
Lettertypen | 300 verzoeken | 60 seconden |
WP-verbinding uitwisselen | 30 verzoeken | 60 seconden |
GET /model-generator/* | 600 verzoeken | 60 seconden |