Configure as chaves de API, teste a ligação e conheça o tratamento de erros e os limites de pedidos à API.
https://alterproduct.com/public-api/v1
Crie credenciais de API no painel de configurações de e-commerce. O Access Token é exibido uma única vez; por isso, guarde-o imediatamente no armazenamento de segredos do seu backend.
Mantenha a Access Key e o Access Token no seu servidor. Os endpoints autenticados rejeitam chamadas originadas no navegador que incluam os cabeçalhos Origin ou Referer.
As credenciais podem ter escopos limitados. Use GET /auth/check para verificar a loja ativa, os recursos do plano e os escopos retornados para a credencial.
x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
| Parâmetro | Obrigatório | Detalhes |
|---|
x-alter-access-key | sim | Identificador público da credencial. |
x-alter-access-token | sim | Token secreto associado à chave de acesso. |
x-alter-client-fingerprint | não | Identificador estável opcional para limitar solicitações de sessões de incorporação. |
Authorization | somente runtime | Token Bearer retornado por POST /embed/session, usado por /runtime/bootstrap. |
Use o endpoint de verificação de autenticação antes de ativar a sincronização ou os recursos de incorporação numa integração em produção.
GET https://alterproduct.com/public-api/v1/auth/check
Exemplo de solicitação (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);
Exemplo de resposta
{
"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
}
}
}
A função auxiliar abaixo é usada nos demais exemplos. Ela usa fetch simples e pode ser executada no Node.js 18+ ou em qualquer ambiente de servidor que ofereça 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;
}
A maioria dos erros dos controladores é normalizada para uma resposta code. O middleware de autenticação e os limitadores de solicitações podem retornar uma resposta error.
// Controller error
{
"code": "assetCatalog.invalidType"
}
// Auth middleware or rate limit
{
"error": "Unauthorized"
}
{
"error": "Too Many Requests"
}
| Tipo | Limite | Janela |
|---|
Global | 600 solicitações | 60 segundos |
GET /auth/check | 60 solicitações | 60 segundos |
Leitura de pedidos/produtos | 300 solicitações | 60 segundos |
Gravação de pedidos/sessões de incorporação/associações de runtime | 120 solicitações | 60 segundos |
Leitura de recursos/importações de designs | 180 solicitações | 60 segundos |
Fontes | 300 solicitações | 60 segundos |
Troca de conexão do WP | 30 solicitações | 60 segundos |
GET /model-generator/* | 600 solicitações | 60 segundos |