Supergood | Jobber API
Programmatically access Jobber client data, properties, schedules, quotes, and invoicing with a stable REST API. Supergood builds and operates production-grade, unofficial Jobber integrations so your team can automate field and office workflows without heavy custom engineering.
Plain English: Jobber is field service management software used by home service businesses (e.g., HVAC, plumbing, electrical, landscaping, cleaning) to manage clients, properties, scheduling and dispatch, quotes and jobs, invoicing and payments, and client communication. An unofficial API lets you programmatically pull client lists and properties, job calendars and visits, quotes and invoices, payments, attachments, and notes—and push new records or updates back into Jobber.
For a tech company integrating with Jobber, this means you can ingest real-time schedules to power dispatching and capacity planning, create quotes from your product (e.g., from a lead intake or inspection workflow), convert approved quotes into jobs, sync invoices and payments to your accounting system, and enrich your platform with field photos, checklists, and technician notes. You can also push new clients and properties, schedule visits, trigger notifications, and keep ERP, analytics, and workforce tools in lockstep.
What is Jobber?
Jobber (https://getjobber.com/) is a cloud platform for home and field service businesses that centralizes CRM, scheduling, quoting, job execution, and billing across back office and field teams. Companies use Jobber to manage client records and service locations, plan routes and calendars, build quotes and jobs, send invoices and take payments, and communicate with customers via a client portal.
Core product areas include:
- CRM & Client Management (e.g., clients, properties/locations, contacts, tags)
- Scheduling & Dispatch (e.g., jobs, visits/appointments, team assignment, routing)
- Quotes & Jobs (e.g., estimates, line items/services, approvals, job forms/checklists)
- Invoicing & Payments (e.g., invoices, taxes, payment capture, receipts)
- Communication & Client Portal (e.g., email/SMS, work requests, attachments/photos)
- Time Tracking & Team Management (e.g., timesheets, roles/permissions)
Common data entities:
- Clients, Contacts, and Users/Technicians
- Properties/Service Locations
- Work Requests/Leads
- Quotes/Estimates and Line Items
- Jobs, Visits/Appointments, and Schedules
- Invoices, Payments, Taxes, and Discounts
- Notes, Checklists/Forms, Photos/Attachments
The Jobber Integration Challenge
Service teams rely on Jobber daily, but turning portal-based workflows into API-driven automation has nuances:
- Role-based permissions: Admins, dispatchers, and technicians have distinct entitlements and visibility
- Field-first UX: Mobile flows (checklists, notes, photos) don’t map cleanly to simple CRUD operations
- Scheduling complexity: Visits, multi-day jobs, team assignments, routes, and overlapping calendars
- Workflow transitions: Quote → job → invoice paths, approvals, and client communications must be respected
- Financial accuracy: Taxes, discounts, partial payments, and accounting sync demand careful normalization
- Attachments and media: Photos and documents require secure upload/download handling and checksum validation
How Supergood Creates Jobber APIs
Supergood reverse-engineers authenticated browser and mobile interactions to deliver a resilient API endpoint layer for your Jobber tenant.
- Handles username/password, SSO/OAuth, and MFA (SMS, email, TOTP) securely
- 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
Client and Property Sync
- Mirror clients and their service locations into your CRM or data warehouse
- Keep contact details, addresses, and tags current for marketing and routing
- Standardize address formats and geocodes across multi-tenant operations
Quote-to-Job and Invoice Automation
- Generate quotes from inspections, IoT detections, or lead intake workflows
- Convert approved quotes into scheduled jobs with assigned technicians
- Push invoices to accounting and reconcile payments in near real time
Scheduling and Dispatch Orchestration
- Ingest job calendars and visits to power capacity planning and routing
- Auto-schedule visits based on priority, SLA, or proximity
- Trigger alerts for overdue jobs and balance workload across teams
Field Reporting: Photos, Notes, and Checklists
- Sync attachments and technician notes from visits into your platform
- Enforce checklists/forms and create follow-ups when thresholds are met
- Build customer-facing reports with before/after photos and timestamps
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_92b7e1",
"name": "Operations Manager",
"entitlements": ["clients", "properties", "quotes", "jobs", "invoices", "payments", "schedule"]
}
}
Clients
GET /clients: List clients with optional property details and filters.
Query parameters
- tag: string
- city, region: strings
- updatedFrom, updatedTo: ISO 8601 timestamps
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"clientId": "cl_1f92a0",
"displayName": "Brittany Lee",
"organizationName": null,
"emails": ["[email protected]"],
"phones": [{"type": "mobile", "number": "+1-404-555-0198"}],
"defaultPropertyId": "prp_88b32e",
"billingAddress": {
"line1": "500 Eastside Blvd",
"city": "Atlanta",
"region": "GA",
"postalCode": "30312",
"country": "US"
},
"properties": [
{
"propertyId": "prp_88b32e",
"label": "Home",
"address": {
"line1": "500 Eastside Blvd",
"city": "Atlanta",
"region": "GA",
"postalCode": "30312",
"country": "US"
},
"geocode": {"lat": 33.748995, "lon": -84.387982}
}
],
"tags": ["recurring", "vip"],
"updatedAt": "2026-01-20T13:45:00Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
POST /clients: Create a new client with primary contact and properties.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/clients \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"displayName": "Eastside Pediatrics",
"organizationName": "Eastside Pediatrics",
"primaryContact": {
"name": "Dr. Alex Kim",
"email": "[email protected]",
"phone": "+1-770-555-0134"
},
"billingAddress": {
"line1": "1120 Medical Park Dr",
"city": "Atlanta",
"region": "GA",
"postalCode": "30312",
"country": "US"
},
"properties": [
{
"label": "Clinic",
"address": {
"line1": "1120 Medical Park Dr",
"city": "Atlanta",
"region": "GA",
"postalCode": "30312",
"country": "US"
}
}
],
"tags": ["commercial", "priority"],
"marketingOptIn": true
}'
Example response
{
"clientId": "cl_51af80",
"status": "created",
"defaultPropertyId": "prp_3aa91d",
"createdAt": "2026-01-21T11:20:44Z"
}
Jobs
GET /jobs: List jobs with scheduled visits and assignment details.
Query parameters
- status: scheduled | in_progress | completed | canceled
- scheduledFrom, scheduledTo: ISO 8601 dates
- assignedUserId: string
- updatedFrom, updatedTo: ISO 8601 timestamps
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"jobId": "job_67c21a",
"jobNumber": "JB-2026-00128",
"title": "Quarterly HVAC Maintenance",
"clientId": "cl_1f92a0",
"propertyId": "prp_88b32e",
"status": "scheduled",
"schedule": {"startDate": "2026-02-01", "endDate": null},
"visits": [
{
"visitId": "vis_90e412",
"date": "2026-02-01",
"startTime": "09:00",
"endTime": "10:30",
"assignedToUserIds": ["u_45af1d", "u_92b711"],
"status": "scheduled"
}
],
"notes": "Bring MERV-13 filters",
"updatedAt": "2026-01-21T10:03:11Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Quotes
POST /quotes: Create a quote for a client/property with line items, taxes, and optional send settings.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/quotes \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"clientId": "cl_1f92a0",
"propertyId": "prp_88b32e",
"currency": "USD",
"validUntil": "2026-02-15",
"lineItems": [
{
"serviceId": "svc_hvac_maint",
"description": "HVAC maintenance visit",
"quantity": 1,
"unitPrice": 150.00,
"taxCode": "GA_STATE"
},
{
"serviceId": "svc_filter",
"description": "MERV-13 filters",
"quantity": 4,
"unitPrice": 25.00,
"taxCode": "GA_STATE"
}
],
"discount": {"type": "percent", "value": 10},
"notes": "Includes filter replacement.",
"sendOptions": {"email": true, "recipients": ["[email protected]"]},
"attachments": [
{"fileName": "scope.pdf", "uploadToken": "upl_08ab73"}
]
}'
Example response
{
"quoteId": "qte_729c10",
"status": "sent",
"subtotal": 250.00,
"discount": 25.00,
"tax": 16.88,
"total": 241.88,
"documentUrl": "https://clienthub.jobber.com/qte_729c10",
"createdAt": "2026-01-21T09:12:33Z"
}
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 enterprise throughput 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 clients, properties, quotes, jobs, invoices, and payments
- Security: Encrypted transport, scoped tokens, and audit logging; respects Jobber role-based permissions
- Webhooks: Optional asynchronous delivery for long-running workflows (e.g., quote approvals, visit completions, invoice payments)
Performance Characteristics
- Latency: Sub-second responses for list/detail queries under normal load
- Throughput: Designed for high-volume client sync and schedule/quote processing
- Reliability: Retry logic, backoff, and idempotency keys minimize duplicate actions
- 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 Jobber adapter tailored to your workflows and entitlements.
- Deploy with Monitoring
Go live with continuous monitoring and automatic adjustments as Jobber evolves.
Frequently Asked Questions
Q: Which Jobber modules can this integration cover?
Supergood supports workflows across commonly used modules such as CRM (clients, properties), Scheduling & Dispatch (jobs, visits), Quotes & Jobs, and Invoicing & Payments, subject to your licensing and entitlements. We scope coverage during integration assessment.
Q: How are MFA and SSO handled for automation?
We support username/password + MFA (SMS, email, TOTP) and can operate behind SSO/OAuth when enabled. Sessions are refreshed automatically with secure challenge handling.
Q: Can you sync invoices and payments to our ERP/accounting system?
Yes. We can normalize invoices, taxes, line items, and payments to match your ERP schema (e.g., QuickBooks Online) and deliver updates via webhooks or polling while complying with rate and permission constraints.
Q: Are attachments supported for quotes and jobs?
Yes. We support downloading artifacts and uploading attachments via signed uploads, with checksum validation and time-limited URLs.
Related Integrations
Intralinks API - Programmatically access the Intralinks VDR with Supergood
Ready to automate your Jobber workflows?
Supergood can have your Jobber integration live in days with no ongoing engineering maintenance.