curl --request POST \
--url https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"limit": 10,
"include": [
"ai_impact",
"source_data"
],
"filters": [
{
"filter": "is_active",
"is_active": true
}
]
}
'import requests
url = "https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles"
payload = {
"limit": 10,
"include": ["ai_impact", "source_data"],
"filters": [
{
"filter": "is_active",
"is_active": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
limit: 10,
include: ['ai_impact', 'source_data'],
filters: [{filter: 'is_active', is_active: true}]
})
};
fetch('https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'limit' => 10,
'include' => [
'ai_impact',
'source_data'
],
'filters' => [
[
'filter' => 'is_active',
'is_active' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles"
payload := strings.NewReader("{\n \"limit\": 10,\n \"include\": [\n \"ai_impact\",\n \"source_data\"\n ],\n \"filters\": [\n {\n \"filter\": \"is_active\",\n \"is_active\": true\n }\n ]\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(string(body))
}HttpResponse<String> response = Unirest.post("https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"limit\": 10,\n \"include\": [\n \"ai_impact\",\n \"source_data\"\n ],\n \"filters\": [\n {\n \"filter\": \"is_active\",\n \"is_active\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles")
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 \"limit\": 10,\n \"include\": [\n \"ai_impact\",\n \"source_data\"\n ],\n \"filters\": [\n {\n \"filter\": \"is_active\",\n \"is_active\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"has_next": true,
"next_starting_after": "id_4",
"records": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
"tasks": [
{
"task_id": "d1072baf-6f9b-bdb3-fb26-f790c10d4803",
"task": "Conduct machine learning experiments on customer datasets",
"validation_state": "validated",
"weekly_hours": 5,
"ai_impact": {
"level": "H1",
"rationale": "Highly automatable with AI-powered experiment tooling"
},
"linked_skills": [
{
"skill_id": "4b85469d-6729-4d70-9876-a0faa2a2f63b",
"skill": "Python"
},
{
"skill_id": "c110316a-41d3-46ef-a35e-dbb27785b1c8",
"skill": "Machine Learning"
}
],
"source_data": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}
]
},
{
"task_id": "7446d003-425e-8e8c-c723-0a3790b38841",
"task": "Review model outputs against ground-truth labels",
"validation_state": "suggested",
"ai_impact": {
"level": "H3",
"rationale": "Requires human judgment to evaluate model quality"
},
"linked_skills": [
{
"skill_id": "c110316a-41d3-46ef-a35e-dbb27785b1c8",
"skill": "Machine Learning"
}
],
"source_data": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}
]
}
]
}
]
}Export Job Task Profile data
Export Task Profiles for all Jobs by paginating through the data. Jobs are
returned in the order they were created (oldest first). Jobs without a task
profile will be included with an empty tasks array. Use the include
parameter to optionally expand tasks with AI impact information and/or their
source data. Use filters to narrow the set of Jobs returned, including
filtering by job family.
Note: This endpoint is experimental and may change in future versions.
curl --request POST \
--url https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"limit": 10,
"include": [
"ai_impact",
"source_data"
],
"filters": [
{
"filter": "is_active",
"is_active": true
}
]
}
'import requests
url = "https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles"
payload = {
"limit": 10,
"include": ["ai_impact", "source_data"],
"filters": [
{
"filter": "is_active",
"is_active": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
limit: 10,
include: ['ai_impact', 'source_data'],
filters: [{filter: 'is_active', is_active: true}]
})
};
fetch('https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'limit' => 10,
'include' => [
'ai_impact',
'source_data'
],
'filters' => [
[
'filter' => 'is_active',
'is_active' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles"
payload := strings.NewReader("{\n \"limit\": 10,\n \"include\": [\n \"ai_impact\",\n \"source_data\"\n ],\n \"filters\": [\n {\n \"filter\": \"is_active\",\n \"is_active\": true\n }\n ]\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(string(body))
}HttpResponse<String> response = Unirest.post("https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"limit\": 10,\n \"include\": [\n \"ai_impact\",\n \"source_data\"\n ],\n \"filters\": [\n {\n \"filter\": \"is_active\",\n \"is_active\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant_name}.{region}.techwolf.ai/job_architecture/export/jobs/task_profiles")
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 \"limit\": 10,\n \"include\": [\n \"ai_impact\",\n \"source_data\"\n ],\n \"filters\": [\n {\n \"filter\": \"is_active\",\n \"is_active\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"has_next": true,
"next_starting_after": "id_4",
"records": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
"tasks": [
{
"task_id": "d1072baf-6f9b-bdb3-fb26-f790c10d4803",
"task": "Conduct machine learning experiments on customer datasets",
"validation_state": "validated",
"weekly_hours": 5,
"ai_impact": {
"level": "H1",
"rationale": "Highly automatable with AI-powered experiment tooling"
},
"linked_skills": [
{
"skill_id": "4b85469d-6729-4d70-9876-a0faa2a2f63b",
"skill": "Python"
},
{
"skill_id": "c110316a-41d3-46ef-a35e-dbb27785b1c8",
"skill": "Machine Learning"
}
],
"source_data": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}
]
},
{
"task_id": "7446d003-425e-8e8c-c723-0a3790b38841",
"task": "Review model outputs against ground-truth labels",
"validation_state": "suggested",
"ai_impact": {
"level": "H3",
"rationale": "Requires human judgment to evaluate model quality"
},
"linked_skills": [
{
"skill_id": "c110316a-41d3-46ef-a35e-dbb27785b1c8",
"skill": "Machine Learning"
}
],
"source_data": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}
]
}
]
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
- Token URL
- https://techwolf.eu.auth0.com/oauth/token
Query Parameters
The external vendor vocabulary you want to see the Skills displayed in. This will only work for vendors that are activated on your tenant.
techwolf, workday, sap_attribute_library "workday"
The format of the response profile.
list, hierarchy "list"
Body
Number of Jobs to return per page.
1 <= x <= 10010
The external_id of the last Job seen. Used for cursor-based pagination. Omit on the first request.
100"job-id-9"
Additional attributes that will be included in the response body.
ai_impact— includes AI impact level and rationale per task.source_data— includes the job profile data entries behind each task.linked_skills— includes Skills linked to each task, with Skill ID and name. Use theexternal_vendorquery parameter to display Skill names in an external vendor vocabulary.rejected_tasks— includes tasks that were rejected via PATCH feedback (excluded by default).weekly_hours— includes the estimated number of hours spent on each task per week.
ai_impact, source_data, linked_skills, rejected_tasks, weekly_hours ["ai_impact", "source_data"]
A set of filters to apply on the exported Jobs.
- is_active
- last_updated
- job_family_id_is_in_list
Show child attributes
Show child attributes
Response
OK
True when there is more data after this page.
true
List of Job task profile records.
Shape depends on response_format: each record contains either a flat tasks array (list) or a nested hierarchy tree (hierarchy).
Record shape when response_format=list (default). The profile consists of a flat list of Tasks assigned to the Job.
- Option 1
- Option 2
Show child attributes
Show child attributes
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7",
"tasks": [
{
"task_id": "d1072baf-6f9b-bdb3-fb26-f790c10d4803",
"task": "Conduct machine learning experiments on customer datasets",
"validation_state": "validated",
"weekly_hours": 5,
"ai_impact": {
"level": "H1",
"rationale": "Highly automatable with AI-powered experiment tooling"
},
"linked_skills": [
{
"skill_id": "4b85469d-6729-4d70-9876-a0faa2a2f63b",
"skill": "Python"
},
{
"skill_id": "c110316a-41d3-46ef-a35e-dbb27785b1c8",
"skill": "Machine Learning"
}
],
"source_data": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}
]
},
{
"task_id": "7446d003-425e-8e8c-c723-0a3790b38841",
"task": "Review model outputs against ground-truth labels",
"validation_state": "suggested",
"ai_impact": {
"level": "H3",
"rationale": "Requires human judgment to evaluate model quality"
},
"linked_skills": [
{
"skill_id": "c110316a-41d3-46ef-a35e-dbb27785b1c8",
"skill": "Machine Learning"
}
],
"source_data": [
{
"external_id": "a3903505-eb84-42dc-a79f-5e7b1fe897b7"
}
]
}
]
}
Cursor value for the next page. Only present when has_next is true.
100"id_4"
Was this page helpful?