DEV Community

Alex Spinov
Alex Spinov

Posted on

Stigg Has a Free API: Manage SaaS Pricing, Plans, and Feature Flags Without Touching Your Code

Your SaaS has three pricing tiers. Marketing wants to test a fourth. Sales needs a custom enterprise plan. Product wants to run a feature flag experiment on 10% of free users. Every change requires a backend deployment, a database migration, and a week of engineering time. There's a better way.

Stigg gives you an API to manage all your pricing, entitlements, and feature access — without touching your code every time business requirements change.

What Stigg Actually Does

Stigg is a pricing and packaging platform for SaaS companies. It separates pricing logic from your code: you define plans, features, and entitlements in Stigg's dashboard or API, and your application queries Stigg at runtime to check what a customer is entitled to.

The result: marketing can change pricing tiers without deploying code. Sales can create custom enterprise packages in minutes. You can run pricing experiments freely. Feature access becomes a data problem, not an engineering problem.

Stigg offers a free tier (up to 1,000 customers, no monthly fee) and integrates with Stripe for payment processing. SDKs cover Node.js, Python, and React, plus a GraphQL API for everything else.

Quick Start: Stigg API

Sign up at stigg.io and get your server-side API key from Settings → API Keys.

export STIGG_API_KEY="your_server_api_key"

# Check customer entitlements
curl -X POST https://api.stigg.io/graphql \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $STIGG_API_KEY" \
  -d '{
    "query": "{ getCustomerByRefId(refId: \"customer-123\") { entitlements { feature { refId displayName } hasAccess usageLimit currentUsage } } }"
  }' | jq '.data.getCustomerByRefId.entitlements[] | {feature: .feature.displayName, access: .hasAccess, limit: .usageLimit, used: .currentUsage}'
Enter fullscreen mode Exit fullscreen mode

Using the Node.js SDK:

const { Stigg } = require("@stigg/node-server-sdk");

const stigg = await Stigg.initialize({
  apiKey: process.env.STIGG_SERVER_API_KEY
});

const entitlement = await stigg.getMeteredEntitlement({
  customerId: "customer-123",
  featureId: "feature-api-calls"
});

console.log(entitlement.hasAccess);    // true/false
console.log(entitlement.usageLimit);   // 10000
console.log(entitlement.currentUsage); // 4532

await stigg.reportUsage({
  customerId: "customer-123",
  featureId: "feature-api-calls",
  value: 1
});
Enter fullscreen mode Exit fullscreen mode

3 Practical Use Cases

1. Feature Gating Without Scattered Plan Checks

Replace scattered if (user.plan === 'pro') with a single source of truth:

const canExport = await stigg.getBooleanEntitlement({
  customerId: req.user.customerId,
  featureId: "feature-csv-export"
});

if (!canExport.hasAccess) {
  return res.status(403).json({ 
    error: "CSV export requires Pro plan",
    upgradeUrl: "/pricing"
  });
}
// Do the export...
Enter fullscreen mode Exit fullscreen mode

When marketing enables CSV export for all plans during a promotion — they flip a switch in the dashboard. Zero engineering work, instant rollout.

2. Metered Billing with Real-Time Limits

For usage-based pricing (API calls, documents processed, seats):

async function processDocument(customerId, documentId) {
  const quota = await stigg.getMeteredEntitlement({
    customerId,
    featureId: "feature-documents-processed"
  });

  if (!quota.hasAccess) {
    throw new Error(`Monthly limit reached. Used: ${quota.currentUsage}/${quota.usageLimit}`);
  }

  const result = await actualDocumentProcessing(documentId);

  await stigg.reportUsage({
    customerId,
    featureId: "feature-documents-processed",
    value: 1,
    idempotencyKey: documentId
  });

  return result;
}
Enter fullscreen mode Exit fullscreen mode

Stigg aggregates usage, enforces limits, and feeds data to Stripe for billing automatically.

3. Custom Enterprise Plans via API

Create bespoke enterprise packages without touching product code:

curl -X POST https://api.stigg.io/graphql \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $STIGG_API_KEY" \
  -d '{
    "query": "mutation { provisionCustomer(input: { customerId: \"enterprise-acme\", email: \"cto@acme.com\", subscriptionParams: { planId: \"plan-enterprise\", unitQuantity: 50 } }) { customer { refId } subscription { status } } }"
  }'
Enter fullscreen mode Exit fullscreen mode

ACME gets their custom 50-seat enterprise plan in seconds. No engineer wrote a single ACME-specific line of code.

Why This Matters

The average SaaS startup changes pricing 2-3 times per year. With standard approaches each change requires engineering sprints and deployments that take weeks. With Stigg, pricing becomes a business configuration problem, not a software project.

The deeper value: Stigg forces you to model your product's value metrics explicitly. Customers on "Pro" who use 500% of their quota are candidates for Enterprise upsells — Stigg surfaces this data automatically. For early-stage SaaS, the free tier for 1,000 customers lets you experiment with pricing models without the engineering overhead that usually prevents those experiments.


Need custom data extraction or web scraping solutions? I build production-grade scrapers and data pipelines. Check out my Apify actors or email me at spinov001@gmail.com for custom projects.

Follow me for more free API discoveries every week!

Top comments (0)