Skip to content

Read the status of a CloudAccount

GET
/apis/nodus.dev/v1/cloudaccounts/{name}/status
curl --request GET \
--url https://example.com/apis/nodus.dev/v1/cloudaccounts/example/status
name
required
string

The object’s name.

OK

Media type application/json

CloudAccount is a customer’s own cloud account. An AWS, GCP or Azure account is read-only observation: inventory, GPUs and spend. Once spec.execute allows it, an AWS account through its execute role, a GCP account through its execute service account, an Azure subscription through its execute resource group, a key cloud’s account with the customer’s key and a Kubernetes namespace with its ServiceAccount token also run the org’s work: Nodus creates and deletes only machines carrying its ownership label, within the stated credit (ADR-130). The object holds only the non-secret binding; the grant material and key are stored encrypted, owned by the account and never returned.

object
apiVersion
string
kind
string
metadata
object
annotations
object
key
additional properties
string
creationTimestamp
string
deletionGracePeriodSeconds
integer format: int64
deletionTimestamp
string
finalizers
Array<string>
nullable
generateName
string
generation
integer format: int64
labels
object
key
additional properties
string
managedFields
Array<object>
nullable
object
apiVersion
string
fieldsType
string
fieldsV1
object
key
additional properties
manager
string
operation
string
subresource
string
time
string
name
string
namespace
string
ownerReferences
Array<object>
nullable
object
apiVersion
required
string
blockOwnerDeletion
boolean
controller
boolean
kind
required
string
name
required
string
uid
required
string
resourceVersion
string
selfLink
string
uid
string
spec
required

CloudAccountSpec is the binding to one cloud account.

object
aws

AWSAccount is an AWS binding through a read-only IAM role.

object
accountId
required

AccountID is the 12-digit AWS account id, empty until the stack’s ReturnToNodus link brings it back.

string
regions

Regions limits observation; empty means every enabled region.

Array<string>
nullable
roleArn

RoleARN is the read-only role the CloudFormation stack created; onboarding fills it.

string
azure

AzureAccount is an Azure subscription Nodus reaches as its multi-tenant app, which the customer’s tenant admits with a read-only role on the subscription; the subscription carries a tag naming this CloudAccount.

object
regions

Regions limits the GPU quota read; empty means the regions Nodus offers Azure GPUs in.

Array<string>
nullable
subscriptionId
required

SubscriptionID is the subscription id, a UUID.

string
tenantId
required

TenantID is the Entra tenant (directory) id, a UUID.

string
credits

CloudCredits is the credit the customer states for the account: what is left today and when it expires. Nodus counts it down by the spend it observes from that day on; a cloud that reports its own balance wins.

object
amountUSD

AmountUSD is the credit left on the day it is stated.

string
expireTime

ExpireTime is when the credit expires.

string
execute

CloudExecute is the customer’s grant to run work in their own account and the credit Nodus may spend there. The cloud bills that spend to the customer; it never enters Nodus billing.

object
burstToMarket

BurstToMarket says whether work that does not fit the account may run on other capacity. Default Allow.

string
creditLimitUSD
required

CreditLimitUSD is the most cloud spend Nodus may cause in the account per period, estimated from list prices and running time; work stops placing there before it would pass the limit.

string
maxHourlyUSD

MaxHourlyUSD bounds the summed hourly price of the machines running there at once. Default the credit limit.

string
period

Period is Monthly (each UTC calendar month) or Total. Default Monthly.

string
priority

Priority orders the org’s accounts: work goes to priority 1 first, then 2, up to 100; an account without one comes after every numbered account. Accounts of one priority compete on expected cost.

integer format: int32
gcp

GCPAccount is a GCP binding through a read-only grant.

object
method

Method is how the customer granted access; OAuth, the default, is the only method accepted.

string
projectIds
required

ProjectIDs are the projects Nodus observes. Empty starts Google consent before project selection.

Array<string>
nullable
workloadIdentityProvider

WorkloadIdentityProvider names a workload identity provider (WorkloadIdentity, which is refused).

string
kubernetes

KubernetesAccount is a namespace of the customer’s own Kubernetes GPU cluster. Nodus runs each machine there as one pod asking for nvidia.com/gpu, with a ServiceAccount token whose Role covers only the namespace.

object
gpus
required

GPUs are the GPU types Nodus may ask the cluster for, each at the hourly rate the customer pays for one GPU, which meters execute.creditLimitUSD.

Array<object>
nullable

KubernetesGPU is one GPU type of the customer’s cluster.

