Supergood | Kickserv API
Programmatically access Kickserv job, schedule, customer, and financial data with a stable REST API. Supergood builds and operates production-grade, unofficial Kickserv integrations so your team can automate field and office workflows without heavy custom engineering.
Plain English: Kickserv is field service management software used by home and commercial service companies (HVAC, plumbing, electrical, cleaning, and more) to manage customers, service locations, work orders, scheduling/dispatch, estimates, invoices, and payments—plus a technician mobile app for the field. An unofficial API lets you pull customers and locations, job/work order details, technician assignments, calendar events, job notes and photos, estimates, invoices, payments, timesheets, and equipment—and push new jobs, status changes, assignments, estimates/invoices, and attachments back into Kickserv.
For a tech company integrating with Kickserv, this means you can ingest real-time schedules to power routing, trigger work orders from IoT alerts, sync invoices to accounting, embed online booking and estimate requests, automate reminders and SLA tracking, or enrich your platform with field notes, photos, and service history. You can also push technician assignments, update job statuses in near real time, create invoices from your procurement system, and keep downstream systems (ERP/accounting, CRM, analytics, payroll) in lockstep.
What is Kickserv?
Kickserv (https://www.kickserv.com/) is a cloud platform for field service operations that centralizes customer records, scheduling and dispatch, work orders, estimating and invoicing, payments, and field data capture.
Core product areas include:
- CRM & Customers (accounts, contacts, service locations, service history)
- Scheduling & Dispatch (calendar/board views, routes, technician assignments, reminders)
- Jobs/Work Orders (status, tasks, notes, photos, parts/materials)
- Estimates & Invoicing (quotes, approvals, taxes/discounts, deposits, payments)
- Technician Mobile App (time tracking, check-in/out, signatures, attachments)
- Time Tracking & Job Costing (labor, materials, billable vs. non-billable)
- Equipment/Assets & Maintenance (customer equipment, serials, warranties, PM plans)
- Accounting Integrations (e.g., QuickBooks sync for customers, invoices, payments)
Common data entities:
- Customers, Contacts, and Service Locations
- Jobs/Work Orders and Appointments/Visits
- Technician Users, Teams, Roles, and Permissions
- Estimates/Quotes, Invoices, Line Items, Taxes/Discounts, Payments
- Items/Services and Price Books
- Timesheets, Labor Entries, and Job Costs
- Notes, Photos, Files/Attachments
- Equipment/Assets and Service History
The Kickserv Integration Challenge
Service teams rely on Kickserv daily, but turning portal-based workflows into API-driven automation presents real-world challenges:
- Scheduling complexity: Recurring jobs, multi-stop routes, overlapping time windows, and last-minute changes require careful, idempotent updates
- Multi-entity relationships: Customer → Location → Job → Appointment → Estimate/Invoice → Payment demands consistent joins and backfills
- Accounting rigor: Taxes, discounts, partial payments, and QuickBooks sync must remain accurate and auditable
- Field data variance: Photos, notes, and attachments vary by tech and device; uploads and retry logic need to be resilient
- Role-based access: Dispatchers, techs, and admins see different data; automation must respect permissions and customer entitlements
How Supergood Creates Kickserv APIs
Supergood reverse-engineers authenticated browser flows and network interactions to deliver a resilient API endpoint layer for your Kickserv tenant.
- Handles username/password and MFA securely; supports SSO/OAuth where enabled
- Maintains session continuity with automated refresh and change detection
- Normalizes responses so you can integrate once and rely on consistent objects across modules
- Aligns with customer entitlements and role-based permissions to ensure compliant access
Use Cases
Customer, Location, and Service History Sync
- Mirror customers, contacts, and service locations into your CRM or data warehouse
- Keep addresses, tags, and lifecycle statuses consistent for analytics and outreach
- Pull job and invoice history to enrich support and account management tools
Scheduling and Dispatch Automation
- Create jobs from e-commerce or IoT alerts and auto-assign the right technician
- Optimize routes and update appointment windows while keeping Kickserv in sync
- Trigger SMS/email reminders and SLA alerts based on live status
Estimate-to-Invoice and Accounting Sync
- Generate estimates with line items and taxes from your quoting system
- Convert approved estimates to invoices; push to accounting automatically
- Reconcile invoice and payment statuses with your ERP (e.g., QuickBooks)
Field Data Capture and QA
- Ingest photos, notes, signatures, and attachments from the field
- Standardize job outcomes and checklists for compliance and quality metrics
- Trigger follow-ups when issues are detected or thresholds are exceeded
Time Tracking and Payroll
- Pull technician timesheets and labor entries for payroll and job costing
- Validate clock-in/out against schedules and locations
- Export normalized timesheet data to HRIS or payroll providers
Available Endpoints
Authentication
POST /sessions: Establish a session using credentials. Supergood manages MFA (SMS, email, TOTP) and SSO/OAuth when enabled. Returns a short-lived auth token maintained by the platform.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/sessions \
--header 'Authorization: Basic <Base64 encoded token>' \
--header 'Content-Type: application/json' \
--data '{
"username": "[email protected]",
"password": "<password>",
"mfa": { "type": "totp", "code": "123456" }
}'
Example response
{
"authToken": "eyJhbGciOi...",
"expiresIn": 3600,
"user": {
"id": "u_72ab01",
"name": "Dispatcher",
"entitlements": ["customers", "jobs", "scheduling", "invoices"]
}
}
POST /sessions/refresh: Refresh an existing token to keep sessions uninterrupted.
Customers
GET /customers: List customers with their primary contacts and service location summaries.
Query parameters
- q: string search across name, email, phone
- updatedFrom, updatedTo: ISO 8601 timestamps
- status: active | inactive
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"customerId": "cus_1f92a0",
"name": "Acme Facilities",
"type": "commercial",
"primaryContact": {
"name": "Jordan Lee",
"email": "[email protected]",
"phone": "+1-415-555-1234"
},
"serviceLocations": [
{
"locationId": "loc_88b32e",
"label": "HQ - 500 Eastside Blvd",
"address": {
"line1": "500 Eastside Blvd",
"city": "Atlanta",
"region": "GA",
"postalCode": "30312",
"country": "US"
},
"lastServiceDate": "2026-01-20"
}
],
"tags": ["priority", "hvac"],
"updatedAt": "2026-01-21T13:45:00Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Jobs & Scheduling
POST /jobs: Create a new job/work order with scheduling metadata and optional technician assignments.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/jobs \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"customerId": "cus_1f92a0",
"locationId": "loc_88b32e",
"summary": "Quarterly HVAC maintenance",
"description": "PM for rooftop units RTU-1 to RTU-4. Replace filters and inspect belts.",
"priority": "normal",
"requestedBy": "[email protected]",
"scheduledWindow": {
"startAt": "2026-02-01T09:00:00-05:00",
"endAt": "2026-02-01T12:00:00-05:00"
},
"assignments": [
{"technicianId": "tech_45af1d"},
{"technicianId": "tech_92b711"}
],
"serviceItems": [
{"itemCode": "HVAC-FLTR-MERV8", "description": "MERV-8 filter", "quantity": 8, "unitPrice": 12.50},
{"itemCode": "LABOR-HVAC", "description": "HVAC Labor", "quantity": 3.0, "unitPrice": 95.00}
],
"attachments": [
{"fileName": "roof_access_map.pdf", "uploadToken": "upl_98dc3a"}
],
"referenceId": "order-8793"
}'
Example response
{
"jobId": "job_67c21a",
"number": "WO-2026-0128",
"status": "scheduled",
"scheduledWindow": {
"startAt": "2026-02-01T14:00:00Z",
"endAt": "2026-02-01T17:00:00Z"
},
"createdAt": "2026-01-21T09:12:33Z",
"referenceId": "order-8793"
}
PATCH /jobs/{jobId}/status: Update job status and optionally record timestamps and outcomes. Idempotent via an Idempotency-Key header.
curl --request PATCH \
--url https://api.supergood.ai/integrations/<integration_id>/jobs/job_67c21a/status \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 5b7b2f9d-2e4a-4b1e-9a21-1f9b2e3c1a4d' \
--data '{
"status": "completed",
"arrivalAt": "2026-02-01T14:12:05Z",
"startedAt": "2026-02-01T14:20:00Z",
"completedAt": "2026-02-01T16:55:12Z",
"outcome": "completed",
"notes": "Replaced all filters. RTU-2 belt worn; recommend replacement next visit.",
"resolutionCodes": ["filters_replaced", "belt_wear_observed"]
}'
Example response
{
"jobId": "job_67c21a",
"status": "completed",
"arrivalAt": "2026-02-01T14:12:05Z",
"completedAt": "2026-02-01T16:55:12Z",
"updatedAt": "2026-02-01T16:55:15Z"
}
Invoices
POST /invoices: Create an invoice (optionally from a job or estimate) with line items, taxes, and delivery options.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/invoices \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"customerId": "cus_1f92a0",
"jobId": "job_67c21a",
"issueDate": "2026-02-01",
"dueDate": "2026-02-15",
"referenceNumber": "INV-2026-1001",
"lineItems": [
{"itemCode": "LABOR-HVAC", "description": "HVAC Labor", "quantity": 3.0, "unitPrice": 95.00, "taxable": true},
{"itemCode": "HVAC-FLTR-MERV8", "description": "MERV-8 filter", "quantity": 8, "unitPrice": 12.50, "taxable": true}
],
"discounts": [{"type": "percent", "value": 5.0}],
"taxes": [{"name": "State Sales Tax", "rate": 7.5}],
"notes": "Thank you for your business.",
"sendOptions": {"email": ["[email protected]"], "attachPdf": true}
}'
Example response
{
"invoiceId": "inv_51af80",
"status": "sent",
"jobId": "job_67c21a",
"total": 378.44,
"balanceDue": 378.44,
"createdAt": "2026-02-01T17:05:44Z"
}
Equipment/Assets
GET /equipment: List customer equipment/assets and their service history summary for proactive maintenance.
Query parameters
- customerId: string
- locationId: string
- updatedFrom, updatedTo: ISO 8601 timestamps
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"equipmentId": "eq_90e412",
"customerId": "cus_1f92a0",
"locationId": "loc_88b32e",
"name": "RTU-2",
"type": "rooftop_unit",
"manufacturer": "Carrier",
"model": "48TCED08",
"serialNumber": "CARR-RTU2-001",
"installedOn": "2023-06-15",
"warrantyExpiresOn": "2026-06-15",
"lastServiceDate": "2026-01-20",
"nextRecommendedService": "2026-04-20",
"tags": ["maintenance_plan"]
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Technical Specifications
- Authentication: Username/password with MFA (SMS, email, TOTP) and SSO/OAuth where enabled; supports service accounts or customer-managed credentials
- Response format: JSON with consistent resource schemas and pagination across modules
- Rate limits: Tuned for operational workloads while honoring customer entitlements and usage controls
- Session management: Automatic reauth and cookie/session rotation with health checks
- Data freshness: Near real-time retrieval of customers, jobs, schedules, and financial objects
- Security: Encrypted transport, scoped tokens, and audit logging; respects Kickserv role-based permissions
- Webhooks: Optional asynchronous delivery for long-running workflows (e.g., job status changes, invoice payments)
Performance Characteristics
- Latency: Sub-second responses for list/detail queries under normal load
- Throughput: Designed for high-volume schedule syncing, job creation, and invoice processing
- Reliability: Retry logic, backoff, and idempotency keys minimize duplicate actions (especially for status updates and invoicing)
- Adaptation: Continuous monitoring for UI/API changes with rapid adapter updates
Getting Started
- Schedule Integration Assessment
Book a 30-minute session to confirm your modules, licensing, and authentication model.
- Supergood Builds and Validates Your API
We deliver a hardened Kickserv adapter tailored to your workflows and entitlements.
- Deploy with Monitoring
Go live with continuous monitoring and automatic adjustments as Kickserv evolves.
Frequently Asked Questions
Q: Which Kickserv modules can this integration cover?
Supergood supports workflows across commonly used areas such as Customers/Locations, Scheduling & Dispatch, Jobs/Work Orders, Estimates & Invoices, Payments, Timesheets, and Equipment/Assets—subject to your licensing and entitlements. We scope coverage during integration assessment.
Q: How do you handle recurring jobs and last-minute schedule changes?
We provide idempotent job creation and update semantics, conflict detection for overlapping assignments, and safe window adjustments. Optional webhooks and polling help you react to changes in near real time.
Q: Can you sync invoices and payments to our accounting system?
Yes. We can normalize invoices, taxes, discounts, and payments to match your ERP schema (e.g., QuickBooks) and deliver updates via webhooks or polling while complying with rate and permission constraints.
Q: Do you support attachments, photos, and signatures from the field?
Yes. We support downloading artifacts and uploading attachments via signed uploads, with checksum validation and time-limited URLs.
Q: How are technician permissions and data privacy handled?
Access is scoped to the authenticated tenant and governed by Kickserv role-based permissions. We honor visibility rules for technicians, dispatchers, and admins, and log all access for audit.
Related Integrations
Intralinks API - Programmatically access the Intralinks VDR with Supergood
Ready to automate your Kickserv workflows?
Supergood can have your Kickserv integration live in days with no ongoing engineering maintenance.