REST endpoints for reports in ServFlo: 18 operations with parameters, request and response fields, permissions and curl examples.
Base URL: https://app.servflo.ai/api. Every call needs Authorization: Bearer sfk_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.
GET /organizations/{organizationId}/reports/revenue
Invoiced against collected over a date range, in day / week / month buckets, with the previous period of the same length for comparison. Invoiced = issued invoices (not drafts or cancelled) on the day they were created, tax included; collected = payments by their date, net of refunds; tips are reported apart and are not revenue. Breakdowns by service type, technician (the job's lead), lead source and customer type, with average ticket per invoice. Filters narrow everything; businessUnitId narrows to one unit (the invoice's) and byBusinessUnit gives each unit's own numbers. Read-only.
Permission
reports.financial (Owner, Admin, Dispatcher)
Risk
read, OAuth scope servflo.read. Read: reads only.
MCP tool
reports_revenue (toolset reports, in the default set)
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
leadSourceId
query
string
No
Only customers from this lead source (GET /lead-sources).
customerType
query
enum
No
One of RESIDENTIAL, COMMERCIAL.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the invoice's unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
Online-payment fees the business paid on what was collected (Stripe's processing fees plus any ServFlo fee); Collected stays gross.
totals.averageTicketCents
number
Integer cents.
previousTotals
object
previousTotals.invoicedCents
number
Integer cents.
previousTotals.invoiceCount
integer
previousTotals.collectedCents
number
Integer cents.
previousTotals.tipsCents
number
Integer cents.
previousTotals.feesCents
number
Online-payment fees the business paid on what was collected (Stripe's processing fees plus any ServFlo fee); Collected stays gross.
previousTotals.averageTicketCents
number
Integer cents.
changes
object
changes.invoicedCents
number or null
Percent change from the previous period; null when the previous period was 0.
changes.collectedCents
number or null
Percent change from the previous period; null when the previous period was 0.
changes.averageTicketCents
number or null
Percent change from the previous period; null when the previous period was 0.
changes.tipsCents
number or null
Percent change from the previous period; null when the previous period was 0.
changes.invoiceCount
number or null
Percent change from the previous period; null when the previous period was 0.
series
array of object
series[].key
string
The bucket's first day (Monday for weeks, the 1st for months).
series[].from
string
series[].to
string
series[].invoicedCents
number
Integer cents.
series[].invoiceCount
integer
series[].collectedCents
number
Integer cents.
series[].tipsCents
number
Integer cents.
series[].feesCents
number
Integer cents.
series[].previousInvoicedCents
number or null
Integer cents.
series[].previousCollectedCents
number or null
Integer cents.
byServiceType
array of object
byServiceType[].id
string or null
byServiceType[].name
string
byServiceType[].color
string or null
byServiceType[].invoiceCount
integer
byServiceType[].invoicedCents
number
Integer cents.
byServiceType[].averageTicketCents
number
Integer cents.
byServiceType[].sharePercent
number
byTechnician
array of object
byTechnician[].id
string or null
byTechnician[].name
string
byTechnician[].color
string or null
byTechnician[].invoiceCount
integer
byTechnician[].invoicedCents
number
Integer cents.
byTechnician[].averageTicketCents
number
Integer cents.
byTechnician[].sharePercent
number
byLeadSource
array of object
byLeadSource[].id
string or null
byLeadSource[].name
string
byLeadSource[].color
string or null
byLeadSource[].invoiceCount
integer
byLeadSource[].invoicedCents
number
Integer cents.
byLeadSource[].averageTicketCents
number
Integer cents.
byLeadSource[].sharePercent
number
byCustomerType
array of object
byCustomerType[].id
string or null
byCustomerType[].name
string
byCustomerType[].color
string or null
byCustomerType[].invoiceCount
integer
byCustomerType[].invoicedCents
number
Integer cents.
byCustomerType[].averageTicketCents
number
Integer cents.
byCustomerType[].sharePercent
number
byBusinessUnit
array of object
Each business unit's own numbers: every active unit (zeros included; with a unit filter only that unit), then "No unit" (invoices, and payments, without one) when it has any. Empty for a business without units.
byBusinessUnit[].id
string or null
The unit's id; null = the "No unit" row.
byBusinessUnit[].name
string
byBusinessUnit[].invoiceCount
integer
byBusinessUnit[].invoicedCents
number
Integer cents.
byBusinessUnit[].collectedCents
number
Payments by their date on this unit's invoices, net of refunds, tips apart.
GET /organizations/{organizationId}/reports/revenue/export
The revenue report's table as CSV: table = series (one row per bucket, the default) or a breakdown (serviceType, technician, leadSource, customerType, businessUnit). Same inputs as GET /reports/revenue. Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
leadSourceId
query
string
No
Only customers from this lead source (GET /lead-sources).
customerType
query
enum
No
One of RESIDENTIAL, COMMERCIAL.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the invoice's unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
table
query
enum
No
Which table: series, or a breakdown (businessUnit = per business unit). One of series, serviceType, technician, leadSource, customerType, businessUnit. Default series.
GET /organizations/{organizationId}/reports/ar-aging
Open balances today (sent and overdue invoices, total less payments) by days past due: current (not yet due), 1–30, 31–60, 61–90 and 90+, in total and per customer (largest balance first). Days count from the due date, or from the issue date when there is none. Drill into a customer with GET /reports/ar-aging/customers/{customerId}. Read-only.
Your today (YYYY-MM-DD), accepted within a day of the server's; defaults to the server's (UTC).
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
customerType
query
enum
No
One of RESIDENTIAL, COMMERCIAL.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the invoice's unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
GET /organizations/{organizationId}/reports/ar-aging/customers/{customerId}
The AR aging drill-down: one customer's open invoices (identifier, issue and due dates, days past due, bucket, total, paid, balance), oldest due first. Get customer ids from GET /reports/ar-aging. Read-only.
Your today (YYYY-MM-DD), accepted within a day of the server's; defaults to the server's (UTC).
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Only the customer's invoices of that unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
Your today (YYYY-MM-DD), accepted within a day of the server's; defaults to the server's (UTC).
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
customerType
query
enum
No
One of RESIDENTIAL, COMMERCIAL.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the invoice's unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
GET /organizations/{organizationId}/reports/pipeline
Requests → quotes → approved → converted for work that came in during the range, close rate (approved ÷ sent), average quote value (approved total, else the largest option's default lines, before tax), days from sent to approved (average and median), per salesperson (the quote's sold-by technician) and per lead source (new customers, requests, quotes, approved, revenue invoiced, and ad spend for the lead sources ads create: Google Ads, Facebook / Instagram, Google Local Services), with the previous period. technicianId filters by sold-by. Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
leadSourceId
query
string
No
Only customers from this lead source (GET /lead-sources).
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
leadSourceId
query
string
No
Only customers from this lead source (GET /lead-sources).
customerType
query
enum
No
One of RESIDENTIAL, COMMERCIAL.
table
query
enum
No
One of series, salesperson, leadSource. Default series.
GET /organizations/{organizationId}/reports/presentations
The pipeline report's presenter block: in-home presentations started in the range — presented, won and close rate, the membership attach rate on wins, average seconds per step, which tier won on good / better / best quotes, and the same per presenter (technician, else the staff member). A presentation counts once per quote and presenter (the latest); one still open whose quote was approved later counts as won. businessUnitId uses the quote's unit, technicianId the presenter. Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
technicianId
query
string
No
Only presentations by this technician.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the quote's unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
GET /organizations/{organizationId}/reports/technicians
Per technician over the range: visits and jobs completed, revenue produced (issued invoices of jobs they lead) and average ticket, sold amount and close rate (quotes they sold), hours worked (time entries: shift less breaks, else job and travel time) and revenue per hour, on-time arrival (arrived within 15 minutes of the scheduled start, in the property's timezone, else timezone) and callbacks (a completed job at the same property for the same service type within 30 days of an earlier one, charged to the earlier job's technician; member visits and recurring jobs excluded). With the previous period. Technicians themselves cannot read reports. Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the job's unit: visits, jobs and revenue of that unit's jobs, quotes of that unit, and hours = job and travel time on that unit's jobs; lists that unit's technicians. Omit for the whole business (a business without units never needs it). Up to 100 characters.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the job's unit: visits, jobs and revenue of that unit's jobs, quotes of that unit, and hours = job and travel time on that unit's jobs; lists that unit's technicians. Omit for the whole business (a business without units never needs it). Up to 100 characters.
GET /organizations/{organizationId}/reports/profitability
Margin of the jobs completed in the range (job costing: invoiced revenue before tax less labour at each technician's hourly cost, materials at their cost snapshot, job purchase orders and expenses), per job, per service type and per technician, plus the 10 lowest-margin jobs and the previous period. Owners and admins only (costing.read). Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
leadSourceId
query
string
No
Only customers from this lead source (GET /lead-sources).
customerType
query
enum
No
One of RESIDENTIAL, COMMERCIAL.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the job's unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
Percent change from the previous period; null when the previous period was 0.
changes.marginCents
number or null
Percent change from the previous period; null when the previous period was 0.
byServiceType
array of object
byServiceType[].id
string or null
byServiceType[].name
string
byServiceType[].color
string or null
byServiceType[].jobs
integer
byServiceType[].revenueCents
number
Integer cents.
byServiceType[].costCents
number
Integer cents.
byServiceType[].marginCents
number
Integer cents.
byServiceType[].marginPercent
number or null
byTechnician
array of object
byTechnician[].id
string or null
byTechnician[].name
string
byTechnician[].color
string or null
byTechnician[].jobs
integer
byTechnician[].revenueCents
number
Integer cents.
byTechnician[].costCents
number
Integer cents.
byTechnician[].marginCents
number
Integer cents.
byTechnician[].marginPercent
number or null
usesBusinessUnits
boolean
The business has business units.
byBusinessUnit
array of object
Each business unit's jobs, revenue, cost and margin (the job's unit): every active unit, then "No unit" (id null). Empty for a business without units; with a unit filter only that unit.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
serviceTypeId
query
string
No
Only jobs of this service type (GET /service-types).
leadSourceId
query
string
No
Only customers from this lead source (GET /lead-sources).
customerType
query
enum
No
One of RESIDENTIAL, COMMERCIAL.
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the job's unit. Omit for the whole business (a business without units never needs it). Up to 100 characters.
GET /organizations/{organizationId}/reports/memberships
Active members and monthly recurring revenue (MRR) at the end of each bucket, sign-ups, cancellations and expiries (churn rate = cancelled and expired ÷ the members at the start plus sign-ups), members per plan, renewals due in the next 60 days from today, and the average ticket of members against non-members (membership fee invoices left out). With the previous period. Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
today
query
string
No
Your today (YYYY-MM-DD), accepted within a day of the server's; defaults to the server's (UTC).
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the membership's unit (members, MRR, churn, renewals, plans) and the invoice's unit for the member / non-member average ticket. Omit for the whole business (a business without units never needs it). Up to 100 characters.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
today
query
string
No
Your today (YYYY-MM-DD), accepted within a day of the server's; defaults to the server's (UTC).
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses the membership's unit (members, MRR, churn, renewals, plans) and the invoice's unit for the member / non-member average ticket. Omit for the whole business (a business without units never needs it). Up to 100 characters.
GET /organizations/{organizationId}/reports/inventory
Stock value at cost by location (now; cost needs costing.read), quantity used by item over the range (job use less returns, with its cost) and the items at or below their reorder point with a suggested order. With the previous period's usage. Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
GET /organizations/{organizationId}/reports/payroll
Hours by person by week (Monday–Sunday, whole weeks around the range): paid time per day (shift less breaks, else job and travel time), regular up to 40 hours a week and overtime beyond (US FLSA weekly rule; no daily overtime), approved against pending (open or submitted; rejected time left out). Pay (costCents: regular × hourly pay + overtime × 1.5) only for costing.read. Read-only.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses each person's home unit (their technician's); people who are not technicians have none. Omit for the whole business (a business without units never needs it). Up to 100 characters.
First day of the range, YYYY-MM-DD (business calendar).
to
query
string
Yes
Last day of the range (inclusive), at most 731 days after from.
timezone
query
string
No
Override of the IANA timezone the business's days are counted in (timestamps such as invoice creation become dates in it), e.g. America/Chicago. Default: the organization's timezone (Settings → General). Up to 100 characters.
granularity
query
enum
No
Chart buckets: day, week (Monday) or month. Default: day up to 31 days, week up to 120, else month. One of day, week, month.
compareFrom
query
string
No
First day of the comparison period (with compareTo). Default by the range's shape: month / quarter / year to date → the same days of the previous month / quarter / last year; whole months → the months before; else the same number of days just before.
compareTo
query
string
No
Last day of the comparison period.
technicianId
query
string
No
Only work led (or quotes sold) by this technician (GET /technicians).
businessUnitId
query
string
No
Only one business unit (ids from GET /business-units), or "none" for records without a unit. Uses each person's home unit (their technician's); people who are not technicians have none. Omit for the whole business (a business without units never needs it). Up to 100 characters.