Projects
Projects implement resource allocation policies and create segregation between different initiatives. It can represent a team, an individual, or an initiative that shares resources or has a specific resources budget (quota). See Projects for more information.
List projects
Bearer authentication
Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
["name!=some-name"]Sort results by a parameters.
Sort results in descending or ascending order.
ascPossible values: The offset of the first item returned in the collection.
100The maximum number of entries to return.
50Filter results by a free text search.
test projectok
1Bad request.
Unauthorized
Forbidden
unexpected error
GET /api/v1/org-unit/projects HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"projects": [
{
"description": "text",
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
},
"id": 33,
"name": "organization1",
"clusterId": "71f69d83-ba66-4822-adf5-55ce55efd210",
"parentId": "53a9228e-a722-420d-a102-9dc90da2efca",
"requestedNamespace": "runai-proj1",
"enforceRunaiScheduler": true,
"status": {
"namespace": "runai-proj1",
"phase": "Creating",
"phaseMessage": "Project is ready",
"lastUpdatedTime": "2026-01-01T00:00:00.000Z",
"nodePoolQuotaStatuses": [
{
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"nodePoolName": "text",
"nodePoolId": "text"
}
],
"quotaStatus": {
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
}
},
"additionalStatusData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
},
"totalResources": {
"gpuQuota": 1,
"cpuQuota": 1,
"memoryQuota": 1
},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"updatedBy": "text",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": "[Circular Reference]"
}
},
"effective": {
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"overtimeData": {
"range24hData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range7dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range30dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
}
},
"resources": []
}
],
"next": 1
}Create a project
Bearer authentication
Updatable fields
The description of the project.
An ordered list of node pools that defines the default scheduling preference for workloads in this project. The Scheduler will attempt to schedule workloads on node pools in this order. This setting is enforced if no node pool list is defined in the workload policy.
The unique name of the project within the cluster. Must be a valid Kubernetes name (lowercase, alphanumeric, hyphens allowed).
organization1The id of the cluster.
71f69d83-ba66-4822-adf5-55ce55efd210The custom Kubernetes namespace name for the project. If not specified, a namespace will be auto-generated using the pattern runai-.
runai-proj1When set to true, enforces that all pods in this project's namespace are scheduled using the NVIDIA Run:ai Scheduler (runai-scheduler). Supported for cluster version 2.21 and later.
trueThe ID of the parent department. When specified, the project is created as a child of this department and inherits its quota, the quota of other projects within the department and its scheduling rules.
35000Created
Updatable fields
The description of the project.
An ordered list of node pools that defines the default scheduling preference for workloads in this project. The Scheduler will attempt to schedule workloads on node pools in this order. This setting is enforced if no node pool list is defined in the workload policy.
33organization1The id of the cluster.
71f69d83-ba66-4822-adf5-55ce55efd210department parent uuid
53a9228e-a722-420d-a102-9dc90da2efcathe project's namespace only if requested
runai-proj1a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+
Bad request.
Unauthorized
Forbidden
The specified resource already exists
unexpected error
POST /api/v1/org-unit/projects HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 539
{
"description": "text",
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
},
"name": "organization1",
"clusterId": "71f69d83-ba66-4822-adf5-55ce55efd210",
"requestedNamespace": "runai-proj1",
"enforceRunaiScheduler": true,
"parentId": 35000,
"resources": []
}{
"description": "text",
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
},
"id": 33,
"name": "organization1",
"clusterId": "71f69d83-ba66-4822-adf5-55ce55efd210",
"parentId": "53a9228e-a722-420d-a102-9dc90da2efca",
"requestedNamespace": "runai-proj1",
"enforceRunaiScheduler": true,
"status": {
"namespace": "runai-proj1",
"phase": "Creating",
"phaseMessage": "Project is ready",
"lastUpdatedTime": "2026-01-01T00:00:00.000Z",
"nodePoolQuotaStatuses": [
{
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"nodePoolName": "text",
"nodePoolId": "text"
}
],
"quotaStatus": {
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
}
},
"additionalStatusData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
},
"totalResources": {
"gpuQuota": 1,
"cpuQuota": 1,
"memoryQuota": 1
},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"updatedBy": "text",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": "[Circular Reference]"
}
}
}
},
"effective": {
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"overtimeData": {
"range24hData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range7dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range30dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
}
},
"resources": []
}Get a project by id
Bearer authentication
The project id
575c19e8-c7c3-45b0-8290-2f47397a8383ok
Updatable fields
The description of the project.
An ordered list of node pools that defines the default scheduling preference for workloads in this project. The Scheduler will attempt to schedule workloads on node pools in this order. This setting is enforced if no node pool list is defined in the workload policy.
33organization1The id of the cluster.
71f69d83-ba66-4822-adf5-55ce55efd210department parent uuid
53a9228e-a722-420d-a102-9dc90da2efcathe project's namespace only if requested
runai-proj1a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+
Unauthorized
Forbidden
The specified resource was not found
unexpected error
GET /api/v1/org-unit/projects/{projectId} HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"description": "text",
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
},
"id": 33,
"name": "organization1",
"clusterId": "71f69d83-ba66-4822-adf5-55ce55efd210",
"parentId": "53a9228e-a722-420d-a102-9dc90da2efca",
"requestedNamespace": "runai-proj1",
"enforceRunaiScheduler": true,
"status": {
"namespace": "runai-proj1",
"phase": "Creating",
"phaseMessage": "Project is ready",
"lastUpdatedTime": "2026-01-01T00:00:00.000Z",
"nodePoolQuotaStatuses": [
{
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"nodePoolName": "text",
"nodePoolId": "text"
}
],
"quotaStatus": {
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
}
},
"additionalStatusData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
},
"totalResources": {
"gpuQuota": 1,
"cpuQuota": 1,
"memoryQuota": 1
},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"updatedBy": "text",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": "[Circular Reference]"
}
}
}
},
"effective": {
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"overtimeData": {
"range24hData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range7dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range30dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
}
},
"resources": []
}Update project by Id
Bearer authentication
The project id
575c19e8-c7c3-45b0-8290-2f47397a8383Updatable fields
The description of the project.
An ordered list of node pools that defines the default scheduling preference for workloads in this project. The Scheduler will attempt to schedule workloads on node pools in this order. This setting is enforced if no node pool list is defined in the workload policy.
a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+
Updated
Updatable fields
The description of the project.
An ordered list of node pools that defines the default scheduling preference for workloads in this project. The Scheduler will attempt to schedule workloads on node pools in this order. This setting is enforced if no node pool list is defined in the workload policy.
33organization1The id of the cluster.
71f69d83-ba66-4822-adf5-55ce55efd210department parent uuid
53a9228e-a722-420d-a102-9dc90da2efcathe project's namespace only if requested
runai-proj1a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+
Bad request.
Unauthorized
Forbidden
The specified resource was not found
unexpected error
PUT /api/v1/org-unit/projects/{projectId} HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 413
{
"description": "text",
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
},
"enforceRunaiScheduler": true,
"resources": []
}{
"description": "text",
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
},
"id": 33,
"name": "organization1",
"clusterId": "71f69d83-ba66-4822-adf5-55ce55efd210",
"parentId": "53a9228e-a722-420d-a102-9dc90da2efca",
"requestedNamespace": "runai-proj1",
"enforceRunaiScheduler": true,
"status": {
"namespace": "runai-proj1",
"phase": "Creating",
"phaseMessage": "Project is ready",
"lastUpdatedTime": "2026-01-01T00:00:00.000Z",
"nodePoolQuotaStatuses": [
{
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"nodePoolName": "text",
"nodePoolId": "text"
}
],
"quotaStatus": {
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
}
},
"additionalStatusData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
},
"totalResources": {
"gpuQuota": 1,
"cpuQuota": 1,
"memoryQuota": 1
},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"updatedBy": "text",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": {
"id": "9f55253e-11ed-47c7-acef-fc4054768dbc",
"name": "organization1",
"parent": "[Circular Reference]"
}
}
}
},
"effective": {
"schedulingRules": {
"interactiveJobTimeLimitSeconds": 100,
"interactiveJobMaxIdleDurationSeconds": 100,
"interactiveJobPreemptIdleDurationSeconds": 100,
"trainingJobMaxIdleDurationSeconds": 100,
"trainingJobTimeLimitSeconds": 100
},
"defaultNodePools": [
"text"
],
"nodeTypes": {
"training": [
"text"
],
"workspace": [
"text"
],
"names": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"overtimeData": {
"range24hData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range7dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
},
"range30dData": {
"averageGpuAllocation": 10,
"averageGpuUtilization": 95,
"averageGpuMemoryUtilization": 95,
"updatedAt": "2021-08-01T00:00:00Z"
}
},
"resources": []
}Delete a project
Bearer authentication
The project id
575c19e8-c7c3-45b0-8290-2f47397a8383Accepted
No content
Deleted
Bad request.
Unauthorized
Forbidden
The specified resource was not found
unexpected error
unexpected error
DELETE /api/v1/org-unit/projects/{projectId} HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Update projects resources
Bearer authentication
The project id
575c19e8-c7c3-45b0-8290-2f47397a8383Resources assigned to this Project per Node Pool
The scheduling rank of this org-unit within the node pool. Determines the scheduling order of workloads between org-units. Workloads in higher-ranked org-units are scheduled before workloads in lower-ranked org-units. For example, all workloads in rank "High" will be scheduled before all workloads in rank "Medium".
MediumLowExample: HighDeprecated. Use rank instead. The scheduling priority for workloads in this node pool.
NormalUpdated
The scheduling rank of this org-unit within the node pool. Determines the scheduling order of workloads between org-units. Workloads in higher-ranked org-units are scheduled before workloads in lower-ranked org-units. For example, all workloads in rank "High" will be scheduled before all workloads in rank "Medium".
MediumLowExample: HighDeprecated. Use rank instead. The scheduling priority for workloads in this node pool.
NormalBad request.
Unauthorized
Forbidden
The specified resource was not found
unexpected error
PUT /api/v1/org-unit/projects/{projectId}/resources HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
[][]Partial updates to specific items in the list. Should be used for update one or more attributes of an item without modifying the entire resource.
Bearer authentication
The project id
575c19e8-c7c3-45b0-8290-2f47397a8383Resources assigned to this Project per Node Pool
The scheduling rank of this org-unit within the node pool. Determines the scheduling order of workloads between org-units. Workloads in higher-ranked org-units are scheduled before workloads in lower-ranked org-units. For example, all workloads in rank "High" will be scheduled before all workloads in rank "Medium".
MediumLowExample: HighDeprecated. Use rank instead. The scheduling priority for workloads in this node pool.
NormalUpdated
The scheduling rank of this org-unit within the node pool. Determines the scheduling order of workloads between org-units. Workloads in higher-ranked org-units are scheduled before workloads in lower-ranked org-units. For example, all workloads in rank "High" will be scheduled before all workloads in rank "Medium".
MediumLowExample: HighDeprecated. Use rank instead. The scheduling priority for workloads in this node pool.
NormalBad request.
Unauthorized
Forbidden
The specified resource was not found
unexpected error
PATCH /api/v1/org-unit/projects/{projectId}/resources HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
[][]Retrieves project data metrics from the metrics database. Use in reporting and analysis tools.
Bearer authentication
The project id
575c19e8-c7c3-45b0-8290-2f47397a8383Start date of time range to fetch data in ISO 8601 timestamp format.
2023-06-06T12:09:18.211ZEnd date of time range to fetch data in ISO 8601 timestamp format.
2023-06-07T12:09:18.211ZThe number of samples to take in the specified time range.
20Example: 20Filter using the nodepool.
defaultExecuted successfully.
Partial success.
Bad request.
Unauthorized
Forbidden
The specified resource was not found
unexpected error
unexpected error
GET /api/v1/org-unit/projects/{projectId}/metrics?metricType=GPU_QUOTA&start=2023-06-06T12%3A09%3A18.211Z&end=2023-06-07T12%3A09%3A18.211Z HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"measurements": [
{
"type": "ALLOCATED_GPU",
"labels": "{'gpu': '3'}",
"values": [
{
"value": "85",
"timestamp": "2023-06-06 12:09:18.211"
}
]
}
]
}Get projects telemetry data by the given query parameters
Bearer authentication
Filter using the Universally Unique Identifier (UUID) of the cluster.
d73a738f-fab3-430a-8fa3-5241493d7128Filter using the nodepool.
1Filter using the department id.
1Select a telemetry type.
Executed successfully.
specifies what data returned
ALLOCATION_RATIO2023-06-06 12:09:18.211Bad request.
Unauthorized
Forbidden
unexpected error
GET /api/v1/org-unit/projects/telemetry?telemetryType=GPU_QUOTA HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"type": "ALLOCATION_RATIO",
"timestamp": "2023-06-06 12:09:18.211",
"values": [
{
"value": "85",
"groups": [
{
"key": "department",
"value": "1",
"name": "department-A"
}
]
}
]
}count projects
Bearer authentication
Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
["name!=some-name"]Filter results by a free text search.
test projectok
1Bad request.
Unauthorized
Forbidden
unexpected error
GET /api/v1/org-unit/projects/count HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"count": 1
}List projects node pool resources
Bearer authentication
Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
["nodePoolName!=some-name"]Sort results by a parameters.
Sort results in descending or ascending order.
ascPossible values: The offset of the first item returned in the collection.
100The maximum number of entries to return.
50Filter results by a free text search.
test projectok
1Bad request.
Unauthorized
Forbidden
unexpected error
GET /api/v1/org-unit/projects/node-pool-resources HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"nodePoolResources": [
{
"id": "text",
"orgUnitId": "text",
"orgUnitName": "organization1",
"parentId": "text",
"clusterId": "text",
"nodePoolId": "text",
"nodePoolName": "text",
"rank": "text",
"resources": {
"gpu": {
"deserved": 1000,
"limit": 0,
"overQuotaWeight": 2
},
"cpu": {
"deserved": 1000,
"limit": 0,
"overQuotaWeight": 2
},
"memory": {
"deserved": 1000,
"limit": 0,
"overQuotaWeight": 2,
"units": "Mib"
}
},
"quotaStatus": {
"allocated": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"allocatedNonPreemptible": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
},
"requested": {
"gpu": 0,
"cpu": 1000,
"memory": 1000
}
}
}
],
"next": 1
}Count projects node pool resources
Bearer authentication
Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
["nodePoolName!=some-name"]Filter results by a free text search.
test projectok
1Bad request.
Unauthorized
Forbidden
unexpected error
GET /api/v1/org-unit/projects/node-pool-resources/count HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"count": 1
}Partially updates node pool resource quotas for multiple projects in a single request.
Bearer authentication
Batch of node pool resources patch requests.
Batch patch processed. Returns succeeded and failed items with totals and a batch id.
The unique ID of the batch operation.
Total number of items requested in the batch.
Number of items successfully processed.
Number of items that failed.
Bad request.
Unauthorized
Forbidden
unexpected error
unexpected error
POST /api/v1/org-unit/projects/node-pool-resources/batch-patch HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 244
{
"patchRequests": [
{
"orgUnitId": "3845",
"nodePoolId": "22",
"rank": "Low",
"resources": {
"gpu": {
"deserved": 2,
"limit": 2,
"overQuotaWeight": 2
}
}
},
{
"orgUnitId": "27552",
"nodePoolId": "33",
"resources": {
"cpu": {
"deserved": 20,
"limit": 20,
"overQuotaWeight": 20
}
}
}
]
}{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"succeeded": [
{
"orgUnitId": "435",
"orgUnitName": "proj1",
"nodePoolId": "12",
"nodePoolName": "default",
"parentId": "8755",
"resources": [
{
"gpu": {
"deserved": 2,
"limit": 2,
"overQuotaWeight": 2
}
}
]
}
],
"failed": [
{
"payload": {
"orgUnitId": "577",
"nodePoolId": "12",
"resources": [
{
"gpu": {
"deserved": 2,
"limit": 2,
"overQuotaWeight": 2
}
}
]
},
"code": 400,
"message": "bad request"
}
],
"totalRequested": 2,
"totalSuccessful": 1,
"totalFailed": 1
}Retrieves data from the metrics database. \n Use in reporting and analysis tools. \n Use a time range to return historical data (optional). If you use a start date, an end date is required.
Bearer authentication
The Universally Unique Identifier (UUID) of the cluster.
9f55255e-11ed-47c7-acef-fc4054768dbcStart of time range to fetch data from in UTC format.
2023-06-06 12:09:18.211End of time range to fetch data from in UTC format.
2023-06-07 12:09:18.211The number of samples to take in the specified time range.
20Example: 20Filter by unique nodepool name.
defaultSuccessfully retrieved metrics for all projects.
Unauthorized
Forbidden
The specified resource was not found
unexpected error
unexpected error
GET /v1/k8s/clusters/{clusterUuid}/projects/metrics HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"metadata": {
"projectId": 1,
"projectName": "project-a",
"departmentId": 8,
"departmentName": "default",
"clusterId": "71f69d83-ba66-4822-adf5-55ce55efd210",
"clusterName": "cluster-a"
},
"current": {
"resources": [
{
"numberOfPendingWorkloads": 1,
"gpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"cpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"memory": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"nodepoolName": "nodepoola"
}
]
},
"timeRange": null
}
],
"timeRange": {
"resources": [
{
"numberOfPendingWorkloads": 1,
"gpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"cpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"memory": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"timestamp": "2023-06-06T12:09:18.211Z"
}
]
}
}Retrieves data from the metrics database. \n Use in reporting and analysis tools. \n Use a time range to return historical data (optional). If you use a start date, an end date is required.
Bearer authentication
The Universally Unique Identifier (UUID) of the cluster.
9f55255e-11ed-47c7-acef-fc4054768dbcThe unique project-id of the project.
Start of time range to fetch data from in UTC format.
2023-06-06 12:09:18.211End of time range to fetch data from in UTC format.
2023-06-07 12:09:18.211The number of samples to take in the specified time range.
20Example: 20Filter by unique nodepool name.
defaultSuccessfully retrieved metrics for the project.
Unauthorized
Forbidden
The specified resource was not found
unexpected error
unexpected error
GET /v1/k8s/clusters/{clusterUuid}/projects/{projectId}/metrics HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"metadata": {
"projectId": 1,
"projectName": "project-a",
"departmentId": 8,
"departmentName": "default",
"clusterId": "71f69d83-ba66-4822-adf5-55ce55efd210",
"clusterName": "cluster-a"
},
"current": {
"resources": [
{
"numberOfPendingWorkloads": 1,
"gpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"cpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"memory": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"nodepoolName": "nodepoola"
}
]
},
"timeRange": {
"resources": [
{
"numberOfPendingWorkloads": 1,
"gpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"cpu": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"memory": {
"quota": 3,
"allocated": 2.5,
"utilization": 0.765
},
"timestamp": "2023-06-06T12:09:18.211Z"
}
]
}
}Retrieves a list of all projects and details from a specific cluster. Use in reporting and analysis tools. Deprecated - use /api/v1/org-unit/projects instead.
Bearer authentication
The Universally Unique Identifier (UUID) of the cluster.
9f55255e-11ed-47c7-acef-fc4054768dbcBackward compatibility of the 'permissions' field. If 'true', the 'permissions' field in the returned projects is not set. If 'false', the 'permissions' field is set in the returned projects.
trueMemory returned in MB. When set to false (default) memory will be returned in MiB.
trueSuccessfully retrieved a list of all the projects.
GET /v1/k8s/clusters/{clusterId}/projects HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Successfully retrieved a list of all the projects.
[
{
"name": "team-a",
"nodePoolsResources": [
{
"id": 1
},
{
"nodePool": {
"id": 3,
"name": "default"
},
"gpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"cpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"memory": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
}
}
],
"namespace": "ns-proj1",
"id": 5,
"departmentId": 2,
"tenantId": 2,
"clusterUuid": "71f69d83-ba66-4822-adf5-55ce55efd210",
"departmentName": "department-a",
"interactiveNodeAffinity": "none",
"trainNodeAffinity": "none",
"createdAt": "2021-12-14T16:04:15.099Z",
"status": {
"namespace": "runai-team-a",
"message": "NamespaceHandlerFailed",
"quotaStatuses": []
},
"phase": "Ready"
},
{
"defaultNodePools": [
"default"
],
"interactiveJobTimeLimitSecs": 3600,
"interactiveJobMaxIdleDurationSecs": 3000,
"interactivePreemptibleJobMaxIdleDurationSecs": 3000,
"trainingJobTimeLimitSecs": 3600,
"trainingJobMaxIdleDurationSecs": 3000,
"nodeAffinity": {
"train": {
"affinityType": "no_limit",
"selectedTypes": []
},
"interactive": {
"affinityType": "no_limit",
"selectedTypes": []
}
}
}
]Creates a new project in a specific cluster. Deprecated - use /api/v1/org-unit/projects instead.
Bearer authentication
The Universally Unique Identifier (UUID) of the cluster.
9f55255e-11ed-47c7-acef-fc4054768dbcBackward compatibility of the permissions field. If true, the
permissions field in the request body is ignored. If false,
relevant access rules for the permissions field are created in the project scope.
trueProject created successfully.
Bad Project request.
Project creation failed.
POST /v1/k8s/clusters/{clusterId}/projects HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 443
{
"name": "team-a",
"departmentId": 2,
"nodePoolsResources": [],
"namespace": "ns-proj1",
"defaultNodePools": [
"default"
],
"interactiveJobTimeLimitSecs": 3600,
"interactiveJobMaxIdleDurationSecs": 3000,
"interactivePreemptibleJobMaxIdleDurationSecs": 3000,
"trainingJobTimeLimitSecs": 3600,
"trainingJobMaxIdleDurationSecs": 3000,
"nodeAffinity": {
"train": {
"affinityType": "no_limit",
"selectedTypes": []
},
"interactive": {
"affinityType": "no_limit",
"selectedTypes": []
}
}
}{
"name": "team-a",
"nodePoolsResources": [
{
"id": 1
},
{
"nodePool": {
"id": 3,
"name": "default"
},
"gpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"cpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"memory": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
}
}
],
"namespace": "ns-proj1",
"id": 5,
"departmentId": 2,
"tenantId": 2,
"clusterUuid": "71f69d83-ba66-4822-adf5-55ce55efd210",
"departmentName": "department-a",
"interactiveNodeAffinity": "none",
"trainNodeAffinity": "none",
"createdAt": "2021-12-14T16:04:15.099Z",
"status": {
"namespace": "runai-team-a",
"message": "NamespaceHandlerFailed",
"quotaStatuses": []
},
"phase": "Ready",
"defaultNodePools": [
"default"
],
"interactiveJobTimeLimitSecs": 3600,
"interactiveJobMaxIdleDurationSecs": 3000,
"interactivePreemptibleJobMaxIdleDurationSecs": 3000,
"trainingJobTimeLimitSecs": 3600,
"trainingJobMaxIdleDurationSecs": 3000,
"nodeAffinity": {
"train": {
"affinityType": "no_limit",
"selectedTypes": []
},
"interactive": {
"affinityType": "no_limit",
"selectedTypes": []
}
}
}Retrieves the details of a specific project from a specific cluster. Use for project analysis. Requires view permissions to the queried project. Deprecated - use /api/v1/org-unit/projects/{projectId} instead.
Bearer authentication
The Universally Unique Identifier (UUID) of the cluster.
9f55255e-11ed-47c7-acef-fc4054768dbcThe unique project-id identifying the project.
Backward compatibility of the 'permissions' field. If 'true', the 'permissions' field in the returned projects is not set. If 'false', the 'permissions' field is set in the returned projects.
trueSuccessfully retrieved project details.
Project not found.
GET /v1/k8s/clusters/{clusterId}/projects/{id} HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"name": "team-a",
"nodePoolsResources": [
{
"id": 1
},
{
"nodePool": {
"id": 3,
"name": "default"
},
"gpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"cpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"memory": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
}
}
],
"namespace": "ns-proj1",
"id": 5,
"departmentId": 2,
"tenantId": 2,
"clusterUuid": "71f69d83-ba66-4822-adf5-55ce55efd210",
"departmentName": "department-a",
"interactiveNodeAffinity": "none",
"trainNodeAffinity": "none",
"createdAt": "2021-12-14T16:04:15.099Z",
"status": {
"namespace": "runai-team-a",
"message": "NamespaceHandlerFailed",
"quotaStatuses": []
},
"phase": "Ready",
"defaultNodePools": [
"default"
],
"interactiveJobTimeLimitSecs": 3600,
"interactiveJobMaxIdleDurationSecs": 3000,
"interactivePreemptibleJobMaxIdleDurationSecs": 3000,
"trainingJobTimeLimitSecs": 3600,
"trainingJobMaxIdleDurationSecs": 3000,
"nodeAffinity": {
"train": {
"affinityType": "no_limit",
"selectedTypes": []
},
"interactive": {
"affinityType": "no_limit",
"selectedTypes": []
}
}
}Updates a project's details in a specific cluster. For example, node pool resources, and others. Deprecated - use /api/v1/org-unit/projects/{projectId} instead.
Bearer authentication
The unique project-id.
The Universally Unique Identifier (UUID) of the cluster.
9f55255e-11ed-47c7-acef-fc4054768dbcBackward compatibility of the permissions field. If true, the
permissions field in the returned projects is not set. If false,
the permissions field is set in the returned projects.
trueAn updated project details.
Bad project request.
Project not found.
Could not update the project.
PUT /v1/k8s/clusters/{clusterId}/projects/{id} HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 614
{
"nodePoolsResources": [
{
"id": 1
},
{
"nodePool": {
"id": 3,
"name": "default"
},
"gpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"cpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"memory": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
}
}
],
"defaultNodePools": [
"default"
],
"interactiveJobTimeLimitSecs": 3600,
"interactiveJobMaxIdleDurationSecs": 3000,
"interactivePreemptibleJobMaxIdleDurationSecs": 3000,
"trainingJobTimeLimitSecs": 3600,
"trainingJobMaxIdleDurationSecs": 3000,
"nodeAffinity": {
"train": {
"affinityType": "no_limit",
"selectedTypes": []
},
"interactive": {
"affinityType": "no_limit",
"selectedTypes": []
}
}
}{
"name": "team-a",
"nodePoolsResources": [
{
"id": 1
},
{
"nodePool": {
"id": 3,
"name": "default"
},
"gpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"cpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"memory": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
}
}
],
"namespace": "ns-proj1",
"id": 5,
"departmentId": 2,
"tenantId": 2,
"clusterUuid": "71f69d83-ba66-4822-adf5-55ce55efd210",
"departmentName": "department-a",
"interactiveNodeAffinity": "none",
"trainNodeAffinity": "none",
"createdAt": "2021-12-14T16:04:15.099Z",
"status": {
"namespace": "runai-team-a",
"message": "NamespaceHandlerFailed",
"quotaStatuses": []
},
"phase": "Ready",
"defaultNodePools": [
"default"
],
"interactiveJobTimeLimitSecs": 3600,
"interactiveJobMaxIdleDurationSecs": 3000,
"interactivePreemptibleJobMaxIdleDurationSecs": 3000,
"trainingJobTimeLimitSecs": 3600,
"trainingJobMaxIdleDurationSecs": 3000,
"nodeAffinity": {
"train": {
"affinityType": "no_limit",
"selectedTypes": []
},
"interactive": {
"affinityType": "no_limit",
"selectedTypes": []
}
}
}Deletes a project from a specific cluster. Deprecated - use /api/v1/org-unit/projects/{projectId} instead.
Bearer authentication
The Universally Unique Identifier (UUID) of the cluster.
9f55255e-11ed-47c7-acef-fc4054768dbcThe unique id of the project.
2Project deleted successfully.
Project not found.
DELETE /v1/k8s/clusters/{clusterId}/projects/{id} HTTP/1.1
Host: app.run.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"name": "team-a",
"nodePoolsResources": [
{
"id": 1
},
{
"nodePool": {
"id": 3,
"name": "default"
},
"gpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"cpu": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
},
"memory": {
"deserved": 0,
"maxAllowed": 1000,
"overQuotaWeight": 2
}
}
],
"namespace": "ns-proj1",
"id": 5,
"departmentId": 2,
"tenantId": 2,
"clusterUuid": "71f69d83-ba66-4822-adf5-55ce55efd210",
"departmentName": "department-a",
"interactiveNodeAffinity": "none",
"trainNodeAffinity": "none",
"createdAt": "2021-12-14T16:04:15.099Z",
"status": {
"namespace": "runai-team-a",
"message": "NamespaceHandlerFailed",
"quotaStatuses": []
},
"phase": "Ready",
"defaultNodePools": [
"default"
],
"interactiveJobTimeLimitSecs": 3600,
"interactiveJobMaxIdleDurationSecs": 3000,
"interactivePreemptibleJobMaxIdleDurationSecs": 3000,
"trainingJobTimeLimitSecs": 3600,
"trainingJobMaxIdleDurationSecs": 3000,
"nodeAffinity": {
"train": {
"affinityType": "no_limit",
"selectedTypes": []
},
"interactive": {
"affinityType": "no_limit",
"selectedTypes": []
}
}
}Last updated