Skip to main content
GET
/
v1
/
organization
/
credits
Get Credits
curl --request GET \
  --url https://api.signa.so/v1/organization/credits \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.signa.so/v1/organization/credits"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.signa.so/v1/organization/credits', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.signa.so/v1/organization/credits",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.signa.so/v1/organization/credits"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/organization/credits")
  .header("Authorization", "Bearer <token>")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.signa.so/v1/organization/credits")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "object": "credit_balance",
  "balance": 8500,
  "grants": {
    "plan": 8000,
    "addon": 500,
    "promo": 0
  },
  "reserved": 0,
  "pending": 0,
  "expiry_schedule": [
    {
      "grant_id": "grant_01HXYZPLAN",
      "type": "plan",
      "amount": 10000,
      "remaining": 8000,
      "effective_at": "2026-04-01T00:00:00.000Z",
      "expires_at": "2026-05-01T00:00:00.000Z"
    },
    {
      "grant_id": "grant_01HXYZADDON",
      "type": "addon",
      "amount": 500,
      "remaining": 500,
      "effective_at": "2026-04-10T00:00:00.000Z",
      "expires_at": "2027-04-10T00:00:00.000Z"
    }
  ],
  "request_id": "req_abc123"
}
Beta. Credits are the single billing currency across the Signa API. This endpoint’s schema is new and may evolve before general availability.

Overview

Returns the authenticated organization’s pooled credit balance: the spendable balance across all active grants, a breakdown of remaining credits by grant type (plan vs addon vs promo), and the per-grant expiry schedule in consumption order (plan first, then oldest-expiry-first). Requires the billing:read scope. Querying credits does not consume any credits.

Response

object
string
Always "credit_balance".
balance
integer
Authoritative spendable pooled balance. Reconciles exactly: balance = (plan + addon + promo) - reserved - pending. May be negative under the debt floor.
grants
object
reserved
integer
Credits held by open reservations (reserved but not yet settled or refunded).
pending
integer
Billable spend not yet attributed to specific grants by the hourly applier.
expiry_schedule
object[]
request_id
string
Request ID for debugging.
{
  "object": "credit_balance",
  "balance": 8500,
  "grants": {
    "plan": 8000,
    "addon": 500,
    "promo": 0
  },
  "reserved": 0,
  "pending": 0,
  "expiry_schedule": [
    {
      "grant_id": "grant_01HXYZPLAN",
      "type": "plan",
      "amount": 10000,
      "remaining": 8000,
      "effective_at": "2026-04-01T00:00:00.000Z",
      "expires_at": "2026-05-01T00:00:00.000Z"
    },
    {
      "grant_id": "grant_01HXYZADDON",
      "type": "addon",
      "amount": 500,
      "remaining": 500,
      "effective_at": "2026-04-10T00:00:00.000Z",
      "expires_at": "2027-04-10T00:00:00.000Z"
    }
  ],
  "request_id": "req_abc123"
}

Code Examples

curl "https://api.signa.so/v1/organization/credits" \
  -H "Authorization: Bearer sig_xxxxxxxxxxxx"
import { Signa } from "@signa-so/sdk";

const signa = new Signa({ api_key: "sig_xxxxxxxxxxxx" });

const credits = await signa.organization.credits();
console.log(credits.balance, credits.grants.plan, credits.grants.addon);
import requests

resp = requests.get(
    "https://api.signa.so/v1/organization/credits",
    headers={"Authorization": "Bearer sig_xxxxxxxxxxxx"},
)
credits = resp.json()

Errors

StatusTypeDescription
401unauthorizedMissing or invalid API key
403forbiddenAPI key lacks billing:read
429rate_limitedToo many requests