Get credit balance for current user's organization
curl --request GET \
--url https://flows.super.ai/api/organizations/credits \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://flows.super.ai/api/organizations/credits"
headers = {
"X-API-Key": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-Key': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://flows.super.ai/api/organizations/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://flows.super.ai/api/organizations/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>",
"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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://flows.super.ai/api/organizations/credits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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://flows.super.ai/api/organizations/credits")
.header("X-API-Key", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://flows.super.ai/api/organizations/credits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"credits_granted": 123,
"credits_remaining": 123,
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credits_consumed": 0
}organizations
Get credit balance for current user's organization
Get credit balance for the current user’s organization.
Returns the current credit balance including grants, consumption, and remaining credits for the authenticated user’s organization.
M1 Note: Currently only shows granted credits. Usage tracking will be added in a future release, so credits_consumed is always 0.
Authorization:
- Organization admins and users can view their own organization’s credits
- RLS policies enforce organization-level data isolation at database level
Context:
- Credits are tracked at the organization level, not per user
- Grants are permanent allocations (cannot be revoked)
- New organizations receive 30,000 credits automatically
- Credits consumed will track usage across all users in the organization
Use Cases:
- Display credit balance in user dashboard
- Check remaining credits before starting workflows
- Monitor organization usage
Related Endpoints:
- POST /admin/organizations//grants - Admin can grant additional credits (backoffice only)
Security:
- @require_roles decorator enforces role-based access
- Uses current_user.organization_id (no path parameter to validate)
- RLS policies provide database-level enforcement
GET
/
api
/
organizations
/
credits
Get credit balance for current user's organization
curl --request GET \
--url https://flows.super.ai/api/organizations/credits \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://flows.super.ai/api/organizations/credits"
headers = {
"X-API-Key": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-Key': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://flows.super.ai/api/organizations/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://flows.super.ai/api/organizations/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>",
"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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://flows.super.ai/api/organizations/credits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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://flows.super.ai/api/organizations/credits")
.header("X-API-Key", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://flows.super.ai/api/organizations/credits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"credits_granted": 123,
"credits_remaining": 123,
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credits_consumed": 0
}Authorizations
API key authentication. Include your API key in the X-API-Key header as: X-API-Key YOUR_API_KEY
Example:
X-API-Key: saf_1234567890
JWT Bearer token authentication. Include your access token in the Authorization header as: Bearer YOUR_ACCESS_TOKEN
Example:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Response
Credit balance retrieved successfully
Credit balance for an organization (M1: grants only, no usage yet).