# Breezy FSM API > Build operational and financial reports with the Breezy field service management API. - [Make your first request](https://developers.getbreezyapp.com/quickstart.md): Read your company and page through jobs in a few minutes. - [Authentication](https://developers.getbreezyapp.com/authentication.md): Use one API key for read-only access to its company. - [Pagination and filters](https://developers.getbreezyapp.com/pagination.md): Accumulate complete records with opaque cursors and strict query parameters. - [Dates, money, and identities](https://developers.getbreezyapp.com/conventions.md): Interpret local calendar dates, timestamp precision, cents, nulls, and reporting buckets. - [Errors and rate limits](https://developers.getbreezyapp.com/errors.md): Handle validation failures, throttling, and retries without losing fetched pages. - [Use the API with an agent](https://developers.getbreezyapp.com/using-agents.md): Give an agent the documentation and a securely configured company key. - [Choose your reporting data](https://developers.getbreezyapp.com/choose-your-data.md): Map business questions to resources, summaries, and the right row grain. - [Build a reporting store](https://developers.getbreezyapp.com/reporting-store.md): Page once, upsert by identity, and choose bounded refreshes for current corrected data. - [Work and customers](https://developers.getbreezyapp.com/work-and-customers.md): Join customers, service locations, jobs, visits, and assigned team members. - [Revenue, collections, and AR](https://developers.getbreezyapp.com/financial-reporting.md): Keep issued invoice activity, received cash, and current receivables distinct. - [Technician performance](https://developers.getbreezyapp.com/technician-performance.md): Choose participation or saved sold and earned credit without inventing an attribution model. - [Recorded job profitability](https://developers.getbreezyapp.com/job-profitability.md): Use saved job costs and the existing costing revenue and report-date basis. - [Saved revenue attribution](https://developers.getbreezyapp.com/revenue-attribution.md): Read complete sold and earned credit sets and summarize them by work-completion date. - [Leads and estimates](https://developers.getbreezyapp.com/leads-and-estimates.md): Measure current pipeline, accepted proposal values, and recorded marketing sources. - [Time entries and timesheets](https://developers.getbreezyapp.com/time-reporting.md): Compare effective elapsed work intervals with configured-period payable totals. - [Equipment and captured forms](https://developers.getbreezyapp.com/equipment-and-forms.md): Read installed items and complete captured questions and answers. - [Read the company associated with this key](https://developers.getbreezyapp.com/api-reference/company/read-the-company-associated-with-this-key.md): Read only within the company associated with the validated key. - [Page complete invoices](https://developers.getbreezyapp.com/api-reference/invoices/page-complete-invoices.md): All statuses by default. Orders by created_at then id ascending. Lines, discounts and payment applications are complete on every page. Amounts use the public invoice calculator; refunds are not inferred as invoice-level allocations. - [Read one complete invoice](https://developers.getbreezyapp.com/api-reference/invoices/read-one-complete-invoice.md): Read only within the company associated with the validated key. - [Page payments with their invoice allocations](https://developers.getbreezyapp.com/api-reference/payments/page-payments-with-their-invoice-allocations.md): All statuses by default. Orders by created_at then id ascending. A payment amount is counted once regardless of its invoice allocations. - [Read one payment](https://developers.getbreezyapp.com/api-reference/payments/read-one-payment.md): Read only within the company associated with the validated key. - [Page refunds using their own occurrence dates](https://developers.getbreezyapp.com/api-reference/refunds/page-refunds-using-their-own-occurrence-dates.md): All statuses by default. Orders by created_at then id ascending. Date filters refer to this refund, even if its payment occurred in an earlier period. - [Read one refund](https://developers.getbreezyapp.com/api-reference/refunds/read-one-refund.md): Read only within the company associated with the validated key. - [Summarize invoice activity by issue date](https://developers.getbreezyapp.com/api-reference/reports/summarize-invoice-activity-by-issue-date.md): Defaults to OPEN and PAID invoices whose issued_at falls within the company-local date range. Sum public invoice amounts. One optional business grouping plus time. Null issue dates are excluded. Rows order by period_start then group value (null first); empty groups/buckets are omitted. - [Summarize successful payments and refunds](https://developers.getbreezyapp.com/api-reference/reports/summarize-successful-payments-and-refunds.md): PAID payments minus SUCCEEDED refunds; each uses its own occurrence date and is counted once. No proportional refund allocation to invoices, jobs or business units. One optional grouping plus time; rows order by period_start then group value (null first). Empty groups/buckets are omitted. - [Read current account aging](https://developers.getbreezyapp.com/api-reference/reports/read-current-account-aging.md): OPEN invoices only, including zero/negative balances. Group by account ID ascending. Signed buckets sum to balance_cents. Aging uses current company-local date; no as_of or historical date range. Accounts without qualifying OPEN invoices are omitted. Drill down with the identical filters on GET /inv… - [Summarize recorded job profitability](https://developers.getbreezyapp.com/api-reference/reports/summarize-recorded-job-profitability.md): Enabled costing and TRACKED jobs only; defaults to VERIFIED jobs and included owned job types. Revenue is recorded OPEN/PAID/UNCOLLECTABLE pre-discount, pre-tax invoice subtotals. Whole-job date is earliest qualifying invoice issue time, then work completion, then job creation, in company timezone.… - [Summarize full-job profitability for assigned members](https://developers.getbreezyapp.com/api-reference/reports/summarize-full-job-profitability-for-assigned-members.md): Same date, revenue, cost and eligibility basis as job profitability. Each distinct validated assigned company member receives the entire job result once across repeated appointments. Inactive members and canceled visits remain included; assignment does not prove attendance. Unassigned jobs have no m… - [Summarize recorded sold and earned credits by member](https://developers.getbreezyapp.com/api-reference/reports/summarize-recorded-sold-and-earned-credits-by-member.md): Company-local work-completion date with no fallback. Fixed credited-member grouping; unavailable members share a null group. Separate saved sold/earned cents and credit counts, plus distinct contributing job count. Filters select credits. No invoice-payment, assignment or costing eligibility require… - [Page team members](https://developers.getbreezyapp.com/api-reference/teammembers/page-team-members.md): Company members, including inactive members, with business roles and dated business-unit assignments. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one team member](https://developers.getbreezyapp.com/api-reference/teammembers/read-one-team-member.md): Company members, including inactive members, with business roles and dated business-unit assignments. - [Page accounts](https://developers.getbreezyapp.com/api-reference/accounts/page-accounts.md): Customers with complete contact/location associations, tags, and recorded acquisition sources. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one account](https://developers.getbreezyapp.com/api-reference/accounts/read-one-account.md): Customers with complete contact/location associations, tags, and recorded acquisition sources. - [Page contacts](https://developers.getbreezyapp.com/api-reference/contacts/page-contacts.md): People and communication channels with complete account-specific primary and archive state. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one contact](https://developers.getbreezyapp.com/api-reference/contacts/read-one-contact.md): People and communication channels with complete account-specific primary and archive state. - [Page locations](https://developers.getbreezyapp.com/api-reference/locations/page-locations.md): Service places with addresses, property information, and complete account associations. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one location](https://developers.getbreezyapp.com/api-reference/locations/read-one-location.md): Service places with addresses, property information, and complete account associations. - [Page jobs](https://developers.getbreezyapp.com/api-reference/jobs/page-jobs.md): Work and opportunities with current lifecycle status, recorded dimensions, and distinct work-completion and lifecycle-closure dates. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one job](https://developers.getbreezyapp.com/api-reference/jobs/read-one-job.md): Work and opportunities with current lifecycle status, recorded dimensions, and distinct work-completion and lifecycle-closure dates. - [Page job appointments](https://developers.getbreezyapp.com/api-reference/jobappointments/page-job-appointments.md): Customer visit windows with confirmation and cancellation state. One appointment is one visit, regardless of its technician count. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one job appointment](https://developers.getbreezyapp.com/api-reference/jobappointments/read-one-job-appointment.md): Customer visit windows with confirmation and cancellation state. One appointment is one visit, regardless of its technician count. - [Page job assignments](https://developers.getbreezyapp.com/api-reference/jobassignments/page-job-assignments.md): A member assignment to a visit, including its scheduled span and recorded execution status. This does not establish attendance or actual hours worked. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one job assignment](https://developers.getbreezyapp.com/api-reference/jobassignments/read-one-job-assignment.md): A member assignment to a visit, including its scheduled span and recorded execution status. This does not establish attendance or actual hours worked. - [Page business units](https://developers.getbreezyapp.com/api-reference/businessunits/page-business-units.md): Company business units for joining and segmenting operational records. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one business unit](https://developers.getbreezyapp.com/api-reference/businessunits/read-one-business-unit.md): Company business units for joining and segmenting operational records. - [Page job types](https://developers.getbreezyapp.com/api-reference/jobtypes/page-job-types.md): Configured job types, including archived types, with their class, lifecycle, and default business unit. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one job type](https://developers.getbreezyapp.com/api-reference/jobtypes/read-one-job-type.md): Configured job types, including archived types, with their class, lifecycle, and default business unit. - [Page job classes](https://developers.getbreezyapp.com/api-reference/jobclasses/page-job-classes.md): Existing job-class codes and display names, including legacy classes. IDs are class codes. Orders by id ascending; no timestamps or update filter. - [Read one job class](https://developers.getbreezyapp.com/api-reference/jobclasses/read-one-job-class.md): Existing job-class codes and display names, including legacy classes. IDs are class codes. Orders by id ascending; no timestamps or update filter. - [Page job lifecycles](https://developers.getbreezyapp.com/api-reference/joblifecycles/page-job-lifecycles.md): Configured lifecycles, including archived lifecycles, with complete ordered statuses and their stage and special-status meaning. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one job lifecycle](https://developers.getbreezyapp.com/api-reference/joblifecycles/read-one-job-lifecycle.md): Configured lifecycles, including archived lifecycles, with complete ordered statuses and their stage and special-status meaning. - [Page lead sources](https://developers.getbreezyapp.com/api-reference/leadsources/page-lead-sources.md): Configured company source names and canonical identity, including archived sources. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one lead source](https://developers.getbreezyapp.com/api-reference/leadsources/read-one-lead-source.md): Configured company source names and canonical identity, including archived sources. - [Page tags](https://developers.getbreezyapp.com/api-reference/tags/page-tags.md): Company tags used to label customers and jobs. Orders by created_at then id ascending. Complete embedded relationships are returned on every page. - [Read one tag](https://developers.getbreezyapp.com/api-reference/tags/read-one-tag.md): Company tags used to label customers and jobs. - [Page estimates](https://developers.getbreezyapp.com/api-reference/estimates/page-estimates.md): 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… - [Read one estimate](https://developers.getbreezyapp.com/api-reference/estimates/read-one-estimate.md): Proposals with complete options, lines, discounts, recorded totals, selection, current acceptance/loss information, and all resulting invoice IDs. Alternatives are not additive estimate value. - [Page job leads](https://developers.getbreezyapp.com/api-reference/jobleads/page-job-leads.md): Submitted service requests with captured contact/address, free-form intake source, and recorded conversion state. A converted lead is not evidence of a sale; multiple leads can refer to one job. Orders by created_at then id ascending. All statuses and complete embedded children are included by defau… - [Read one job lead](https://developers.getbreezyapp.com/api-reference/jobleads/read-one-job-lead.md): Submitted service requests with captured contact/address, free-form intake source, and recorded conversion state. A converted lead is not evidence of a sale; multiple leads can refer to one job. - [Page equipment](https://developers.getbreezyapp.com/api-reference/equipment/page-equipment.md): Installed items at owned locations, with recorded condition, lifecycle dates, warranty terms, and optional same-location HVAC grouping. All operational statuses are included by default. No inferred age, warranty eligibility, or item service history. Orders by id ascending. List and detail return the… - [Read one equipment](https://developers.getbreezyapp.com/api-reference/equipment/read-one-equipment.md): Installed items at owned locations, with recorded condition, lifecycle dates, warranty terms, and optional same-location HVAC grouping. All operational statuses are included by default. No inferred age, warranty eligibility, or item service history. - [Page form responses](https://developers.getbreezyapp.com/api-reference/formresponses/page-form-responses.md): Captured visit forms with complete questions, recorded answers, original work relationships, and current required-data completeness. Current templates do not replace captured content. Unsupported capture returns null questions and completeness while retaining safe metadata. Orders by id ascending. L… - [Read one form response](https://developers.getbreezyapp.com/api-reference/formresponses/read-one-form-response.md): Captured visit forms with complete questions, recorded answers, original work relationships, and current required-data completeness. Current templates do not replace captured content. Unsupported capture returns null questions and completeness while retaining safe metadata. - [Page recorded time entries](https://developers.getbreezyapp.com/api-reference/timeentries/page-recorded-time-entries.md): Effective corrected intervals, including custom activities and validated work links. Orders by created_at then id ascending. Soft-deleted entries require include_deleted=true. No reliable updated_since filter; refresh known IDs and effective-start windows. Elapsed duration is distinct from capped ti… - [Read one time entry](https://developers.getbreezyapp.com/api-reference/timeentries/read-one-time-entry.md): The same representation as collection pages. Retained soft-deleted entries require include_deleted=true. - [Page members in a configured timesheet period](https://developers.getbreezyapp.com/api-reference/timesheets/page-members-in-a-configured-timesheet-period.md): Required period_date selects a current configured company-local period. All current company members, including inactive and zero-entry members, ordered by member ID. Effective-start-in-period entries contribute; open, deleted, nonpayable and unknown-activity entries do not contribute payable minutes… - [Read one member’s configured-period timesheet](https://developers.getbreezyapp.com/api-reference/timesheets/read-one-member’s-configured-period-timesheet.md): Derived representation identified by team member and resolved period dates. Required period_date is a local calendar date. Includes a zero total when the member has no entries. Returns 400 for missing or unusable configuration and 404 for a missing or foreign member. - [Page jobs with recorded costs and costing revenue](https://developers.getbreezyapp.com/api-reference/jobfinancials/page-jobs-with-recorded-costs-and-costing-revenue.md): 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… - [Read the recorded financials of one job](https://developers.getbreezyapp.com/api-reference/jobfinancials/read-the-recorded-financials-of-one-job.md): The same complete representation as collection pages, using the job ID. Reads saved costs without populating or synchronizing them from timekeeping, wages, invoices or pricebook data. - [Page jobs with complete saved sold and earned credits](https://developers.getbreezyapp.com/api-reference/revenueattributions/page-jobs-with-complete-saved-sold-and-earned-credits.md): 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 inf… - [Read the complete saved revenue credits of one job](https://developers.getbreezyapp.com/api-reference/revenueattributions/read-the-complete-saved-revenue-credits-of-one-job.md): Uses the job ID and returns the same complete representation as collection pages. Replace the entire credit array when refreshing. Unavailable current references remain null or empty while owned credit amounts remain readable. Matching invoice lines provide context only; several may match one saved… ## OpenAPI Specs - [openapi](/openapi.json)