Chamber Workloads API
List, retrieve, and get statistics for GPU workloads
List, retrieve, and get statistics for GPU workloads
openapi: 3.1.0
info:
title: Chamber Capacity Workloads API
version: 1.0.0
description: The Chamber REST API provides programmatic access to manage GPU capacity, monitor workloads, and query GPU metrics across your organization. Chamber is an AIOps control plane for enterprise AI infrastructure that helps ML teams monitor, diagnose, and resolve GPU workload issues across AWS, GCP, Azure, and on-premise clusters. All requests (except the health check) require a Bearer token and an organization context header.
contact:
name: Chamber Support
email: support@usechamber.io
url: https://docs.usechamber.io/api-reference/introduction
x-provider: Chamber
x-source: https://docs.usechamber.io/api-reference/introduction
servers:
- url: https://api.usechamber.io/v1
description: Production
security:
- bearerAuth: []
tags:
- name: Workloads
description: List, retrieve, and get statistics for GPU workloads
paths:
/workloads:
get:
operationId: listWorkloads
summary: List workloads
description: Retrieve a paginated list of workloads with optional filtering. Results are automatically filtered based on your role and team access.
tags:
- Workloads
parameters:
- $ref: '#/components/parameters/OrganizationIdHeader'
- $ref: '#/components/parameters/RequestIdHeader'
- name: organization_id
in: query
description: Filter by organization
schema:
type: string
- name: initiative_id
in: query
description: Filter by team
schema:
type: string
- name: status
in: query
description: Filter by workload status
schema:
type: string
enum:
- pending
- running
- completed
- failed
- cancelled
- name: submitted_by
in: query
description: Filter by user who submitted the workload
schema:
type: string
- name: is_managed
in: query
description: Filter managed vs unmanaged workloads
schema:
type: boolean
- name: start_date
in: query
description: Filter workloads submitted after this date (ISO 8601)
schema:
type: string
format: date-time
- name: end_date
in: query
description: Filter workloads submitted before this date (ISO 8601)
schema:
type: string
format: date-time
- $ref: '#/components/parameters/LimitParam'
- $ref: '#/components/parameters/NextTokenParam'
responses:
'200':
description: A paginated list of workloads
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
workloads:
type: array
items:
$ref: '#/components/schemas/Workload'
metadata:
$ref: '#/components/schemas/PageMetadata'
request_id:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/workloads/stats:
get:
operationId: getWorkloadStats
summary: Get workload statistics
description: Retrieve aggregated statistics across workloads.
tags:
- Workloads
parameters:
- $ref: '#/components/parameters/OrganizationIdHeader'
- name: time_range
in: query
description: Predefined time range
schema:
type: string
enum:
- today
- this_week
- this_month
- last_7_days
- last_30_days
- custom
- name: start_date
in: query
description: Start date for custom range (ISO 8601)
schema:
type: string
format: date-time
- name: end_date
in: query
description: End date for custom range (ISO 8601)
schema:
type: string
format: date-time
- name: group_by
in: query
description: Group results by field
schema:
type: string
enum:
- submitted_by
- initiative_id
- instance_type
- name: initiative_id
in: query
description: Filter to specific team
schema:
type: string
responses:
'200':
description: Aggregated workload statistics
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WorkloadStats'
request_id:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/workloads/{workload_id}:
get:
operationId: getWorkload
summary: Get workload
description: Retrieve details for a specific workload.
tags:
- Workloads
parameters:
- $ref: '#/components/parameters/WorkloadIdPath'
- $ref: '#/components/parameters/OrganizationIdHeader'
responses:
'200':
description: Workload details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Workload'
request_id:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
Workload:
type: object
properties:
workload_id:
type: string
example: wl_abc123
name:
type: string
status:
type: string
enum:
- pending
- running
- completed
- failed
- cancelled
submitted_by:
type: string
initiative_id:
type: string
instance_type:
type: string
gpu_count:
type: integer
submitted_at:
type: string
format: date-time
started_at:
type: string
format: date-time
completed_at:
type: string
format: date-time
nullable: true
duration_seconds:
type: integer
gpu_hours_used:
type: number
exit_code:
type: integer
nullable: true
is_managed:
type: boolean
cluster_id:
type: string
namespace:
type: string
PageMetadata:
type: object
properties:
next_token:
type: string
total_count:
type: integer
WorkloadStats:
type: object
properties:
summary:
type: object
properties:
total_workloads:
type: integer
total_gpu_hours:
type: number
average_duration_seconds:
type: integer
success_rate:
type: number
grouped:
type: array
items:
type: object
properties:
initiative_id:
type: string
workload_count:
type: integer
gpu_hours:
type: number
success_rate:
type: number
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
details:
type: array
items:
type: object
request_id:
type: string
parameters:
NextTokenParam:
name: next_token
in: query
description: Pagination cursor from a previous response
schema:
type: string
WorkloadIdPath:
name: workload_id
in: path
required: true
description: The unique workload identifier
schema:
type: string
RequestIdHeader:
name: X-Request-Id
in: header
required: false
description: Optional request ID for tracing.
schema:
type: string
OrganizationIdHeader:
name: X-Organization-Id
in: header
required: true
description: Your organization ID (not required for /health).
schema:
type: string
LimitParam:
name: limit
in: query
description: Number of results per page (1-100, default 20)
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
Unauthorized:
description: Missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: The caller's role does not permit access to this resource
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Bearer token — a JWT from Cognito or a Chamber API token (prefix `ch.`). Generate API tokens in the dashboard under Settings > API Tokens.