Read the status of a Agent
const url = 'https://example.com/apis/nodus.dev/v1/namespaces/example/agents/example/status';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/apis/nodus.dev/v1/namespaces/example/agents/example/statusParameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”The project.
The object’s name.
Responses
Section titled “ Responses ”OK
Agent is a durable agent definition: a system prompt, the Claude access it runs on and its cost cap. Each run executes the agent loop in its own Sandbox, and a change to the spec applies to the runs created after it.
object
object
object
object
object
object
object
AgentSpec describes an Agent.
object
Image is the Sandbox image each run’s tools execute in; nodus/agent-tools when empty.
MaxTokens bounds the output of each model call; 8192 when zero.
MaxToolCalls bounds the tool calls of one turn; 50 when zero.
AgentModel is spec.model.
object
Access is Nodus (the default) or BYOK.
APIKeySecret names the project Secret that holds the Anthropic key. Access BYOK only.
Families limits the Claude families the router may pick (haiku, sonnet, opus, fable); every family when empty. Access Nodus only.
Name is the Anthropic model id of every turn. Access BYOK only; a current Sonnet when empty.
PerRunMaxCostUSD is the cost cap of each run on Nodus’s Claude, 0.01 to 1000; “1.00” when empty. A run is created with the cap its Agent has at that moment and keeps it. Before each model call the run checks that the call at its largest, the whole request as input and spec.maxTokens of output, fits under the cap; when it does not, the run waits (MaxCostReached) and makes no more calls. A run on the customer’s own key is not charged and has no cap to reach.
State is Running (the default) or Stopped, which refuses new runs and leaves the queued ones alone.
System is the system prompt of every turn, up to 64 KiB.
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": { "image": "example", "maxTokens": 1, "maxToolCalls": 1, "model": { "access": "example", "apiKeySecret": "example", "families": [ "example" ], "name": "example" }, "perRunMaxCostUSD": "example", "state": "example", "system": "example" }}default
Section titled “ default ”An error: a metav1.Status whose reason is a registered code.
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
object
object
Docs is the URL of the code’s docs page.
Fix says what to do next, for example a CLI command or the field to change.
object
object
RequestID identifies the request in logs and support tickets.
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"}