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 contractListResponse of client.v1.contracts.list()) {
console.log(contractListResponse.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.contracts.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.Contracts.List(context.TODO(), stigg.V1ContractListParams{})
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.contracts.ContractListPage;
import io.stigg.models.v1.contracts.ContractListParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
ContractListPage page = client.v1().contracts().list();
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
page = stigg.v1.contracts.list
puts(page)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Contracts;
StiggClient client = new();
ContractListParams parameters = new();
var page = await client.V1.Contracts.List(parameters);
await foreach (var item in page.Paginate())
{
Console.WriteLine(item);
}stigg v1:contracts list \
--api-key 'My API Key'curl --request GET \
--url https://api.stigg.io/api/v1/contracts \
--header 'X-API-KEY: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/contracts",
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": [
{
"contractId": "contract-acme-2026",
"billingId": "ct_1a2b3c4d",
"id": "3452155b-deca-4d7f-91e5-82d486dc8bb0",
"refId": "contract-acme-2026",
"poNumber": "PO-4821",
"externalId": "contract-acme-2026",
"customerExternalId": "customer-acme",
"name": "PO-4821",
"state": "ACTIVE",
"billingState": "ACTIVE",
"activationStartDate": "2026-01-01T00:00:00.000Z",
"activationEndDate": "2026-12-31T00:00:00.000Z",
"createdAt": "2025-12-15T09:30:00.000Z",
"nextInvoice": {
"invoiceId": "a3f1c2de-5b47-4c8e-9f10-2d6b8e4a7c31",
"amount": {
"amount": 4900,
"currency": "usd"
},
"dueDate": "2026-08-01T00:00:00.000Z",
"periodStart": "2026-07-01T00:00:00.000Z",
"periodEnd": "2026-08-01T00:00:00.000Z"
},
"latestInvoice": {
"billingId": "inv_abc123",
"status": "OPEN",
"createdAt": "2026-07-01T00:00:00.000Z",
"total": 4900,
"amountDue": 4900,
"currency": "usd",
"pdfUrl": null,
"requiresAction": false,
"billingReason": null
},
"subscriptions": [
{
"subscriptionId": "subscription-acme-platform",
"planDisplayName": "Enterprise Platform",
"productDisplayName": "Revvenu"
}
]
}
],
"pagination": {
"next": null,
"prev": null
}
}{
"message": "<string>",
"code": "BadUserInput"
}{
"message": "<string>",
"code": "Unauthenticated"
}{
"message": "<string>",
"code": "IdentityForbidden"
}{
"message": "<string>",
"code": "RateLimitExceeded"
}Get a list of contracts
Retrieves a cursor-paginated list of contracts in the environment, fetched live from the connected billing provider. Each contract is enriched with a preview of its upcoming (next) invoice when one is available. Returns an empty list when no billing provider is connected. Supports filtering by customer external ID, state, and name.
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 contractListResponse of client.v1.contracts.list()) {
console.log(contractListResponse.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.contracts.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.Contracts.List(context.TODO(), stigg.V1ContractListParams{})
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.contracts.ContractListPage;
import io.stigg.models.v1.contracts.ContractListParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
ContractListPage page = client.v1().contracts().list();
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
page = stigg.v1.contracts.list
puts(page)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Contracts;
StiggClient client = new();
ContractListParams parameters = new();
var page = await client.V1.Contracts.List(parameters);
await foreach (var item in page.Paginate())
{
Console.WriteLine(item);
}stigg v1:contracts list \
--api-key 'My API Key'curl --request GET \
--url https://api.stigg.io/api/v1/contracts \
--header 'X-API-KEY: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/contracts",
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": [
{
"contractId": "contract-acme-2026",
"billingId": "ct_1a2b3c4d",
"id": "3452155b-deca-4d7f-91e5-82d486dc8bb0",
"refId": "contract-acme-2026",
"poNumber": "PO-4821",
"externalId": "contract-acme-2026",
"customerExternalId": "customer-acme",
"name": "PO-4821",
"state": "ACTIVE",
"billingState": "ACTIVE",
"activationStartDate": "2026-01-01T00:00:00.000Z",
"activationEndDate": "2026-12-31T00:00:00.000Z",
"createdAt": "2025-12-15T09:30:00.000Z",
"nextInvoice": {
"invoiceId": "a3f1c2de-5b47-4c8e-9f10-2d6b8e4a7c31",
"amount": {
"amount": 4900,
"currency": "usd"
},
"dueDate": "2026-08-01T00:00:00.000Z",
"periodStart": "2026-07-01T00:00:00.000Z",
"periodEnd": "2026-08-01T00:00:00.000Z"
},
"latestInvoice": {
"billingId": "inv_abc123",
"status": "OPEN",
"createdAt": "2026-07-01T00:00:00.000Z",
"total": 4900,
"amountDue": 4900,
"currency": "usd",
"pdfUrl": null,
"requiresAction": false,
"billingReason": null
},
"subscriptions": [
{
"subscriptionId": "subscription-acme-platform",
"planDisplayName": "Enterprise Platform",
"productDisplayName": "Revvenu"
}
]
}
],
"pagination": {
"next": null,
"prev": null
}
}{
"message": "<string>",
"code": "BadUserInput"
}{
"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
Maximum number of items to return
1 <= x <= 100Return items that come after this cursor
255Return items that come before this cursor
255Filter by the exact external ID of the customer the contract belongs to
255Filter by contract state. Supports comma-separated values for multiple states
255Filter by exact contract name
255