curl --request GET \
--url https://api.getbreezyapp.com/v1/revenue-attributions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/revenue-attributions"
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/revenue-attributions', 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",
"created_at": "2026-08-19T16:00:00Z",
"work_completed_at": "2026-08-20T15:00:00Z",
"report_date": "2026-08-20",
"currency": "USD",
"credits": [
{
"credit_type": "SOLD",
"revenue_cents": 100000,
"team_member": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"invoice": {
"id": "11111111-1111-4111-8111-000000000601",
"number": "1001"
},
"invoice_line_item_ids": [
"11111111-1111-4111-8111-000000000901"
]
},
{
"credit_type": "EARNED",
"revenue_cents": 100000,
"team_member": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"invoice": {
"id": "11111111-1111-4111-8111-000000000601",
"number": "1001"
},
"invoice_line_item_ids": [
"11111111-1111-4111-8111-000000000901"
]
},
{
"credit_type": "SOLD",
"revenue_cents": 0,
"team_member": null,
"invoice": null,
"invoice_line_item_ids": []
}
]
}
],
"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 complete saved sold and earned credits
One resource per owned job, including empty credit arrays and undated jobs. Orders by job ID ascending. Member and credit-type filters must match the same credit to select a job; the returned array stays complete. Amounts preserve explicit recorded credits, including zero and negative values. No inferred attribution, save timestamp or updated_since.
curl --request GET \
--url https://api.getbreezyapp.com/v1/revenue-attributions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/revenue-attributions"
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/revenue-attributions', 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",
"created_at": "2026-08-19T16:00:00Z",
"work_completed_at": "2026-08-20T15:00:00Z",
"report_date": "2026-08-20",
"currency": "USD",
"credits": [
{
"credit_type": "SOLD",
"revenue_cents": 100000,
"team_member": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"invoice": {
"id": "11111111-1111-4111-8111-000000000601",
"number": "1001"
},
"invoice_line_item_ids": [
"11111111-1111-4111-8111-000000000901"
]
},
{
"credit_type": "EARNED",
"revenue_cents": 100000,
"team_member": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"invoice": {
"id": "11111111-1111-4111-8111-000000000601",
"number": "1001"
},
"invoice_line_item_ids": [
"11111111-1111-4111-8111-000000000901"
]
},
{
"credit_type": "SOLD",
"revenue_cents": 0,
"team_member": null,
"invoice": null,
"invoice_line_item_ids": []
}
]
}
],
"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 currently validated credited company member.
SOLD, EARNED, null Inclusive company-local work-completion date.
Exclusive company-local work-completion date.