---
title: "Technician Profile"
method: GET
path: "/api/field/technicians/{technician_id}/profile"
tags: ["field"]
---

# Technician Profile

`GET /api/field/technicians/{technician_id}/profile`

## Request

- Base URL: `https://api.electricair.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.electricair.io/api/field/technicians/{technician_id}/profile`
- Auth: none declared

Everything dispatch wants to know about a technician. Pay is not included (see field settings).

## Path parameters

- `technician_id` integer, required

## Response `200`

OK

- TechnicianProfileSchema
  - `technician` TechnicianSchema, required
    - `id` integer, required
    - `name` string, required
    - `color` string, required
    - `role` string, required
    - `team` string, required
    - `email` string, required
    - `phone` string, required
    - `active` boolean, required
    - `pay_type` string, nullable
    - `hourly_rate` number, nullable
    - `salary_per_period` number, nullable
    - `burden_rate` number, nullable
    - `level` integer, nullable
    - `skills` string[], required
    - `hire_date` string, date, nullable
    - `user_id` integer, nullable
    - `notes` string, required
    - `ai_coaching` string
    - `vehicles` string[], required
    - `devices` DeviceSchema[], required
      - `id` integer, required
      - `name` string, required
      - `app_version` string, required
      - `last_seen_at` string, date-time, nullable
      - `created_at` string, date-time, required
    - `pairing_pending` boolean, required
    - `jobs_last_90_days` integer
    - `next_visit_at` string, date-time, nullable
    - `next_visit_label` string, nullable
    - `clocked_in` boolean
  - `stats` ProfileStatsSchema, required
    - `installs_90_days` integer, required
    - `jobs_90_days` integer, required
    - `avg_install_days` number, nullable
    - `callbacks_90_days` integer, required
    - `qc_passed_share` number, nullable
    - `hours_this_week` number, required
    - `lead_share` number, nullable
  - `upcoming` DispatchVisitSchema[], required
    - `visit` VisitSchema, required
      - `id` integer, required
      - `job_id` integer, required
      - `starts_at` string, date-time, required
      - `ends_at` string, date-time, required
      - `arrival_window_start` string, date-time, nullable
      - `arrival_window_end` string, date-time, nullable
      - `status` string, required
      - `status_label` string, required
      - `tentative` boolean
      - `notes` string, required
      - `arrived_at` string, date-time, nullable
      - `finished_at` string, date-time, nullable
      - `crew` CrewMemberSchema[], required
        - `id` integer, required
        - `name` string, required
        - `color` string, required
        - `role` string, required
        - `team` string, required
        - `is_lead` boolean, required
        - `vehicle_name` string, nullable
    - `job` JobCardSchema, required: A job as it appears on a list or the schedule board.
      - `id` integer, required
      - `number` string, required
      - `summary` string, required
      - `job_type_id` integer, required
      - `job_type_name` string, required
      - `category` string, required
      - `business_unit` string, required
      - `status` string, required
      - `status_label` string, required
      - `priority` integer, required
      - `customer_name` string, required
      - `address` AddressSchema
        - `line1` string, required
        - `line2` string, required
        - `city` string, required
        - `state` string, required
        - `postal_code` string, required
        - `formatted` string, required
        - `latitude` number, nullable
        - `longitude` number, nullable
      - `project_id` integer, nullable
      - `deal_id` integer, nullable
      - `service_request_id` integer, nullable
      - `customer_id` integer, nullable
      - `estimated_hours` number, nullable
      - `planned_days` integer
      - `sold_hours` number, nullable
      - `crew_size` integer
      - `suggest_helper` boolean
      - `plan_note` string
      - `next_visit_at` string, date-time, nullable
      - `completed_at` string, date-time, nullable
      - `forms_open` integer
      - `job_summary` string
      - `starts_at` string, date-time, nullable
      - `finish_at` string, date-time, nullable
      - `finish_overridden` boolean
      - `unbooked_days` string[]
      - `appointments_needed` integer
      - `appointments_booked` integer
      - `appointments_crewed` integer
      - `appointments_started` integer
      - `tags` DispatchTagSchema[]
        - `key` string, required
        - `label` string, required
        - `detail` string, required
  - `recent_jobs` ProfileJobSchema[], required
    - `job` JobCardSchema, required: A job as it appears on a list or the schedule board.
      - `id` integer, required
      - `number` string, required
      - `summary` string, required
      - `job_type_id` integer, required
      - `job_type_name` string, required
      - `category` string, required
      - `business_unit` string, required
      - `status` string, required
      - `status_label` string, required
      - `priority` integer, required
      - `customer_name` string, required
      - `address` AddressSchema
        - `line1` string, required
        - `line2` string, required
        - `city` string, required
        - `state` string, required
        - `postal_code` string, required
        - `formatted` string, required
        - `latitude` number, nullable
        - `longitude` number, nullable
      - `project_id` integer, nullable
      - `deal_id` integer, nullable
      - `service_request_id` integer, nullable
      - `customer_id` integer, nullable
      - `estimated_hours` number, nullable
      - `planned_days` integer
      - `sold_hours` number, nullable
      - `crew_size` integer
      - `suggest_helper` boolean
      - `plan_note` string
      - `next_visit_at` string, date-time, nullable
      - `completed_at` string, date-time, nullable
      - `forms_open` integer
      - `job_summary` string
      - `starts_at` string, date-time, nullable
      - `finish_at` string, date-time, nullable
      - `finish_overridden` boolean
      - `unbooked_days` string[]
      - `appointments_needed` integer
      - `appointments_booked` integer
      - `appointments_crewed` integer
      - `appointments_started` integer
      - `tags` DispatchTagSchema[]
        - `key` string, required
        - `label` string, required
        - `detail` string, required
    - `days_on_site` integer, required
    - `was_lead` boolean, required
    - `had_callback` boolean, required
  - `time_off` BlockSchema[], required
    - `id` integer, required
    - `technician_id` integer, required
    - `technician_name` string, required
    - `kind` string, required
    - `kind_label` string, required
    - `starts_at` string, date-time, required
    - `ends_at` string, date-time, required
    - `notes` string, required
  - `vehicle` VehicleSchema
    - `id` integer, required
    - `name` string, required
    - `make` string, required
    - `model` string, required
    - `year` integer, nullable
    - `plate` string, required
    - `vin` string, required
    - `status` string, required
    - `status_label` string, required
    - `technicians` TechnicianRefSchema[], required
      - `id` integer, required
      - `name` string, required
      - `color` string, required
      - `role` string, required
      - `team` string, required
    - `odometer` integer, nullable
    - `next_service_miles` integer, nullable
    - `next_service_on` string, date, nullable
    - `registration_expires_on` string, date, nullable
    - `insurance_expires_on` string, date, nullable
    - `notes` string, required
    - `alerts` string[], required
  - `worked_with` TechnicianRefSchema[], required
    - `id` integer, required
    - `name` string, required
    - `color` string, required
    - `role` string, required
    - `team` string, required

## Changes

> 22 revisions in range; 1 not diffed.

- **2026-10-30** `2667fc5b11f5`: 1 info
  - added the optional property `technician/ai_coaching` to the response with the `200` status
- **2026-10-28** `558d42db3b2e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/changes/api/field/technicians/:technician_id/profile/get.md)

---

[API](https://skmtc.dev/electricair/apis/electric-air-autoquote-api.md) - [All operations](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/llms.txt) - [OpenAPI document](https://skmtc.dev/electricair/apis/electric-air-autoquote-api/revisions/a13d832a5676?raw)
