Jobs

The Job object represents a work order or service job in your Custom Trades CRM account.

View as Markdown

Endpoints

GET/api/v1/jobs
GET/api/v1/jobs/{uuid}
POST/api/v1/jobs
PUT/api/v1/jobs/{uuid}
DELETE/api/v1/jobs/{uuid}

The Job object

Attributes

uuidstring

Unique identifier for the job

job_numberstring |null

Job number

customer_uuidUUID

Customer UUID (required)

location_uuidUUID |null

Location UUID

assigned_to_user_idUUID |null

Assigned user ID

titlestring

Job title (required)

descriptionstring |null

Job description

statusstring

Status: 'New', 'Contacted', 'Scheduled', 'In Progress', 'Needs Approval', 'Ready to Invoice', 'Invoiced', 'Complete', 'Estimate Sent', 'Estimate Approved'

prioritystring

Priority: 'Low', 'Normal', 'High', 'Emergency'

is_urgentboolean

Whether job is urgent

is_emergencyboolean

Whether job is emergency

service_address1string |null

Service address line 1

service_address2string |null

Service address line 2

service_citystring |null

Service city

service_statestring |null

Service state

service_zipstring |null

Service ZIP code

estimated_amountnumber |null

Estimated job amount

actual_amountnumber |null

Actual job amount

scheduled_datestring |null

Scheduled date (ISO format)

scheduled_time_startstring |null

Scheduled start time (HH:MM format)

scheduled_time_endstring |null

Scheduled end time (HH:MM format)

started_atstring |null

Actual start timestamp

completed_atstring |null

Completion timestamp

invoiced_atstring |null

Invoice timestamp

paid_atstring |null

Payment timestamp

internal_notesstring |null

Internal notes

customer_notesstring |null

Customer-facing notes

created_atstring

ISO timestamp of creation

updated_atstring

ISO timestamp of last update

deleted_atstring |null

ISO timestamp of soft deletion (null if not deleted)

View as Markdown

THE JOB OBJECT

{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"job_number": "JOB-001",
"title": "Plumbing Repair",
"status": "Scheduled",
"priority": "Normal",
"customer": {
"uuid": "...",
"first_name": "John",
"last_name": "Doe"
},
"scheduled_date": "2025-01-20T10:00:00Z"
}

List jobs

Returns a paginated list of jobs for your company.

Parameters

include_deleted(boolean, default: false)required

Include soft-deleted jobs

status(string)

Filter by status (comma-separated for multiple: 'New,Scheduled')

location_uuid(UUID)

Filter by location

customer_uuid(UUID)

Filter by customer

assigned_to_user_id(UUID)

Filter by assigned user

priority(string)

Filter by priority ('Low', 'Normal', 'High', 'Emergency')

search(string)

Search term (searches title, description, job_number)

page(number, default: 1)required

Page number

limit(number, default: 50, max: 100)required

Items per page

GET/api/v1/jobs
curl -G \
https://customtradescrm.com/api/v1/jobs?status=Scheduled,In%20Progress \
-H "Authorization: Bearer ctc_live_..."

Response

{
"success": true,
"data": {
"jobs": [
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"job_number": "JOB-001",
"title": "Plumbing Repair",
"status": "Scheduled",
"priority": "Normal",
"customer": {
"uuid": "...",
"first_name": "John",
"last_name": "Doe"
},
"scheduled_date": "2025-01-20T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 1,
"total_pages": 1
}
}
}

Get a job

Returns a specific job by UUID with related customer, location, and assigned user information.

GET/api/v1/jobs/{uuid}
curl -G \
https://customtradescrm.com/api/v1/jobs/123e4567-e89b-12d3-a456-426614174000 \
-H "Authorization: Bearer ctc_live_..."

Create a job

Creates a new job. **Request Body:**

Parameters

customer_uuid(string)required

Customer UUID (must belong to your company)

title(string)required

Job title

location_uuid(string)

Location UUID

assigned_to_user_id(string)

Assigned user ID

description(string)

Job description

status(string)

Status (default: 'New')

priority(string)

Priority (default: 'Normal')

is_urgent(string)

boolean (default: false)

is_emergency(string)

boolean (default: false)

estimated_amount(string)

Estimated amount

scheduled_date(string)

Scheduled date (ISO format)

scheduled_time_start(string)

Start time (HH:MM format)

scheduled_time_end(string)

End time (HH:MM format)

internal_notes(string)

Internal notes

customer_notes(string)

Customer-facing notes

POST/api/v1/jobs
curl -G \

Response

{
"customer_uuid": "123e4567-e89b-12d3-a456-426614174000",
"title": "Plumbing Repair",
"description": "Fix leaky faucet",
"status": "New",
"priority": "Normal",
"scheduled_date": "2025-01-20T10:00:00Z",
"scheduled_time_start": "09:00",
"scheduled_time_end": "11:00"
}

Update a job

Updates a job. All fields are optional (partial update). **Request Body:**

PUT/api/v1/jobs/{uuid}
curl -G \

Response

{
"status": "In Progress",
"actual_amount": 150
}

Delete a job

Soft deletes a job (sets `deleted_at` timestamp).

Error codes

HTTP status codeDescription
200Success
400Validation error
401Unauthorized (invalid API key)
403Forbidden (add-on required, IP restriction, or usage limit exceeded)
404Job not found
500Server error
DELETE/api/v1/jobs/{uuid}
curl -X DELETE \
https://customtradescrm.com/api/v1/jobs/123e4567-e89b-12d3-a456-426614174000 \
-H "Authorization: Bearer ctc_live_..."