object
hourlyUSD
required

HourlyUSD is the customer’s own price for one GPU for one hour, such as their contract rate.

string
nodeSelector

NodeSelector is the node labels that pick this type’s nodes, such as nvidia.com/gpu.product; required when the account declares more than one type.

object
key
additional properties
string
type
required

Type is the GPU model by its Nodus name, such as H100-SXM or A100-80G.

string
namespace
required

Namespace is the namespace every Nodus pod runs in. Immutable.

string
region

Region is the country the cluster runs in, as a two-letter key such as us or fi; it sets the region class of the account’s offerings. Immutable. Default us.

string
scaleUpWaitMinutes

ScaleUpWaitMinutes is how long a pod no node has room for waits for the cluster’s autoscaler to add a node before Nodus runs the work elsewhere; 0 turns the wait off, for a fixed-size pool. Default 10, at most 20.

integer format: int32
observe

Observe lists the reads that run. Default [Inventory, GPUs, Spend].

Array<string>
nullable
provider
required

Provider is AWS, GCP, Azure or a key cloud such as Lambda. Immutable.

string
sync

CloudAccountSync sets the observation cadence.

object
interval

Interval is from 15m to 24h. Default 1h.

string
status

CloudAccountStatus is the latest observation.

object
conditions

Conditions carries Verified and Synced.

Array<object>
nullable
object
lastTransitionTime
required
string
message
required
string
observedGeneration
integer format: int64
reason
required
string
status
required
string
type
required
string
credits

CloudCreditStatus is the credit left in the customer’s cloud account. It is the cloud’s money, never Nodus credit, and an estimate between the cloud’s billing updates.

object
asOfTime
required

AsOfTime is when the credit was worked out.

string
expireTime

ExpireTime is when the credit, or the first of several, expires.

string
message

Message says why the cloud’s own balance was not read, when it was not.

string
remainingUSD
required

RemainingUSD is the credit left.

string
source
required

Source is Cloud, Stated or ExecuteLimit.

string
statedTime

StatedTime is the UTC day the amount was stated; spend from that day on is subtracted (Stated).

string
statedUSD

StatedUSD is the stated amount the remaining credit counts down from (Stated).

string
execute

CloudExecuteStatus is the work Nodus runs in the customer’s own account and the credit it has used there. The amounts are estimates from list prices and running time; the cloud bills the customer, never Nodus.

object
creditRemainingUSD
required

CreditRemainingUSD is the credit limit less the spend and the next five minutes of the machines running there; work moves to the next source before it reaches zero.

string
creditUsedUSD
required

CreditUsedUSD is the cloud spend Nodus caused in the account this period.

string
inUse
required

InUse is true while Nodus machines run in the account.

boolean
keyCheckTime

KeyCheckTime is when Nodus last proved the account’s key or execute grant with the cloud, about every 15 minutes while the account runs work.

string
lastError

CloudExecuteError is one machine the customer’s cloud refused to create.

object
message
required

Message says what it means for the account.

string
reason
required

Reason is CapacityUnavailable, CloudQuota (the account’s own quota refused it), ProviderRejected, Misconfigured, NotOffered, RegionMismatch, PriceDrift or another create outcome.

string
time
required

Time is when the create was refused.

string
machines
required

Machines is the number of Nodus machines in the account now.

integer format: int32
periodStartTime

PeriodStartTime is when the current credit period began.

string
externalId

ExternalID is the AWS external id the role’s trust policy must name.

string
handledRequests

HandledRequests records the nodus.dev/verify-requested-at value the last requested sync answered.

object
key
additional properties
string
inventory

CloudInventorySummary counts what the latest sync saw.

object
gpuQuota

GPUQuota is how much GPU capacity the cloud lets the account run, per region and machine family; quotas of zero are left out.

Array<object>
nullable

CloudGPUQuota is one GPU quota of the account.

object
family
required

Family is the cloud’s name for the quota, such as “Running On-Demand P instances”, “NVIDIA_H100_GPUS” or “standardNCADSA100v4Family”.

string
limit
required

Limit is the most the account may run at once.

integer format: int32
project

Project is the GCP project, empty on AWS and Azure.

string
region
required

Region is the region the quota applies to, or “global” for every region together.

string
requestUrl

RequestURL opens the cloud console page where the customer asks for more.

string
unit
required

Unit is GPUs or vCPUs.

string
used

Used is how much of it runs now, when the cloud reports it.

integer format: int32
gpus

