Task types
50 built-in task types ship out of the box. Each has a default baseline (in minutes) cited from public benchmarks or Triad pilots. You can override any baseline for your workspace, or create a custom task type when nothing in the catalogue fits.
Custom + override are Pro and above.
Categories
support ops sales legal content research data dev
8 task types per category, give or take. Browse the full list at /task-types in the dashboard.
GET /v1/task-types
List built-ins + your org's customs + overrides.
curl https://humanhours.dev/v1/task-types?category=support \
-H "Authorization: Bearer $HUMANHOURS_API_KEY"
Open to all plans (read).
POST /v1/task-types
Create a custom task type. The key is a lowercase snake_case identifier you'll send in /v1/track calls.
curl -X POST https://humanhours.dev/v1/task-types \
-H "Authorization: Bearer $HUMANHOURS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"key": "saas_lead_qualification",
"display_name": "SaaS lead qualification",
"category": "sales",
"default_baseline_minutes": 12,
"baseline_source": "Internal SDR benchmark, 2026-Q1"
}'
The key must not collide with a built-in or another custom in your org. We return 422 validation_error if it does.
POST /v1/task-types/{key}/override
Override a built-in baseline for your workspace. The original is preserved, audit-logged, and shown alongside your override.
curl -X POST https://humanhours.dev/v1/task-types/email_classification/override \
-H "Authorization: Bearer $HUMANHOURS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"baseline_minutes_override": 6.0,
"reason": "Our emails are heavier than the benchmark"
}'
DELETE /v1/task-types/{key}
Archives a custom task type (soft delete). Existing events keep working; new /v1/track calls with that key return unknown_task_type. Archiving a built-in is rejected; remove the override instead.