curl --request GET \
--url https://api.getbreezyapp.com/v1/estimates \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/estimates"
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/estimates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "11111111-1111-4111-8111-000000001201",
"number": "400",
"status": "ACCEPTED",
"account": {
"id": "11111111-1111-4111-8111-000000000101",
"name": "Example Household"
},
"job_id": "11111111-1111-4111-8111-000000000501",
"location_id": "11111111-1111-4111-8111-000000001107",
"job_appointment_id": "11111111-1111-4111-8111-000000001109",
"business_unit": {
"id": "11111111-1111-4111-8111-000000000201",
"name": "Service"
},
"job_type": {
"id": "11111111-1111-4111-8111-000000000301",
"name": "HVAC Service"
},
"job_class": "SERVICE",
"created_by": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"created_at": "2026-08-19T17:00:00Z",
"updated_at": "2026-09-08T19:00:00Z",
"accepted_at": "2026-08-20T14:00:00Z",
"accepted_on_behalf_by": null,
"last_sent_at": "2026-08-19T18:00:00Z",
"message": "Repair and replacement alternatives.",
"closed_lost_reason": {
"category": null,
"note": null
},
"currency": "USD",
"pricing_multiplier": 1,
"tax": {
"name": "Sales tax",
"rate": 0.1
},
"accepted_total_cents": 99000,
"invoice_ids": [
"11111111-1111-4111-8111-000000000601"
],
"options": [
{
"id": "11111111-1111-4111-8111-000000001202",
"position": 0,
"name": "Repair",
"description": "Restore the existing system.",
"selected": true,
"recommended": false,
"total_cents": 99000,
"tax_rounding": "round",
"line_items": [
{
"id": "11111111-1111-4111-8111-000000001203",
"position": 0,
"name": "HVAC repair",
"description": "Repair existing equipment",
"item_type": "SERVICE",
"code": "REPAIR",
"variant": null,
"pricebook_item_id": null,
"quantity": 1,
"unit_price_cents": 100000,
"taxable": true,
"discountable": true
}
],
"discounts": [
{
"id": "11111111-1111-4111-8111-000000001204",
"position": 0,
"name": "Service discount",
"description": null,
"type": "FLAT",
"amount_cents": 10000,
"rate": null
}
]
},
{
"id": "11111111-1111-4111-8111-000000001205",
"position": 1,
"name": "Replace",
"description": "Replace the system.",
"selected": false,
"recommended": true,
"total_cents": 880000,
"tax_rounding": "round",
"line_items": [
{
"id": "11111111-1111-4111-8111-000000001206",
"position": 0,
"name": "Replacement system",
"description": null,
"item_type": "EQUIPMENT",
"code": null,
"variant": null,
"pricebook_item_id": null,
"quantity": 1,
"unit_price_cents": 800000,
"taxable": true,
"discountable": true
}
],
"discounts": []
}
]
}
],
"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": "STALE_REVISION",
"message": "The visit changed; read it again before editing",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "Request body exceeds 64 KB",
"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 estimates
Proposals with complete options, lines, discounts, recorded totals, selection, current acceptance/loss information, and all resulting invoice IDs. Alternatives are not additive estimate value. Orders by created_at then id ascending. All statuses and complete embedded children are included by default.
curl --request GET \
--url https://api.getbreezyapp.com/v1/estimates \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/estimates"
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/estimates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "11111111-1111-4111-8111-000000001201",
"number": "400",
"status": "ACCEPTED",
"account": {
"id": "11111111-1111-4111-8111-000000000101",
"name": "Example Household"
},
"job_id": "11111111-1111-4111-8111-000000000501",
"location_id": "11111111-1111-4111-8111-000000001107",
"job_appointment_id": "11111111-1111-4111-8111-000000001109",
"business_unit": {
"id": "11111111-1111-4111-8111-000000000201",
"name": "Service"
},
"job_type": {
"id": "11111111-1111-4111-8111-000000000301",
"name": "HVAC Service"
},
"job_class": "SERVICE",
"created_by": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"created_at": "2026-08-19T17:00:00Z",
"updated_at": "2026-09-08T19:00:00Z",
"accepted_at": "2026-08-20T14:00:00Z",
"accepted_on_behalf_by": null,
"last_sent_at": "2026-08-19T18:00:00Z",
"message": "Repair and replacement alternatives.",
"closed_lost_reason": {
"category": null,
"note": null
},
"currency": "USD",
"pricing_multiplier": 1,
"tax": {
"name": "Sales tax",
"rate": 0.1
},
"accepted_total_cents": 99000,
"invoice_ids": [
"11111111-1111-4111-8111-000000000601"
],
"options": [
{
"id": "11111111-1111-4111-8111-000000001202",
"position": 0,
"name": "Repair",
"description": "Restore the existing system.",
"selected": true,
"recommended": false,
"total_cents": 99000,
"tax_rounding": "round",
"line_items": [
{
"id": "11111111-1111-4111-8111-000000001203",
"position": 0,
"name": "HVAC repair",
"description": "Repair existing equipment",
"item_type": "SERVICE",
"code": "REPAIR",
"variant": null,
"pricebook_item_id": null,
"quantity": 1,
"unit_price_cents": 100000,
"taxable": true,
"discountable": true
}
],
"discounts": [
{
"id": "11111111-1111-4111-8111-000000001204",
"position": 0,
"name": "Service discount",
"description": null,
"type": "FLAT",
"amount_cents": 10000,
"rate": null
}
]
},
{
"id": "11111111-1111-4111-8111-000000001205",
"position": 1,
"name": "Replace",
"description": "Replace the system.",
"selected": false,
"recommended": true,
"total_cents": 880000,
"tax_rounding": "round",
"line_items": [
{
"id": "11111111-1111-4111-8111-000000001206",
"position": 0,
"name": "Replacement system",
"description": null,
"item_type": "EQUIPMENT",
"code": null,
"variant": null,
"pricebook_item_id": null,
"quantity": 1,
"unit_price_cents": 800000,
"taxable": true,
"discountable": true
}
],
"discounts": []
}
]
}
],
"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": "STALE_REVISION",
"message": "The visit changed; read it again before editing",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "Request body exceeds 64 KB",
"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 and scheduling writes in its associated company. No app permission scopes.
Query Parameters
Maximum 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.
1Repeat ids for a bounded ID set. Valid foreign or missing IDs contribute no list rows.
1 - 100 elementsInclusive creation instant.
Exclusive creation instant.
Inclusive parent-record updated_at filter only; not a complete change feed.
SERVICE, MAINTENANCE, ESTIMATE_REPAIR, ESTIMATE_REPLACE, INSTALL, WARRANTY, CALLBACK, SALES, UNKNOWN, null Original proposal job only.
1DRAFT, CREATED, SENT, REVIEWED, ACCEPTED, VOIDED, CLOSED, EXPIRED Inclusive company-local recorded acceptance date, regardless of current status.
Exclusive company-local recorded acceptance date, regardless of current status.