> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.umnai.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.umnai.com/_mcp/server.

# Jobs

A training job runs a training configuration against a dataset.

It brings together a workspace, dataset, training configuration, compute configuration, and optional constraints. When the job completes, it creates the model that can be inspected, evaluated, and deployed.

Training jobs are asynchronous. Create a job, then retrieve it to monitor status, progress, current stage, and the model produced by the run.

## Create a training job

Create a training job when the dataset, workspace, training configuration, and compute configuration are ready.

### Request

POST [https://api.hi.umnai.com/training-jobs](https://api.hi.umnai.com/training-jobs)

```curl
curl -X POST https://api.hi.umnai.com/training-jobs \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "name": "Sample Training Job",
  "dataset_id": "3c4d09e4ef50b370ae0efacdb43ec2dd",
  "training_configuration_id": "236f09a5d73018a9b8324105f1ee82df",
  "compute_configuration_id": "351df95006b1350e597762a1d58e9319",
  "model_name": "Sample Model Name",
  "managed_spot_training": false
}'
```

```python
import requests

url = "https://api.hi.umnai.com/training-jobs"

payload = {
    "name": "Sample Training Job",
    "dataset_id": "3c4d09e4ef50b370ae0efacdb43ec2dd",
    "training_configuration_id": "236f09a5d73018a9b8324105f1ee82df",
    "compute_configuration_id": "351df95006b1350e597762a1d58e9319",
    "model_name": "Sample Model Name",
    "managed_spot_training": False
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.hi.umnai.com/training-jobs';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"name":"Sample Training Job","dataset_id":"3c4d09e4ef50b370ae0efacdb43ec2dd","training_configuration_id":"236f09a5d73018a9b8324105f1ee82df","compute_configuration_id":"351df95006b1350e597762a1d58e9319","model_name":"Sample Model Name","managed_spot_training":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.hi.umnai.com/training-jobs"

	payload := strings.NewReader("{\n  \"name\": \"Sample Training Job\",\n  \"dataset_id\": \"3c4d09e4ef50b370ae0efacdb43ec2dd\",\n  \"training_configuration_id\": \"236f09a5d73018a9b8324105f1ee82df\",\n  \"compute_configuration_id\": \"351df95006b1350e597762a1d58e9319\",\n  \"model_name\": \"Sample Model Name\",\n  \"managed_spot_training\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.hi.umnai.com/training-jobs")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"Sample Training Job\",\n  \"dataset_id\": \"3c4d09e4ef50b370ae0efacdb43ec2dd\",\n  \"training_configuration_id\": \"236f09a5d73018a9b8324105f1ee82df\",\n  \"compute_configuration_id\": \"351df95006b1350e597762a1d58e9319\",\n  \"model_name\": \"Sample Model Name\",\n  \"managed_spot_training\": false\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.hi.umnai.com/training-jobs")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Sample Training Job\",\n  \"dataset_id\": \"3c4d09e4ef50b370ae0efacdb43ec2dd\",\n  \"training_configuration_id\": \"236f09a5d73018a9b8324105f1ee82df\",\n  \"compute_configuration_id\": \"351df95006b1350e597762a1d58e9319\",\n  \"model_name\": \"Sample Model Name\",\n  \"managed_spot_training\": false\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.hi.umnai.com/training-jobs', [
  'body' => '{
  "name": "Sample Training Job",
  "dataset_id": "3c4d09e4ef50b370ae0efacdb43ec2dd",
  "training_configuration_id": "236f09a5d73018a9b8324105f1ee82df",
  "compute_configuration_id": "351df95006b1350e597762a1d58e9319",
  "model_name": "Sample Model Name",
  "managed_spot_training": false
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.hi.umnai.com/training-jobs");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Sample Training Job\",\n  \"dataset_id\": \"3c4d09e4ef50b370ae0efacdb43ec2dd\",\n  \"training_configuration_id\": \"236f09a5d73018a9b8324105f1ee82df\",\n  \"compute_configuration_id\": \"351df95006b1350e597762a1d58e9319\",\n  \"model_name\": \"Sample Model Name\",\n  \"managed_spot_training\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "name": "Sample Training Job",
  "dataset_id": "3c4d09e4ef50b370ae0efacdb43ec2dd",
  "training_configuration_id": "236f09a5d73018a9b8324105f1ee82df",
  "compute_configuration_id": "351df95006b1350e597762a1d58e9319",
  "model_name": "Sample Model Name",
  "managed_spot_training": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.hi.umnai.com/training-jobs")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Response (201)

```json
{
  "id": "5647cb5d7800f6834be0f591838d5d9a",
  "name": "Sample Training Job",
  "dataset": {
    "id": "3c4d09e4ef50b370ae0efacdb43ec2dd",
    "name": "Sample Dataset"
  },
  "account": {
    "id": "e268443e43d93dab7ebef303bbe9642f",
    "name": "Sample Account"
  },
  "workspace": {
    "id": "1629dee48cc4e53161f9b2be8614e062",
    "name": "Sample Workspace"
  },
  "training_configuration": {
    "id": "236f09a5d73018a9b8324105f1ee82df",
    "name": "Sample Training Configuration"
  },
  "compute_configuration": {
    "id": "351df95006b1350e597762a1d58e9319",
    "name": "Sample Compute Configuration"
  },
  "status": "STARTING",
  "managed_spot_training": false,
  "maximum_runtime_seconds": 3600,
  "created_at": "2026-03-15T10:15:30.000000Z",
  "model": {
    "id": "20f35e630daf44dbfa4c3f68f5399d8c",
    "name": "Sample Model"
  },
  "maximum_wait_time_seconds": 3600,
  "model_constraints": [],
  "model_constraint_groups": [],
  "created_by": {
    "id": "dad46b2058752ffde5eaf02f1eb6abd5",
    "name": "Sample User"
  },
  "updated_at": "2026-03-15T10:15:30.000000Z",
  "stage": "sample_stage",
  "progress": 0.5,
  "stage_progress": 0.5
}
```

The request names the model that will be created. It can also include individual model constraints, constraint groups, maximum runtime settings, and managed spot training.

Creating a training job requires an active workspace. Use the workspace `id` as the active workspace context when starting the job.

## Managed spot training

`managed_spot_training` controls whether the job can use managed spot instances to reduce cost.

Checkpointing is not currently supported for managed spot training. If a spot instance is interrupted, training starts again from the beginning. This can lead to long waits or cause the job to time out, because spot availability and interruptions are unpredictable.

When managed spot training is enabled, `maximum_wait_time_seconds` controls how long the job may wait to start. `maximum_runtime_seconds` controls how long the job may run.

## Monitor jobs

Retrieve jobs to monitor training progress or inspect previous runs.

### Request

GET [https://api.hi.umnai.com/training-jobs](https://api.hi.umnai.com/training-jobs)

```curl
curl https://api.hi.umnai.com/training-jobs \
     -H "Authorization: Bearer <token>"
```

```python
import requests

url = "https://api.hi.umnai.com/training-jobs"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.hi.umnai.com/training-jobs';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.hi.umnai.com/training-jobs"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.hi.umnai.com/training-jobs")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.hi.umnai.com/training-jobs")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.hi.umnai.com/training-jobs', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.hi.umnai.com/training-jobs");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.hi.umnai.com/training-jobs")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Response (200)

