const res = await fetch("https://api.rewards.so/trigger", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ triggerKey, walletAddress, pointSystemId }),
});
if (!res.ok) {
const { error } = await res.json();
switch (res.status) {
case 401:
throw new Error(`Auth failed: ${error}`);
case 403:
// Inactive trigger or blacklisted wallet — handle gracefully
console.warn(`Access denied: ${error}`);
return;
case 404:
throw new Error(`Trigger "${triggerKey}" not configured`);
case 429:
const retryAfter = res.headers.get("Retry-After");
throw new Error(`Rate limited. Retry after ${retryAfter}s`);
default:
throw new Error(`Unexpected error: ${error}`);
}
}