curl --request GET \
--url https://api.getbreezyapp.com/v1/job-financials \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/job-financials"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getbreezyapp.com/v1/job-financials', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "11111111-1111-4111-8111-000000000501",
"number": "200",
"account": {
"id": "11111111-1111-4111-8111-000000000101",
"name": "Example Household"
},
"location_id": "11111111-1111-4111-8111-000000001107",
"business_unit": {
"id": "11111111-1111-4111-8111-000000000201",
"name": "Service"
},
"job_type": {
"id": "11111111-1111-4111-8111-000000000301",
"name": "HVAC Service"
},
"job_class": "SERVICE",
"participants": [
{
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
}
],
"created_at": "2026-08-19T16:00:00Z",
"report_date": "2026-08-20",
"report_date_basis": "INVOICE_ISSUED",
"costing": {
"enabled": true,
"tracking_status": "TRACKED",
"verification_status": "VERIFIED",
"job_type_included": true
},
"currency": "USD",
"totals": {
"revenue_cents": 130000,
"labor_cost_cents": 6000,
"parts_cost_cents": 24000,
"equipment_cost_cents": 0,
"misc_cost_cents": 0,
"other_cost_cents": 0,
"total_cost_cents": 30000,
"gross_profit_cents": 100000,
"gross_margin": 0.7692
},
"invoices": [
{
"id": "11111111-1111-4111-8111-000000000601",
"number": "1001",
"status": "OPEN",
"issued_at": "2026-08-20T16:00:00Z",
"subtotal_cents": 100000
},
{
"id": "11111111-1111-4111-8111-000000000602",
"number": "1002",
"status": "PAID",
"issued_at": "2026-09-02T16:00:00Z",
"subtotal_cents": 30000
}
],
"cost_entries": [
{
"id": "11111111-1111-4111-8111-000000001501",
"category": "labor",
"source": "manual",
"name": "Recorded service labor",
"quantity": 120,
"quantity_unit": "minute",
"unit_cost_cents": 3000,
"total_cents": 6000,
"labor_activity": "On Site",
"misc_category": null,
"pricebook_item_id": null,
"created_at": "2026-09-08T19:00:00Z",
"updated_at": "2026-09-08T19:00:00Z"
},
{
"id": "11111111-1111-4111-8111-000000001502",
"category": "parts",
"source": "invoice",
"name": "Recorded replacement part",
"quantity": 2,
"quantity_unit": "unit",
"unit_cost_cents": 12000,
"total_cents": 24000,
"labor_activity": null,
"misc_category": null,
"pricebook_item_id": null,
"created_at": "2026-09-08T19:00:00Z",
"updated_at": "2026-09-08T19:00:00Z"
}
]
}
],
"pagination": {
"next_cursor": null
},
"meta": {
"request_id": "11111111-1111-4111-8111-000000009999",
"generated_at": "2026-09-08T19:00:00Z",
"timezone": "America/Los_Angeles"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "end_date must be later than start_date",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "A valid API key is required",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "METHOD_NOT_ALLOWED",
"message": "This resource supports GET",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Request limit exceeded",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Unable to complete request",
"request_id": "example-request",
"details": []
}
}Page jobs with recorded costs and costing revenue
One resource per owned job, identified by job ID and ordered by ID ascending. Complete saved costs, qualifying invoice facts and distinct assigned company members. Disabled or untracked costing has null totals while saved facts remain readable. Date filters refer to job creation or the company-local financial report date. No financial updated_since or snapshot.
curl --request GET \
--url https://api.getbreezyapp.com/v1/job-financials \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/job-financials"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getbreezyapp.com/v1/job-financials', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "11111111-1111-4111-8111-000000000501",
"number": "200",
"account": {
"id": "11111111-1111-4111-8111-000000000101",
"name": "Example Household"
},
"location_id": "11111111-1111-4111-8111-000000001107",
"business_unit": {
"id": "11111111-1111-4111-8111-000000000201",
"name": "Service"
},
"job_type": {
"id": "11111111-1111-4111-8111-000000000301",
"name": "HVAC Service"
},
"job_class": "SERVICE",
"participants": [
{
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
}
],
"created_at": "2026-08-19T16:00:00Z",
"report_date": "2026-08-20",
"report_date_basis": "INVOICE_ISSUED",
"costing": {
"enabled": true,
"tracking_status": "TRACKED",
"verification_status": "VERIFIED",
"job_type_included": true
},
"currency": "USD",
"totals": {
"revenue_cents": 130000,
"labor_cost_cents": 6000,
"parts_cost_cents": 24000,
"equipment_cost_cents": 0,
"misc_cost_cents": 0,
"other_cost_cents": 0,
"total_cost_cents": 30000,
"gross_profit_cents": 100000,
"gross_margin": 0.7692
},
"invoices": [
{
"id": "11111111-1111-4111-8111-000000000601",
"number": "1001",
"status": "OPEN",
"issued_at": "2026-08-20T16:00:00Z",
"subtotal_cents": 100000
},
{
"id": "11111111-1111-4111-8111-000000000602",
"number": "1002",
"status": "PAID",
"issued_at": "2026-09-02T16:00:00Z",
"subtotal_cents": 30000
}
],
"cost_entries": [
{
"id": "11111111-1111-4111-8111-000000001501",
"category": "labor",
"source": "manual",
"name": "Recorded service labor",
"quantity": 120,
"quantity_unit": "minute",
"unit_cost_cents": 3000,
"total_cents": 6000,
"labor_activity": "On Site",
"misc_category": null,
"pricebook_item_id": null,
"created_at": "2026-09-08T19:00:00Z",
"updated_at": "2026-09-08T19:00:00Z"
},
{
"id": "11111111-1111-4111-8111-000000001502",
"category": "parts",
"source": "invoice",
"name": "Recorded replacement part",
"quantity": 2,
"quantity_unit": "unit",
"unit_cost_cents": 12000,
"total_cents": 24000,
"labor_activity": null,
"misc_category": null,
"pricebook_item_id": null,
"created_at": "2026-09-08T19:00:00Z",
"updated_at": "2026-09-08T19:00:00Z"
}
]
}
],
"pagination": {
"next_cursor": null
},
"meta": {
"request_id": "11111111-1111-4111-8111-000000009999",
"generated_at": "2026-09-08T19:00:00Z",
"timezone": "America/Los_Angeles"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "end_date must be later than start_date",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "A valid API key is required",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "METHOD_NOT_ALLOWED",
"message": "This resource supports GET",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Request limit exceeded",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Unable to complete request",
"request_id": "example-request",
"details": []
}
}Authorizations
Existing Breezy API key. Grants all published reads in its associated company. No app permission scopes.
Query Parameters
Repeat ids for a bounded ID set. Valid foreign or missing IDs contribute no list rows.
1 - 100 elementsMaximum parent records or report rows. Complete children are always included.
1 <= x <= 100Repeat the original filters; any valid page size may continue. Foreign-company, tampered or mismatched cursors return INVALID_CURSOR.
1Inclusive creation instant.
Exclusive creation instant.
SERVICE, MAINTENANCE, ESTIMATE_REPAIR, ESTIMATE_REPLACE, INSTALL, WARRANTY, CALLBACK, SALES, UNKNOWN, null A validated assigned member. Selects distinct jobs for job financials/profitability and only that member for the participation report.
Inclusive company-local job financial report date.
Exclusive company-local job financial report date.
NOT_TRACKED, TRACKED, null UNVERIFIED, VERIFIED, null