```json
{
  "data": [
    {
      "id": "ea8b745ead39ec442fc3b4fba359bf98",
      "name": "Sample Organisation",
      "status": "ACTIVE",
      "created_at": "2026-03-11T16:04:19.749000Z",
      "updated_at": null
    }
  ],
  "pagination": {
    "total_items": 1,
    "items_per_page": 10,
    "current_page": 1,
    "total_pages": 1
  }
}
```

To inspect a specific job, retrieve it by `id`.

### Request

GET [https://api.hi.umnai.com/training-jobs/\{trainingJobId}](https://api.hi.umnai.com/training-jobs/\{trainingJobId})

```curl
curl https://api.hi.umnai.com/training-jobs/{trainingJobId} \
     -H "Authorization: Bearer <token>"
```

```python
import requests

url = "https://api.hi.umnai.com/training-jobs/:trainingJobId"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.hi.umnai.com/training-jobs/:trainingJobId';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.hi.umnai.com/training-jobs/:trainingJobId"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.hi.umnai.com/training-jobs/:trainingJobId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.hi.umnai.com/training-jobs/:trainingJobId")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.hi.umnai.com/training-jobs/:trainingJobId', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.hi.umnai.com/training-jobs/:trainingJobId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.hi.umnai.com/training-jobs/:trainingJobId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Response (200)

```json
{
  "data": [
    {
      "id": "ea8b745ead39ec442fc3b4fba359bf98",
      "name": "Sample Organisation",
      "status": "ACTIVE",
      "created_at": "2026-03-11T16:04:19.749000Z",
      "updated_at": null
    }
  ],
  "pagination": {
    "total_items": 1,
    "items_per_page": 10,
    "current_page": 1,
    "total_pages": 1
  }
}
```

Job responses include the job status, overall progress, current stage, and stage progress.

| Status       | Meaning                                         |
| ------------ | ----------------------------------------------- |
| `STARTING`   | The job has been created and is being prepared. |
| `RUNNING`    | The job is processing data.                     |
| `FINALIZING` | The job is completing final processing steps.   |
| `COMPLETED`  | The job finished successfully.                  |
| `FAILED`     | The job stopped because of an error.            |
| `STOPPED`    | The job was stopped before completion.          |

### Training stages

An induction training job can move through these stages:

* Shard sampling
* Interactions
* Binning
* Training
* Build
* ESM

## Update a job

Update a training job when you need to rename it.

### Request

PATCH [https://api.hi.umnai.com/training-jobs/\{trainingJobId}](https://api.hi.umnai.com/training-jobs/\{trainingJobId})

```curl
curl -X PATCH https://api.hi.umnai.com/training-jobs/trainingJobId \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "name": "Sample Training Job"
}'
```

```python
import requests

