ai.techwolf.employee.skill_profile.updated.v1) and a data object with
tenant and resource identifiers. You only need to support the event types you
consume; the health check event is required for all consumers.
Event type reference
Events are grouped by entity. Follow the links to the full specification and example payload for each type. Employee- Skill Profile Updated - Employee Skills added/removed or attributes updated
- Suggested Skill Profile Updated - Employee suggested (inferred, not yet validated) Skills changed
- Skill Profile Updated - Job Skills added/removed or attributes updated
- Suggested Skill Profile Updated - Job suggested (inferred, not yet validated) Skills changed
- Skill Profile Updated - Course Skills added/removed
- Skill Created - New Skill in vocabulary or Custom Skill created
- Skill Updated - Skill or Custom Skill updated
- Skill Deleted - Skill removed from vocabulary or Custom Skill deleted
- Taxonomy Updated - The tenant Taxonomy or Vocabulary changes
- Health Check - Liveness check
Event specifications
Below are the full specifications for each event type, grouped by entity: when it is emitted, expected frequency, suggested consumer action, and payload format. The expected frequency is expressed per affected entity (e.g. per Employee, per Job); this is not the total number of webhooks per day. Note that this is only a high-level indication; actual frequency is dependent on the activity levels in the SkillEngine API or any linked system such as the TechWolf Skill Assistant, the TechWolf Console, external platforms with integrations, etc. As for when the events are emitted, we offer at-least-once delivery on at least the triggers specified per event. TechWolf may add new fields to existing webhook versions (e.g. extra fields in thedata object). Your endpoint should tolerate unknown fields and not break
when new ones are sent.
Employee Skill Profile Updated
An empty Skill Profile (
"skills": []) is a valid state: it means inference
has run for the Employee but no Skills could be inferred (yet). Treat these
webhooks like any other — fetch the Skill Profile by external_id without
special-casing. As soon as Skills are inferred or validated, they will flow
through on a subsequent webhook.- v1 - latest version
Event type:
ai.techwolf.employee.skill_profile.updated.v1Event dataEmployee Suggested Skill Profile Updated
This event covers suggested Skills only (inferred, not yet validated or
rejected). It is separate from Employee Skill Profile
Updated, which covers validated Skill
Profile changes. Subscribe to it on a webhook to be notified when the
suggested Skills change.
- v1 - latest version
Event type:
ai.techwolf.employee.skill_profile.suggested_updated.v1Event dataJob Skill Profile Updated
An empty Skill Profile (
"skills": []) is a valid state: it means inference
has run for the Job but no Skills could be inferred (yet). Treat these
webhooks like any other — fetch the Skill Profile by external_id without
special-casing. As soon as Skills are inferred or validated, they will flow
through on a subsequent webhook.- v1 - latest version
Event type:
ai.techwolf.job_architecture.job.skill_profile.updated.v1Event dataJob Suggested Skill Profile Updated
This event covers suggested Skills only (inferred, not yet validated or
rejected). It is separate from Job Skill Profile
Updated, which covers validated Skill Profile
changes. Subscribe to it on a webhook to be notified when the suggested
Skills change.
- v1 - latest version
Event type:
ai.techwolf.job_architecture.job.skill_profile.suggested_updated.v1Event dataCourse Skill Profile Updated
- v1 - latest version
Event type:
ai.techwolf.course.skill_profile.updated.v1Event dataSkill Created
- v1 - latest version
Event type:
ai.techwolf.taxonomy.skill.created.v1Event dataSkill Updated
- v1 - latest version
Event type:
ai.techwolf.taxonomy.skill.updated.v1Event dataSkill Deleted
- v1 - latest version
Event type:
ai.techwolf.taxonomy.skill.deleted.v1Event dataTaxonomy Updated
- v1 - latest version
Event type:
ai.techwolf.taxonomy.updated.v1Event dataHealth Check
Payload format