openapi: 3.0.3
info:
title: Workiz Jobs Leads API
description: 'The Workiz REST API lets home-service businesses read and write their field service data - jobs, leads, team members, time off, and payments - and receive outbound webhooks for new jobs and new leads. Workiz is field service management (FSM) software covering scheduling and dispatch, CRM, estimates and invoicing, payments, and communications.
All calls are made to https://api.workiz.com/api/v1/ with the account API token embedded directly in the request path (https://api.workiz.com/api/v1/{api_token}/...). To obtain credentials, enable the Developer API add-on from the Workiz Feature Center / Marketplace and copy the API token (and secret) from Settings > Integrations. Responses are JSON, and HTTP status codes signal errors.
Endpoint coverage is marked per operation with `x-endpoint-status`: `confirmed` operations are grounded in Workiz''s public developer docs and the community PHP/Python SDKs; `modeled` operations (some Lead writes, the Payments detail, and the webhook payloads) reflect capabilities exposed through Workiz''s UI and integration partners (Make, Pipedream) whose exact request/response shapes are gated behind the authenticated developer portal and are represented here as a best-effort model.'
version: '1.0'
contact:
name: Workiz
url: https://developer.workiz.com/
servers:
- url: https://api.workiz.com/api/v1/{api_token}
description: Workiz REST API. The account API token is part of the base path.
variables:
api_token:
default: YOUR_API_TOKEN
description: The account API token from the Workiz Developer API add-on (Settings > Integrations). It is placed directly in the URL path; there is no Authorization header. A paired API secret is issued for signed requests where required.
tags:
- name: Leads
description: Prospective work that can be converted into jobs.
paths:
/lead/all/:
get:
operationId: listLeads
tags:
- Leads
summary: List leads
description: Returns a paginated list of leads. Supports offset-based pagination.
x-endpoint-status: confirmed
parameters:
- name: records
in: query
required: false
description: Number of records to return per page.
schema:
type: integer
default: 100
- name: offset
in: query
required: false
description: Number of records to skip for pagination.
schema:
type: integer
default: 0
responses:
'200':
description: A list of leads.
content:
application/json:
schema:
$ref: '#/components/schemas/LeadListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/lead/get/{UUID}/:
parameters:
- $ref: '#/components/parameters/LeadUUID'
get:
operationId: getLead
tags:
- Leads
summary: Get a lead
description: Retrieves a single lead by its UUID.
x-endpoint-status: confirmed
responses:
'200':
description: The requested lead.
content:
application/json:
schema:
$ref: '#/components/schemas/LeadResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/lead/create/:
post:
operationId: createLead
tags:
- Leads
summary: Create a lead
description: Creates a new lead. Exposed through Workiz integration partners; request shape modeled here.
x-endpoint-status: modeled
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LeadInput'
responses:
'200':
description: The created lead.
content:
application/json:
schema:
$ref: '#/components/schemas/LeadResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/lead/update/:
post:
operationId: updateLead
tags:
- Leads
summary: Update a lead
description: Updates an existing lead. Exposed through Workiz integration partners; request shape modeled here.
x-endpoint-status: modeled
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LeadUpdateInput'
responses:
'200':
description: The updated lead.
content:
application/json:
schema:
$ref: '#/components/schemas/LeadResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
Unauthorized:
description: Missing or invalid API token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
LeadUpdateInput:
allOf:
- type: object
required:
- UUID
properties:
UUID:
type: string
Status:
type: string
enum:
- active
- lost
description: Mark the lead active or lost.
- $ref: '#/components/schemas/LeadInput'
Lead:
type: object
description: A Workiz lead (prospective work).
properties:
UUID:
type: string
SerialId:
type: integer
LeadType:
type: string
LeadSource:
type: string
Status:
type: string
FirstName:
type: string
LastName:
type: string
Phone:
type: string
Email:
type: string
Address:
type: string
City:
type: string
State:
type: string
PostalCode:
type: string
CreatedDate:
type: string
format: date-time
LeadListResponse:
type: object
properties:
flag:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/Lead'
has_more:
type: boolean
Error:
type: object
properties:
flag:
type: boolean
description: Workiz success flag; false on error.
code:
type: integer
data:
type: string
description: Human-readable error message.
LeadInput:
type: object
required:
- LeadType
properties:
LeadType:
type: string
LeadSource:
type: string
FirstName:
type: string
LastName:
type: string
Phone:
type: string
Email:
type: string
Address:
type: string
City:
type: string
State:
type: string
PostalCode:
type: string
Comments:
type: string
LeadResponse:
type: object
properties:
flag:
type: boolean
data:
$ref: '#/components/schemas/Lead'
parameters:
LeadUUID:
name: UUID
in: path
required: true
description: The UUID of the lead.
schema:
type: string