import Stigg from '@stigg/typescript';
const client = new Stigg({
apiKey: process.env['STIGG_API_KEY'], // This is the default and can be omitted
});
const product = await client.v1.products.updateProduct('x');
console.log(product.data);import os
from stigg import Stigg
client = Stigg(
api_key=os.environ.get("STIGG_API_KEY"), # This is the default and can be omitted
)
product = client.v1.products.update_product(
id="x",
)
print(product.data)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"),
)
product, err := client.V1.Products.UpdateProduct(
context.TODO(),
"x",
stigg.V1ProductUpdateProductParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", product.Data)
}
package io.stigg.example;
import io.stigg.client.StiggClient;
import io.stigg.client.okhttp.StiggOkHttpClient;
import io.stigg.models.v1.products.Product;
import io.stigg.models.v1.products.ProductUpdateProductParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
Product product = client.v1().products().updateProduct("x");
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
product = stigg.v1.products.update_product("x")
puts(product)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Products;
StiggClient client = new();
ProductUpdateProductParams parameters = new() { ID = "x" };
var product = await client.V1.Products.UpdateProduct(parameters);
Console.WriteLine(product);stigg v1:products update-product \
--api-key 'My API Key' \
--id xcurl --request PATCH \
--url https://api.stigg.io/api/v1/products/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"displayName": "<string>",
"description": "<string>",
"multipleSubscriptions": true,
"metadata": {}
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/products/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'displayName' => '<string>',
'description' => '<string>',
'multipleSubscriptions' => true,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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": "product-revvenu",
"displayName": "Revvenu",
"description": "SaaS billing platform",
"status": "PUBLISHED",
"multipleSubscriptions": false,
"metadata": {},
"productSettings": {
"downgradePlanId": "c9b0a382-5b7d-4d32-9f62-8c4e1a7b3d9f",
"prorateAtEndOfBillingPeriod": null,
"subscriptionCancellationTime": "END_OF_BILLING_PERIOD",
"subscriptionEndSetup": "DOWNGRADE_TO_FREE",
"subscriptionStartPlanId": "a1d4e8f2-6c3b-4a9e-b5f7-2d8c9e0f1a3b",
"subscriptionStartSetup": "FREE_PLAN"
},
"createdAt": "2025-10-26T10:00:00.000Z",
"updatedAt": "2025-10-26T10:00:00.000Z"
}
}{
"message": "<string>",
"code": "BadUserInput",
"reason": "<string>"
}{
"message": "<string>",
"code": "Unauthenticated"
}{
"message": "<string>",
"code": "IdentityForbidden"
}{
"message": "<string>",
"code": "CustomerNotFound"
}{
"message": "<string>",
"code": "RateLimitExceeded"
}Update a product
Updates an existing product’s properties such as display name, description, and metadata.
import Stigg from '@stigg/typescript';
const client = new Stigg({
apiKey: process.env['STIGG_API_KEY'], // This is the default and can be omitted
});
const product = await client.v1.products.updateProduct('x');
console.log(product.data);import os
from stigg import Stigg
client = Stigg(
api_key=os.environ.get("STIGG_API_KEY"), # This is the default and can be omitted
)
product = client.v1.products.update_product(
id="x",
)
print(product.data)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"),
)
product, err := client.V1.Products.UpdateProduct(
context.TODO(),
"x",
stigg.V1ProductUpdateProductParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", product.Data)
}
package io.stigg.example;
import io.stigg.client.StiggClient;
import io.stigg.client.okhttp.StiggOkHttpClient;
import io.stigg.models.v1.products.Product;
import io.stigg.models.v1.products.ProductUpdateProductParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
Product product = client.v1().products().updateProduct("x");
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
product = stigg.v1.products.update_product("x")
puts(product)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Products;
StiggClient client = new();
ProductUpdateProductParams parameters = new() { ID = "x" };
var product = await client.V1.Products.UpdateProduct(parameters);
Console.WriteLine(product);stigg v1:products update-product \
--api-key 'My API Key' \
--id xcurl --request PATCH \
--url https://api.stigg.io/api/v1/products/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"displayName": "<string>",
"description": "<string>",
"multipleSubscriptions": true,
"metadata": {}
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/products/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'displayName' => '<string>',
'description' => '<string>',
'multipleSubscriptions' => true,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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": "product-revvenu",
"displayName": "Revvenu",
"description": "SaaS billing platform",
"status": "PUBLISHED",
"multipleSubscriptions": false,
"metadata": {},
"productSettings": {
"downgradePlanId": "c9b0a382-5b7d-4d32-9f62-8c4e1a7b3d9f",
"prorateAtEndOfBillingPeriod": null,
"subscriptionCancellationTime": "END_OF_BILLING_PERIOD",
"subscriptionEndSetup": "DOWNGRADE_TO_FREE",
"subscriptionStartPlanId": "a1d4e8f2-6c3b-4a9e-b5f7-2d8c9e0f1a3b",
"subscriptionStartSetup": "FREE_PLAN"
},
"createdAt": "2025-10-26T10:00:00.000Z",
"updatedAt": "2025-10-26T10:00:00.000Z"
}
}{
"message": "<string>",
"code": "BadUserInput",
"reason": "<string>"
}{
"message": "<string>",
"code": "Unauthenticated"
}{
"message": "<string>",
"code": "IdentityForbidden"
}{
"message": "<string>",
"code": "CustomerNotFound"
}{
"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).
Path Parameters
The unique identifier of the entity
1 - 255Body
Partially update an existing product. Only provided fields are updated.
Display name of the product
255Description of the product
255Indicates if multiple subscriptions to this product are allowed
Additional metadata for the product. When included, this replaces the product's entire metadata object rather than merging with the existing keys — omit the field to leave existing metadata untouched.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Rule defining when usage resets upon subscription update.
Show child attributes
Show child attributes
Response
The updated product object.
Response object
Product configuration object
Show child attributes
Show child attributes
