JavaScript
import Stigg from '@stigg/typescript';
const client = new Stigg({
apiKey: process.env['STIGG_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const planListResponse of client.v1.plans.list()) {
console.log(planListResponse.id);
}import os
from stigg import Stigg
client = Stigg(
api_key=os.environ.get("STIGG_API_KEY"), # This is the default and can be omitted
)
page = client.v1.plans.list()
page = page.data[0]
print(page.id)package main
import (
"context"
"fmt"
"github.com/stiggio/stigg-go"
"github.com/stiggio/stigg-go/option"
)
func main() {
client := stigg.NewClient(
option.WithAPIKey("My API Key"),
)
page, err := client.V1.Plans.List(context.TODO(), stigg.V1PlanListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
}
package io.stigg.example;
import io.stigg.client.StiggClient;
import io.stigg.client.okhttp.StiggOkHttpClient;
import io.stigg.models.v1.plans.PlanListPage;
import io.stigg.models.v1.plans.PlanListParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
PlanListPage page = client.v1().plans().list();
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
page = stigg.v1.plans.list
puts(page)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Plans;
StiggClient client = new();
PlanListParams parameters = new();
var page = await client.V1.Plans.List(parameters);
await foreach (var item in page.Paginate())
{
Console.WriteLine(item);
}stigg v1:plans list \
--api-key 'My API Key'curl --request GET \
--url https://api.stigg.io/api/v1/plans \
--header 'X-API-KEY: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/plans",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": [
{
"id": "plan-professional",
"displayName": "Professional",
"description": "Professional plan with advanced features",
"productId": "product-starter",
"status": "PUBLISHED",
"pricingType": "PAID",
"billingId": "price_1234567890",
"versionNumber": 1,
"isLatest": true,
"entitlements": [
{
"type": "FEATURE",
"id": "feature-advanced-analytics"
},
{
"type": "CREDIT",
"id": "api-calls"
}
],
"metadata": {},
"createdAt": "2025-10-26T10:00:00.000Z",
"updatedAt": "2025-10-26T10:00:00.000Z",
"parentPlanId": null,
"defaultTrialConfig": {
"duration": 14,
"units": "DAY",
"budget": null,
"trialEndBehavior": null
},
"compatibleAddonIds": []
}
],
"pagination": {
"next": "c9b0a382-5b7d-4d32-9f62-8c4e1a7b3d9f",
"prev": "a1d4e8f2-6c3b-4a9e-b5f7-2d8c9e0f1a3b"
}
}{
"message": "<string>",
"code": "BadUserInput",
"reason": "<string>"
}{
"message": "<string>",
"code": "Unauthenticated"
}{
"message": "<string>",
"code": "IdentityForbidden"
}{
"message": "<string>",
"code": "RateLimitExceeded"
}Plans
Get a list of plans
Retrieves a paginated list of plans in the environment.
GET
/
api
/
v1
/
plans
JavaScript
import Stigg from '@stigg/typescript';
const client = new Stigg({
apiKey: process.env['STIGG_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const planListResponse of client.v1.plans.list()) {
console.log(planListResponse.id);
}import os
from stigg import Stigg
client = Stigg(
api_key=os.environ.get("STIGG_API_KEY"), # This is the default and can be omitted
)
page = client.v1.plans.list()
page = page.data[0]
print(page.id)package main
import (
"context"
"fmt"
"github.com/stiggio/stigg-go"
"github.com/stiggio/stigg-go/option"
)
func main() {
client := stigg.NewClient(
option.WithAPIKey("My API Key"),
)
page, err := client.V1.Plans.List(context.TODO(), stigg.V1PlanListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
}
package io.stigg.example;
import io.stigg.client.StiggClient;
import io.stigg.client.okhttp.StiggOkHttpClient;
import io.stigg.models.v1.plans.PlanListPage;
import io.stigg.models.v1.plans.PlanListParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
PlanListPage page = client.v1().plans().list();
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
page = stigg.v1.plans.list
puts(page)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Plans;
StiggClient client = new();
PlanListParams parameters = new();
var page = await client.V1.Plans.List(parameters);
await foreach (var item in page.Paginate())
{
Console.WriteLine(item);
}stigg v1:plans list \
--api-key 'My API Key'curl --request GET \
--url https://api.stigg.io/api/v1/plans \
--header 'X-API-KEY: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/plans",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": [
{
"id": "plan-professional",
"displayName": "Professional",
"description": "Professional plan with advanced features",
"productId": "product-starter",
"status": "PUBLISHED",
"pricingType": "PAID",
"billingId": "price_1234567890",
"versionNumber": 1,
"isLatest": true,
"entitlements": [
{
"type": "FEATURE",
"id": "feature-advanced-analytics"
},
{
"type": "CREDIT",
"id": "api-calls"
}
],
"metadata": {},
"createdAt": "2025-10-26T10:00:00.000Z",
"updatedAt": "2025-10-26T10:00:00.000Z",
"parentPlanId": null,
"defaultTrialConfig": {
"duration": 14,
"units": "DAY",
"budget": null,
"trialEndBehavior": null
},
"compatibleAddonIds": []
}
],
"pagination": {
"next": "c9b0a382-5b7d-4d32-9f62-8c4e1a7b3d9f",
"prev": "a1d4e8f2-6c3b-4a9e-b5f7-2d8c9e0f1a3b"
}
}{
"message": "<string>",
"code": "BadUserInput",
"reason": "<string>"
}{
"message": "<string>",
"code": "Unauthenticated"
}{
"message": "<string>",
"code": "IdentityForbidden"
}{
"message": "<string>",
"code": "RateLimitExceeded"
}Authorizations
Server API Key
Headers
Account ID — optional when authenticating with a user JWT (Bearer token); falls back to the user's first membership. Ignored for API-key auth.
Environment ID — required when authenticating with a user JWT (Bearer token) on environment-scoped endpoints. Ignored for API-key auth (env is intrinsic to the key).
Query Parameters
Return items that come after this cursor
Return items that come before this cursor
Maximum number of items to return
Required range:
1 <= x <= 100Filter by product ID
Maximum string length:
255Filter by status. Supports comma-separated values for multiple statuses
Available options:
DRAFT, PUBLISHED, ARCHIVED Filter by creation date using range operators: gt, gte, lt, lte
Show child attributes
Show child attributes
Related topics
Get a list of plan entitlementsGet a list of subscriptionsGet a list of productsGet a list of contracts