export async function POST(request: Request) {
const userId = getAuthenticatedUser(request);
// Check if user has remaining quota
const entitlement = await billing.checkEntitlement(userId, "api_calls");
if (!entitlement.has_access) {
return Response.json({ error: "Plan upgrade required" }, { status: 403 });
}
if (entitlement.usage !== null && entitlement.limit !== null && entitlement.usage >= entitlement.limit) {
return Response.json({ error: "API call limit reached" }, { status: 429 });
}
// Do the work
const result = await processApiCall(request);
// Track the usage
await billing.trackUsage({
customerId: userId,
featureKey: "api_calls",
quantity: 1,
});
return Response.json(result);
}