GPUs counts GPUs per accelerator model.

object
key
additional properties
integer format: int32
instances
required

Instances is the number of instances observed.

integer format: int32
regions

Regions are the regions with instances.

Array<string>
nullable
runningGPUs

RunningGPUs counts the GPUs of running instances per accelerator model; the rest of GPUs are on stopped or starting instances, which use no GPU hours.

object
key
additional properties
integer format: int32
lastSyncTime

LastSyncTime is when the latest sync finished.

string
machinesMayBeRunning

MachinesMayBeRunning are the Nodus machines that may still run in the account while Nodus can no longer delete them (condition MachinesMayBeRunning); the customer deletes them in the cloud’s console.

Array<object>
nullable

CloudMachine is one machine in the customer’s own account, as the cloud’s console names it.

object
location
required

Location is the machine’s zone, or its region where the cloud names no zone.

string
name
required

Name is the instance name or id, or the Nodus label it carries while no create has answered.

string
phase

Phase is Pending, Ready or Failed.

string
spend

CloudSpendSummary is the month’s observed cloud spend; it never enters Nodus billing.

object
asOfTime
required

AsOfTime is when the spend was read.

string
monthToDateUSD
required

MonthToDateUSD is observed month-to-date USD, possibly partial; empty when no USD was observed.

string
report

CloudSpendReport is the latest observation window, never a Nodus charge or a savings claim.

object
basis
required

Basis explains adjustments and provisional billing data.

string
currencies
required

Currencies keeps different currencies separate; absent rows are unknown, not zero.

Array<object>
nullable

CloudSpendCurrency is one currency’s observed bill and optional projection.

object
byRegion

ByRegion is the observed subtotal per billed region; charges the cloud bills to no region have an empty one.

Array<object>
nullable

CloudSpendRegion is one billed region’s observed subtotal in the currency report’s window.

object
cost
required
string
region
string
byService
required
Array<object>
nullable

CloudSpendService is one service’s observed subtotal in the currency report’s window.

object
cost
required
string
service
required
string
computeDescription
string
computeServiceTotal

ComputeServiceTotal is a service subtotal, including CPU and associated charges, never GPU-only spend.

string
coverage
required

CloudSpendCoverage describes past UTC days in the requested window; today’s partial day is excluded.

object
billedThrough

BilledThrough is the latest day explicitly reported non-estimated by the source, not invoice finality.

string
completeDays
required
integer format: int32
estimatedDays
required
integer format: int32
missingDays
required
integer format: int32
observedDays
required
integer format: int32
currency
required
string
daily
required
Array<object>
nullable

CloudSpendPoint leaves cost absent when no amount was observed. Unknown finality never means complete.

object
complete
required
boolean
cost
string
day
required
string
estimated
boolean
forecast
required

CloudSpendForecast extrapolates eligible observed days; it is neither a price guarantee nor a confidence band.

object
computeDescription
string
computeServiceTotal

ComputeServiceTotal projects only the explicitly classified compute-service subtotal.

string
historyDays
required
integer format: int32
historyThrough

HistoryThrough is the latest UTC day used, exposing the export lag buffer.

string
horizonDays
required
integer format: int32
method
required
string
status
required

Status is Ready, InsufficientHistory, BillingAdjustments or ProvisionalSource.

string
total

Total is the next HorizonDays at the recent daily average, not a month-end prediction.

string
monthToDate
required

MonthToDate sums returned amounts since the current month’s start; coverage may be partial.

string
observedTotal
required

ObservedTotal sums only returned amounts over the observation window.

string
fromDay
required

FromDay is the first requested UTC day; ToDay is exclusive.

string
source
required

Source identifies the customer’s cloud billing source.

