Skip to main content
Export Employee Task Profile data
curl --request POST \
  --url https://{tenant_name}.{region}.techwolf.ai/export/employees/task_profiles \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "limit": 10,
  "include": [
    "ai_impact",
    "source_events"
  ],
  "filters": [
    {
      "filter": "is_active",
      "is_active": true
    }
  ]
}
'
{
  "has_next": true,
  "next_starting_after": "id_4",
  "records": [
    {
      "external_id": "61a6e076-d780-11ec-9d64-0242ac120002",
      "tasks": [
        {
          "task_id": "write-unit-tests",
          "task": "Write unit tests",
          "validation_state": "validated",
          "weekly_hours": 5,
          "ai_impact": {
            "level": "H2",
            "rationale": "Portions can be automated via LLM test generation"
          },
          "linked_skills": [
            {
              "skill_id": "4b85469d-6729-4d70-9876-a0faa2a2f63b",
              "skill": "Python"
            },
            {
              "skill_id": "e03c1859-3bae-4700-b2c5-ede2937038de",
              "skill": "Test-Driven Development"
            }
          ],
          "source_events": [
            {
              "external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
              "event_type": "project"
            }
          ]
        },
        {
          "task_id": "review-pull-requests",
          "task": "Review pull requests",
          "validation_state": "suggested",
          "ai_impact": {
            "level": "H3",
            "rationale": "Requires human judgment for code quality assessment"
          },
          "linked_skills": [
            {
              "skill_id": "4b85469d-6729-4d70-9876-a0faa2a2f63b",
              "skill": "Python"
            }
          ],
          "source_events": [
            {
              "external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
              "event_type": "project"
            }
          ]
        }
      ]
    }
  ]
}

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Query Parameters

external_vendor
enum<string>
default:techwolf

The external vendor vocabulary you want to see the Skills displayed in. This will only work for vendors that are activated on your tenant.

Available options:
techwolf,
workday,
sap_attribute_library
Example:

"workday"

response_format
enum<string>
default:list

The format of the response profile.

Available options:
list,
hierarchy
Example:

"list"

Body

application/json
limit
integer
required

Number of Employees to return per page.

Required range: 1 <= x <= 100
Example:

10

starting_after
string<slug>

The external_id of the last Employee seen. Used for cursor-based pagination. Omit on the first request.

Maximum string length: 100
Example:

"id_9"

include
enum<string>[]

Additional attributes that will be included in the response body.

  • ai_impact — includes AI impact level and rationale per task.
  • source_events — includes the source events behind each task.
  • linked_skills — includes Skills linked to each task, with Skill ID and name. Use the external_vendor query 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.
Available options:
ai_impact,
source_events,
linked_skills,
rejected_tasks,
weekly_hours
Example:
["ai_impact", "source_events"]
filters
(is_active · object | last_updated · object)[]

A set of filters to apply on the exported Employees.

Response

OK

has_next
boolean
required

True when there is more data after this page.

Example:

true

records
object[]
required

List of Employee 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 Employee.

Example:
{
"external_id": "61a6e076-d780-11ec-9d64-0242ac120002",
"tasks": [
{
"task_id": "write-unit-tests",
"task": "Write unit tests",
"validation_state": "validated",
"weekly_hours": 5,
"ai_impact": {
"level": "H2",
"rationale": "Portions can be automated via LLM test generation"
},
"linked_skills": [
{
"skill_id": "4b85469d-6729-4d70-9876-a0faa2a2f63b",
"skill": "Python"
},
{
"skill_id": "e03c1859-3bae-4700-b2c5-ede2937038de",
"skill": "Test-Driven Development"
}
],
"source_events": [
{
"external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
"event_type": "project"
}
]
},
{
"task_id": "review-pull-requests",
"task": "Review pull requests",
"validation_state": "suggested",
"ai_impact": {
"level": "H3",
"rationale": "Requires human judgment for code quality assessment"
},
"linked_skills": [
{
"skill_id": "4b85469d-6729-4d70-9876-a0faa2a2f63b",
"skill": "Python"
}
],
"source_events": [
{
"external_id": "5cbdbdbe-5f44-4423-8157-520f8a2f429a",
"event_type": "job"
}
]
}
]
}
next_starting_after
string<slug>

The cursor value to use as starting_after on the next request. Only present when has_next is true.

Maximum string length: 100
Example:

"id_4"