curl --request GET \
--url https://prod-api.ringg.ai/ca/api/v0/workspace/sub \
--header 'X-API-KEY: <api-key>'import requests
url = "https://prod-api.ringg.ai/ca/api/v0/workspace/sub"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://prod-api.ringg.ai/ca/api/v0/workspace/sub', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"primary": {
"id": "00000000-0000-4000-8000-000000000107",
"name": "Acme Collections HQ",
"concurrency": 50,
"limit_concurrency": 50,
"member_count": 4,
"billing": {
"account_type": "postpaid",
"currency": "INR",
"credit_limit": 500000,
"utilized_limit": 12500
},
"usage_this_period": 0
},
"sub_workspaces": [
{
"id": "00000000-0000-4000-8000-000000000101",
"name": "Mumbai Collections",
"created_at": "2026-09-01T06:41:12.884312+00:00",
"concurrency": 20,
"limit_concurrency": 20,
"member_counts": {
"direct": 2,
"inherited": 4
},
"billing": {
"account_type": "postpaid",
"currency": "INR",
"credit_limit": 200000,
"utilized_limit": 34210.5
},
"usage_this_period": 34210.5
}
],
"family": {
"concurrency_capacity": 50,
"concurrency_allocated": 20,
"concurrency_available": 30,
"is_individual_entity": true,
"credit_limit": 500000,
"utilized_total": 46710.5,
"available_total": 453289.5
}
}{
"message": "Sub-workspaces cannot have their own sub-workspaces."
}{
"message": "Invalid credentials"
}{
"message": "Sub-workspaces are not enabled for this workspace."
}{
"message": "An unexpected error occurred. Please try again later."
}Get Ringg Spaces
Get your whole Ringg Space family in one call: the primary’s summary, each Ringg Space’s allocation, members and month-to-date usage, and family totals.
curl --request GET \
--url https://prod-api.ringg.ai/ca/api/v0/workspace/sub \
--header 'X-API-KEY: <api-key>'import requests
url = "https://prod-api.ringg.ai/ca/api/v0/workspace/sub"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://prod-api.ringg.ai/ca/api/v0/workspace/sub', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"primary": {
"id": "00000000-0000-4000-8000-000000000107",
"name": "Acme Collections HQ",
"concurrency": 50,
"limit_concurrency": 50,
"member_count": 4,
"billing": {
"account_type": "postpaid",
"currency": "INR",
"credit_limit": 500000,
"utilized_limit": 12500
},
"usage_this_period": 0
},
"sub_workspaces": [
{
"id": "00000000-0000-4000-8000-000000000101",
"name": "Mumbai Collections",
"created_at": "2026-09-01T06:41:12.884312+00:00",
"concurrency": 20,
"limit_concurrency": 20,
"member_counts": {
"direct": 2,
"inherited": 4
},
"billing": {
"account_type": "postpaid",
"currency": "INR",
"credit_limit": 200000,
"utilized_limit": 34210.5
},
"usage_this_period": 34210.5
}
],
"family": {
"concurrency_capacity": 50,
"concurrency_allocated": 20,
"concurrency_available": 30,
"is_individual_entity": true,
"credit_limit": 500000,
"utilized_total": 46710.5,
"available_total": 453289.5
}
}{
"message": "Sub-workspaces cannot have their own sub-workspaces."
}{
"message": "Invalid credentials"
}{
"message": "Sub-workspaces are not enabled for this workspace."
}{
"message": "An unexpected error occurred. Please try again later."
}Reading the response
family.concurrency_availableis what Allocate Concurrency can still hand out;family.available_pot(prepaid) is what Reallocate Credit Balances can still move out of the primary.family.is_individual_entitytells you the billing mode:truefor individual (each Ringg Space has its own wallet or limit),falsefor common (one pool on the primary). The keys present infamilyand in each row’sbillingdepend on it; the response schema below lists them per mode.usage_this_periodis the value of completed calls since the 1st of the current month in theAsia/Kolkatatimezone, in the workspace’s billing currency.- Amounts are JSON numbers here (
200000.0); the two allocation endpoints return decimal strings.
Notes
- Works on a primary with no Ringg Spaces yet;
sub_workspacesis then an empty list. - Archived Ringg Spaces are not listed.
Errors
400:Sub-workspaces cannot have their own sub-workspaces.— the key belongs to a Ringg Space that has Ringg Spaces enabled.401: Invalid or missing API key.403:Sub-workspaces are not enabled for this workspace.— Ringg Spaces are not enabled on the primary, or the key belongs to a Ringg Space.
Authorizations
Headers
(Required) The API key of the PRIMARY workspace. A Ringg Space's own key is refused (403, or 400 if Ringg Spaces are enabled on it).
"rg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response
Successful Response: The family overview.
Show child attributes
Show child attributes
Active Ringg Spaces, oldest first.
Show child attributes
Show child attributes
Family totals. Always: the concurrency keys and is_individual_entity. Postpaid families add credit_limit, utilized_total, available_total. Prepaid individual families add available_pot, allocated_balance_total, family_available_total. Prepaid common families add available_pot and family_available_total.
Show child attributes
Show child attributes
Was this page helpful?