string
toDay
required
string
Example generated
{
"apiVersion": "example",
"kind": "example",
"metadata": {
"annotations": {
"additionalProperty": "example"
},
"creationTimestamp": "example",
"deletionGracePeriodSeconds": 1,
"deletionTimestamp": "example",
"finalizers": [
"example"
],
"generateName": "example",
"generation": 1,
"labels": {
"additionalProperty": "example"
},
"managedFields": [
{
"apiVersion": "example",
"fieldsType": "example",
"fieldsV1": {
"additionalProperty": "example"
},
"manager": "example",
"operation": "example",
"subresource": "example",
"time": "example"
}
],
"name": "example",
"namespace": "example",
"ownerReferences": [
{
"apiVersion": "example",
"blockOwnerDeletion": true,
"controller": true,
"kind": "example",
"name": "example",
"uid": "example"
}
],
"resourceVersion": "example",
"selfLink": "example",
"uid": "example"
},
"spec": {
"aws": {
"accountId": "example",
"regions": [
"example"
],
"roleArn": "example"
},
"azure": {
"regions": [
"example"
],
"subscriptionId": "example",
"tenantId": "example"
},
"credits": {
"amountUSD": "example",
"expireTime": "example"
},
"execute": {
"burstToMarket": "example",
"creditLimitUSD": "example",
"maxHourlyUSD": "example",
"period": "example",
"priority": 1
},
"gcp": {
"method": "example",
"projectIds": [
"example"
],
"workloadIdentityProvider": "example"
},
"kubernetes": {
"gpus": [
{
"hourlyUSD": "example",
"nodeSelector": {
"additionalProperty": "example"
},
"type": "example"
}
],
"namespace": "example",
"region": "example",
"scaleUpWaitMinutes": 1
},
"observe": [
"example"
],
"provider": "example",
"sync": {
"interval": "example"
}
},
"status": {
"conditions": [
{
"lastTransitionTime": "example",
"message": "example",
"observedGeneration": 1,
"reason": "example",
"status": "example",
"type": "example"
}
],
"credits": {
"asOfTime": "example",
"expireTime": "example",
"message": "example",
"remainingUSD": "example",
"source": "example",
"statedTime": "example",
"statedUSD": "example"
},
"execute": {
"creditRemainingUSD": "example",
"creditUsedUSD": "example",
"inUse": true,
"keyCheckTime": "example",
"lastError": {
"message": "example",
"reason": "example",
"time": "example"
},
"machines": 1,
"periodStartTime": "example"
},
"externalId": "example",
"handledRequests": {
"additionalProperty": "example"
},
"inventory": {
"gpuQuota": [
{
"family": "example",
"limit": 1,
"project": "example",
"region": "example",
"requestUrl": "example",
"unit": "example",
"used": 1
}
],
"gpus": {
"additionalProperty": 1
},
"instances": 1,
"regions": [
"example"
],
"runningGPUs": {
"additionalProperty": 1
}
},
"lastSyncTime": "example",
"machinesMayBeRunning": [
{
"location": "example",
"name": "example"
}
],
"phase": "example",
"spend": {
"asOfTime": "example",
"report": {
"basis": "example",
"currencies": [
{
"byRegion": [
{
"cost": "example",
"region": "example"
}
],
"byService": [
{
"cost": "example",
"service": "example"
}
],
"computeDescription": "example",
"computeServiceTotal": "example",
"coverage": {
"billedThrough": "example",
"completeDays": 1,
"estimatedDays": 1,
"missingDays": 1,
"observedDays": 1
},
"currency": "example",
"daily": [
{
"complete": true,
"cost": "example",
"day": "example",
"estimated": true
}
],
"forecast": {
"computeDescription": "example",
"computeServiceTotal": "example",
"historyDays": 1,
"historyThrough": "example",
"horizonDays": 1,
"method": "example",
"status": "example",
"total": "example"
},
"monthToDate": "example",
"observedTotal": "example"
}
],
"fromDay": "example",
"source": "example",
"toDay": "example"
}
}
}
}

An error: a metav1.Status whose reason is a registered code.

Media type application/json

Status is the error body of every API response: a Kubernetes metav1.Status (so kubectl and client-go understand it) plus three top-level extensions that those clients ignore (ADR-028).

object
apiVersion
string
code
integer format: int32
details
object
causes
Array<object>
nullable
object
field
string
message
string
reason
string
group
string
kind
string
name
string
retryAfterSeconds
integer format: int32
uid
string
docs

Docs is the URL of the code’s docs page.

string
fix

Fix says what to do next, for example a CLI command or the field to change.

string
kind
string
message
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
reason
string
requestId

RequestID identifies the request in logs and support tickets.

string
status
string
Example generated
{
"apiVersion": "example",
"code": 1,
"details": {
"causes": [
{
"field": "example",
"message": "example",
"reason": "example"
}
],
"group": "example",
"kind": "example",
"name": "example",
"retryAfterSeconds": 1,
"uid": "example"
},
"docs": "example",
"fix": "example",
"kind": "example",
"message": "example",
"metadata": {
"continue": "example",
"remainingItemCount": 1,
"resourceVersion": "example",
"selfLink": "example",
"shardInfo": {
"selector": "example"
}
},
"reason": "example",
"requestId": "example",
"status": "example"
}