url = "https://api.hi.umnai.com/training-jobs/:trainingJobId"

payload = { "name": "Sample Training Job" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.hi.umnai.com/training-jobs/:trainingJobId';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"name":"Sample Training Job"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.hi.umnai.com/training-jobs/:trainingJobId"

	payload := strings.NewReader("{\n  \"name\": \"Sample Training Job\"\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.hi.umnai.com/training-jobs/:trainingJobId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"Sample Training Job\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.hi.umnai.com/training-jobs/:trainingJobId")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Sample Training Job\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.hi.umnai.com/training-jobs/:trainingJobId', [
  'body' => '{
  "name": "Sample Training Job"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.hi.umnai.com/training-jobs/:trainingJobId");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Sample Training Job\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["name": "Sample Training Job"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.hi.umnai.com/training-jobs/:trainingJobId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Response (200)

```json
{
  "id": "5647cb5d7800f6834be0f591838d5d9a",
  "name": "Sample Training Job",
  "dataset": {
    "id": "3c4d09e4ef50b370ae0efacdb43ec2dd",
    "name": "Sample Dataset"
  },
  "account": {
    "id": "e268443e43d93dab7ebef303bbe9642f",
    "name": "Sample Account"
  },
  "workspace": {
    "id": "1629dee48cc4e53161f9b2be8614e062",
    "name": "Sample Workspace"
  },
  "training_configuration": {
    "id": "236f09a5d73018a9b8324105f1ee82df",
    "name": "Sample Training Configuration"
  },
  "compute_configuration": {
    "id": "351df95006b1350e597762a1d58e9319",
    "name": "Sample Compute Configuration"
  },
  "status": "STARTING",
  "managed_spot_training": false,
  "maximum_runtime_seconds": 3600,
  "created_at": "2026-03-15T10:15:30.000000Z",
  "model": {
    "id": "20f35e630daf44dbfa4c3f68f5399d8c",
    "name": "Sample Model"
  },
  "maximum_wait_time_seconds": 3600,
  "model_constraints": [],
  "model_constraint_groups": [],
  "created_by": {
    "id": "dad46b2058752ffde5eaf02f1eb6abd5",
    "name": "Sample User"
  },
  "updated_at": "2026-03-15T10:15:30.000000Z",
  "stage": "sample_stage",
  "progress": 0.5,
  "stage_progress": 0.5
}
```

## Delete a job

Delete a training job when it should no longer be kept.

### Request

DELETE [https://api.hi.umnai.com/training-jobs/\{trainingJobId}](https://api.hi.umnai.com/training-jobs/\{trainingJobId})

```curl
curl -X DELETE https://api.hi.umnai.com/training-jobs/trainingJobId \
     -H "Authorization: Bearer <token>"
```

```python
import requests

url = "https://api.hi.umnai.com/training-jobs/trainingJobId"

headers = {"Authorization": "Bearer <token>"}

response = requests.delete(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.hi.umnai.com/training-jobs/trainingJobId';
const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.hi.umnai.com/training-jobs/trainingJobId"

	req, _ := http.NewRequest("DELETE", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.hi.umnai.com/training-jobs/trainingJobId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.delete("https://api.hi.umnai.com/training-jobs/trainingJobId")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('DELETE', 'https://api.hi.umnai.com/training-jobs/trainingJobId', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.hi.umnai.com/training-jobs/trainingJobId");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.hi.umnai.com/training-jobs/trainingJobId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "DELETE"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```