API referenceBeta

Everything a business can connect to BizBaby through the API.

!
The API is in Beta for BizBaby businesses on the Growth plan. Addresses and code examples are shown inside BizBaby once support turns API access on for your business.

How your software connects

  1. Start a BizBaby account for your business on the Growth plan.
  2. Ask our support to turn on API access, and tell them what you want to connect and why.
  3. Once it's on, create an API key in BizBaby and tick only the areas it needs. It is shown once, to copy into your software.
  4. A key works only for your business and doesn't expire. It works until someone in your business revokes it.

What the API does

The API lets software your business chooses read and update the same records you work with in BizBaby: customers, appointments, jobs, invoices, messages, reports and more. Each action below says what it does and which permission it needs.

Actions follow your plan. An action your plan doesn't include stays off in the API too.

Booking, field work and recurring charges

Appointments

Pick an Appointment Service, read its open dates and arrival windows, then book one of the offered times. If it has gone, ask again.

Requests, Jobs & Visits

Create a Request with a Job Service, turn it into one Job, then manage its Visits. Appointment Services are not Job Services.

Recurring payments

Recurring payments set up repeat charges. They are separate from Appointment series, which repeat bookings.

Customers & leads

Customers

5 actions

List customers

GET

Ranks by amount paid with sort=lifetime_spend. Returns customers owned by the current business, with exact local-number lookup and bounded search filters applied before pagination. Each customer carries lifetime_spend (amount actually paid, not invoiced) and last_order_at; sort=lifetime_spend&direction=desc lists top spenders first.

Action ID: customers.list Permission: customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

qstring

maximum length: 100 · Case-insensitive starts-with search: first name, last name, "first last", email, company name or phone (typed with or without dashes) starts with q. Text from the middle of a field does not match; for a name that may be misspelled use search.list. %, _ are treated as ordinary text.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of the related customer.

local_idinteger

minimum: 1 · Exact business-local number within this operation’s record family; it is never compared with an API ID.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

sortstring

enum: "id", "lifetime_spend", "last_order_at" · Allowed sort field, applied to all matching customers before the page limit. lifetime_spend ranks by amount actually paid (use with direction=desc for top spenders); last_order_at by most recent appointment or job, customers with none last. Omission keeps the default id ascending order.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the customer ID as a stable tie-breaker.

cURL

Addresses and code examples appear once API access is on for your business.

Create a customer

POST

Creates a customer owned by the current business. The API assigns the API ID and business-local number; supplied profile fields are validated before the record is saved.

Action ID: customers.create Permission: customers.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a customer

GET

Returns one customer only when it belongs to the current business and is visible to the caller. Use the API ID from list results for this path.

Action ID: customers.get Permission: customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customerstringRequired

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of the customer path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Update a customer

PATCH

Updates only the supplied mutable profile fields on a customer owned by the current business; omitted fields retain their stored values.

Action ID: customers.update Permission: customers.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customerstringRequired

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of the customer path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a customer's financial balances

GET

Uses collected payments/refunds and canonical remaining invoice and appointment balances.

Action ID: customers.balances Permission: customers.read, invoices.read, appointments.read, payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customerstringRequired

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of the customer path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Customers & leads

Leads

3 actions

List leads

GET

Lists local lead records using bounded text, status and creation-date filters.

Action ID: leads.list Permission: leads.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

qstring

maximum length: 100 · Case-insensitive bounded text search; omission performs no text filtering.

statusstring

enum: "waiting", "in_work", "processed", "does_not_answer", "deleted" · Code-owned lifecycle state filter; omission includes every allowed state.

fromstring

format: "date" · Inclusive lower business-local date.

tostring

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read a lead

GET

Returns one business-owned lead with its stored contact and source details.

Action ID: leads.get Permission: leads.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

leadstringRequired

pattern: "^lead_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`lead_...`) of the business-owned lead.

cURL

Addresses and code examples appear once API access is on for your business.

Update a lead

PATCH

Updates the supplied lead status and/or comment. This operation does not contact the lead.

Action ID: leads.update Permission: leads.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

leadstringRequired

pattern: "^lead_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`lead_...`) of the business-owned lead.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Customers & leads

Attachments

3 actions

Download one attachment through its authorized parent

GET

The parent type and ID are mandatory and reauthorized on every request.

Action ID: attachments.download Permission: attachments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

attachmentstringRequired

pattern: "^attachment_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`attachment_...`) of the attachment metadata row.

parent_typeAttachmentParentTypeRequired

Code-owned parent record family; combine it with the parent ID.

parent_idstringRequired

pattern: "^(?:appointment|job|request|visit|customer|vehicle|task)_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`appointment_...`, `job_...`, `request_...`, `visit_...`, `customer_...`, `vehicle_...` or `task_...`) within the supplied parent_type used to reauthorize a download.

cURL

Addresses and code examples appear once API access is on for your business.

List attachments for an authorized parent

GET

Authorizes the parent product before returning file metadata. No storage paths are exposed.

Action ID: attachments.list Permission: attachments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

parent_typeAttachmentParentTypeRequired

Code-owned parent record family; combine it with the parent ID.

parentstringRequired

pattern: "^(?:appointment|job|request|visit|customer|vehicle|task)_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`appointment_...`, `job_...`, `request_...`, `visit_...`, `customer_...`, `vehicle_...` or `task_...`) within the selected parent_type.

cURL

Addresses and code examples appear once API access is on for your business.

Upload attachments to a business record

POST

Stores one to ten validated files atomically. Images are limited to 5 MB and other supported files to 10 MB.

Action ID: attachments.upload Permission: attachments.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

parent_typeAttachmentParentTypeRequired

Code-owned parent record family; combine it with the parent ID.

parentstringRequired

pattern: "^(?:appointment|job|request|visit|customer|vehicle|task)_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`appointment_...`, `job_...`, `request_...`, `visit_...`, `customer_...`, `vehicle_...` or `task_...`) within the selected parent_type.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Customers & leads

Portal

2 actions

Read an owned customer's portal counts

GET

Counts are present only for product scopes granted to this credential. Omitted dependencies are represented by null counts and named in excluded_counts.

Action ID: portal.customer-summary Permission: portal.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customerstringRequired

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of the owned customer conversation or portal summary.

cURL

Addresses and code examples appear once API access is on for your business.

Read customer portal capabilities

GET

Returns ordinary portal configuration without login, signature, payment or approval tokens. customer_login_enabled and portal_url require both an ordinary portal host and the integrate_client_login plan entitlement.

Action ID: portal.configuration Permission: portal.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Scheduling

Appointments

9 actions

List appointments

GET

Returns appointments visible to the caller within the current business, bounded by the supplied time and relationship filters.

Action ID: appointments.list Permission: appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

fromstring

format: "date" · Inclusive business-local start date.

tostring

format: "date" · Inclusive business-local end date; endpoint range limits apply.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Filter by owned customer API ID (`customer_...`).

local_idinteger

minimum: 1 · Filter by business-local display number, distinct from API IDs.

worker_idstring

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · Filter by assigned worker user API ID (`user_...`).

statusstring

enum: "waiting", "inprocess", "done", "onhold", "canceled" · Filter by documented business state.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

sortstring

enum: "id", "start_at", "created_at", "updated_at" · Allowed sort field, applied to all matching records before the page limit. Omission preserves the existing default ordering.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the record ID as a stable tie-breaker.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · Match any listed status (OR), combined with other filters (AND). Send statuses[]=value. Do not combine with status.

representationstring

default: "full"; enum: "full", "compact" · full preserves the existing detailed shape. compact returns scalar list fields without child collections; retrieve one record separately for details.

service_idstring

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · Match any attached appointment service product belonging to this business. The response service_id retains the canonical lowest attached API ID (`appointment_service_...`).

assignmentstring

enum: "assigned", "unassigned" · Whether an in-business worker association exists; unassigned cannot combine with worker_id or worker_q.

worker_qstring

minimum length: 1; maximum length: 100 · Literal substring of the worker’s name in this business; requires team.read.

payment_statestring

enum: "unpaid", "paid", "paid_cash", "declined", "partially_refunded", "refunded" · Appointment payment state, distinct from work status. paid does not include paid_cash.

cURL

Addresses and code examples appear once API access is on for your business.

Create an appointment

POST

Fetch the current service selection schema and availability, then submit one advertised arrival window exactly. An advertised overnight window may end on the next business date. schema_version must match the current service selection schema; answers may be an object or an explicitly empty list.

Action ID: appointments.create Permission: appointments.write, appointment-services.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get an appointment

GET

Returns one appointment visible under the current business and worker policy, with its current ETag for later conditional changes.

Action ID: appointments.get Permission: appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Appointment API ID (`appointment_...`), not local_id.

cURL

Addresses and code examples appear once API access is on for your business.

Replace appointment comments

PATCH

Replaces the mutable comments value for an authorized appointment after an ETag check; schedule and identity fields are not changed here.

Action ID: appointments.update Permission: appointments.write, appointment-services.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Appointment API ID (`appointment_...`), not local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Cancel an appointment

POST

Transitions an authorized appointment to its cancellation state after checking the supplied ETag. Cancellation does not add or replace customer instructions or worker comments.

Action ID: appointments.cancel Permission: appointments.write, appointment-services.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Appointment API ID (`appointment_...`), not local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Add an appointment worker comment

POST

Appends one actor-attributed worker comment to the appointment. It does not replace the customer-supplied comments field.

Action ID: appointments.comment Permission: appointments.write, appointment-services.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Appointment API ID (`appointment_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Appointment Logs: who changed what and when

GET

Status changes, edits and creations, oldest first. The appointment's Logs window: exactly the lines the Logs button on its preview card shows, as stored free text, usually "what - business-local time - who" (created, edited, status changed from X to Y, deleted). Read-only history; use appointments.get for the appointment's current state.

Action ID: appointments.logs Permission: appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Appointment API ID (`appointment_...`), not local_id.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum log lines returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Reschedule an appointment

POST

When the service Availability setting is on, submit an exact available arrival window; worker conflicts include the appointment's saved service duration. When Availability is off, time changes are saved despite conflicts. Omitting worker_ids preserves every current assignment, including an empty assignment; supplying worker_ids remains a replacement candidate pool from which one free worker is chosen. The existing appointment is excluded from its own conflict check. Successful saves may include meta.scheduling_warning with short warnings and business-local appointment numbers; API callers decide how to display these warnings. An advertised overnight window may end on the next business date.

Action ID: appointments.reschedule Permission: appointments.write, appointment-services.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Appointment API ID (`appointment_...`), not local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List bookable appointment arrival windows

GET

Returns exact advertised arrival windows from the existing booking schedule. Existing appointment intervals are known conflicts; Job and Visit team assignments are advisory warnings because actual work duration is not authoritative. available_workers is the source for assignment, and final create/reschedule revalidates the exact interval.

Action ID: appointments.availability Permission: appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

service_idstringRequired

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · Active owned Appointment Service API ID (`appointment_service_...`) whose bookable arrival windows are requested.

datestringRequired

format: "date" · Business-local date in YYYY-MM-DD form.

date_tostring

format: "date" · Optional inclusive business-local end date. When supplied, returns per-date availability for at most 14 consecutive days in one response.

worker_idsarray

minimum items: 1; items must be unique · API IDs (`user_...`) of distinct active worker candidates. A window is bookable when at least one candidate is free; the server selects one candidate when the appointment is saved.

cURL

Addresses and code examples appear once API access is on for your business.

Scheduling

Appointment series

9 actions

List appointment series

GET

Returns recurring appointment definitions owned by the current business after applying cadence, status, and pagination filters.

Action ID: appointment-series.list Permission: appointment-series.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Filter by owned customer API ID (`customer_...`).

local_idinteger

minimum: 1 · Filter by business-local display number, distinct from API IDs.

frequencyAppointmentSeriesFrequency

Filter by recurrence cadence.

lifecycle_statusstring

enum: "active", "paused", "ended" · Filter active, paused, or ended definitions.

fromstring

format: "date" · Inclusive business-local start date.

tostring

format: "date" · Inclusive business-local end date; endpoint range limits apply.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create an appointment series and first occurrence

POST

Creates a recurring appointment definition and its first eligible occurrence from the supplied schedule, customer, service, and worker selections.

Action ID: appointment-series.create Permission: appointment-series.write, appointments.read, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get an appointment series

GET

Returns one recurring appointment definition owned by the current business and its current version for conditional changes.

Action ID: appointment-series.get Permission: appointment-series.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^appointment_series_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Series API ID (`appointment_series_...`), not local_id.

cURL

Addresses and code examples appear once API access is on for your business.

Update future recurring appointments

PATCH

Completed occurrences retain their snapshots. service_id, schema_version and answers must be supplied together when changing the catalog selection.

Action ID: appointment-series.update Permission: appointment-series.write, appointments.read, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^appointment_series_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Series API ID (`appointment_series_...`), not local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

End an appointment series

POST

Ends future generation for an authorized recurring appointment series while retaining its definition and recorded occurrence history.

Action ID: appointment-series.end Permission: appointment-series.write, appointments.read, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^appointment_series_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Series API ID (`appointment_series_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List appointment series occurrences

GET

Returns the recorded occurrence ledger for one authorized series; reading the ledger does not generate missing appointments.

Action ID: appointment-series.occurrences Permission: appointment-series.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^appointment_series_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Series API ID (`appointment_series_...`), not local_id.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Pause an appointment series

POST

Sets an authorized series to paused so future occurrences are not generated until it is resumed.

Action ID: appointment-series.pause Permission: appointment-series.write, appointments.read, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^appointment_series_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Series API ID (`appointment_series_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Resume an appointment series

POST

Resumes future generation for an authorized paused series without recreating occurrences that were already skipped or recorded.

Action ID: appointment-series.resume Permission: appointment-series.write, appointments.read, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^appointment_series_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Series API ID (`appointment_series_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Skip the next pending occurrence

POST

Marks the next pending occurrence of an authorized series as skipped while leaving later recurrence intact.

Action ID: appointment-series.skip-next Permission: appointment-series.write, appointments.read, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^appointment_series_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Series API ID (`appointment_series_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Scheduling

Appointment services

6 actions

List appointment services

GET

Returns the current business appointment-service catalog after applying the documented active-state, text, and pagination filters.

Action ID: appointment-services.list Permission: appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

activeboolean

Filter Appointment Services by active or inactive booking state.

qstring

maximum length: 100 · Literal case-insensitive contains search within Appointment Service titles; %, _, and = are treated as ordinary text.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create an appointment service

POST

Creates a business-owned service that can be selected when booking appointments; its duration and price become the current catalog values.

Action ID: appointment-services.create Permission: appointment-services.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get an appointment service

GET

Returns one business-owned appointment service by API ID, including the current version used for conditional updates.

Action ID: appointment-services.get Permission: appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointment_servicestringRequired

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Service API ID (`appointment_service_...`).

cURL

Addresses and code examples appear once API access is on for your business.

Update an appointment service

PATCH

Updates only supplied mutable catalog fields after checking ownership and the current ETag; omitted values remain unchanged.

Action ID: appointment-services.update Permission: appointment-services.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointment_servicestringRequired

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Service API ID (`appointment_service_...`).

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get the current selection schema

GET

Use schema_version when creating or changing an appointment selection.

Action ID: appointment-services.schema Permission: appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointment_servicestringRequired

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · Appointment Service API ID (`appointment_service_...`).

cURL

Addresses and code examples appear once API access is on for your business.

List job service types

GET

Lists business-owned job service definitions that are eligible for appointment-service linkage. Optional q is a literal case-insensitive contains filter; this read does not create or modify catalog rows.

Action ID: appointment-services.jobs Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

qstring

maximum length: 100 · Literal case-insensitive contains search within Job Service names; %, _, and = are treated as ordinary text.

cURL

Addresses and code examples appear once API access is on for your business.

Scheduling

Working hours

6 actions

Read weekly business hours

GET

Reads the same recurring weekly phone/voicemail schedule shown in Business Settings, plus a bounded preview of the next ten dated closures. Weekly rows are distinct from Appointment Service hours; use working-hours.exceptions with explicit date bounds for a complete closure period.

Action ID: working-hours.get Permission: working-hours.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Update recurring weekly business hours

PATCH

PATCH updates one or more supplied weekdays in the recurring Business Settings phone/voicemail schedule. Omitted weekdays and omitted fields remain unchanged. A weekday that is disabled retains its stored start and end for reopening; enabled weekdays require end later than start. Use the dated closure operations for a specific date, and Appointment Service settings for service availability.

Action ID: working-hours.update Permission: working-hours.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List holidays and dated closures

GET

Read every company holiday or dated closure within an inclusive business-local date range. The end date may be at most 90 days after the start date; divide a year into consecutive non-overlapping ranges. Closures block new or changed Appointment, Request, Job, and Visit dates while preserving existing records on dates closed later.

Action ID: working-hours.exceptions Permission: working-hours.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

fromstringRequired

format: "date" · First included business-local date, in YYYY-MM-DD form; for example 2026-12-01.

tostringRequired

format: "date" · Last included business-local date, in YYYY-MM-DD form. Must be on or after from and no more than 90 days later; longer intervals return validation_failed for to.

cURL

Addresses and code examples appear once API access is on for your business.

Read one holiday or dated closure

GET

Returns one exact business-local closure and its current ETag for a conditional update or reopen operation.

Action ID: working-hours.exception Permission: working-hours.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

datestringRequired

format: "date" · Exact closed business-local date in YYYY-MM-DD form.

cURL

Addresses and code examples appear once API access is on for your business.

Close the business for a date

PUT

PUT creates the company closure if the date is open, or updates its reason if already closed. One public API request affects one business-local date; the Business Settings UI has a separate atomic range editor. Existing appointments are returned for review and are not canceled. The closure blocks new or changed Appointment, Request, Job, and Visit dates and does not change weekly phone hours, service hours, or existing recurring schedules.

Action ID: working-hours.close Permission: working-hours.write, appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

datestringRequired

format: "date" · Exact date identifying the closure within this business, for example 2026-12-25. Use YYYY-MM-DD in the business timezone, not a UTC timestamp or numeric record ID.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Reopen the business for a date

DELETE

DELETE removes the dated closure. Supply its latest ETag in If-Match; read the etag field from the closure list or the ETag response header from PUT. Ordinary service availability rules still apply after reopening. Existing appointments are not changed.

Action ID: working-hours.reopen Permission: working-hours.write, appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

datestringRequired

format: "date" · Exact date identifying the closure within this business, for example 2026-12-25. Use YYYY-MM-DD in the business timezone, not a UTC timestamp or numeric record ID.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Scheduling

Service areas

4 actions

Read service-area settings and zones

GET

Returns the current business's stored coverage mode, customer message, lead-capture choice, and complete zone definitions with an ETag; it performs no geocoding or provider read.

Action ID: service-areas.get Permission: service-areas.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Check a ZIP for one service

POST

Evaluates one exact ZIP and business-owned Appointment or Job service against the currently stored coverage mode and zones without geocoding, provider calls, or mutation.

Action ID: service-areas.check Permission: service-areas.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Update service-area settings

PATCH

Updates only supplied business coverage settings after an ETag check; omitted mode, message, and lead-capture values remain unchanged.

Action ID: service-areas.settings Permission: service-areas.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Replace all service-area zones

PUT

Atomically replaces the business's complete service-area zone list after an ETag check, with at most 100 zones and 5,000 ZIP entries total.

Action ID: service-areas.zones Permission: service-areas.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Requests, jobs & visits

Requests, Jobs and Visits

21 actions

List Jobs

GET

Lists business-owned jobs after worker, status, business-date, local-number, and pagination filtering against current assignments and schedule values. Job commitments are advisory and do not remove Appointment availability slots.

Action ID: work.jobs.list Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Filter by owned customer API ID (`customer_...`).

service_idstring

pattern: "^job_service_[0-9a-hjkmnp-tv-z]{26}$" · Filter by the root Request’s owned Job Service API ID (`job_service_...`).

local_idinteger

minimum: 1 · Filter by the Job’s own internal number, which is never shown; to find a job by the number owners see, use project_number.

project_numberinteger

minimum: 1 · Filter by project number (the root Request’s number) — the number owners call “job #158”.

worker_idstring

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · Filter by assigned worker user API ID (`user_...`).

statusstring

enum: "submit", "cancel", "approve", "draft", "in-progress", "complete", "scheduled", "in_progress" · Filter by documented business state.

fromstring

format: "date" · Inclusive business-local start date.

tostring

format: "date" · Inclusive business date; when paired with from the range is at most 366 days.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

sortstring

enum: "id", "preferred_start_at", "created_at", "updated_at" · Allowed sort field, applied to all matching records before the page limit. Omission preserves the existing default ordering.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the record ID as a stable tie-breaker.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · Match any listed status (OR), combined with other filters (AND). Send statuses[]=value. Do not combine with status.

representationstring

default: "full"; enum: "full", "compact" · full preserves the existing detailed shape. compact returns scalar list fields without child collections; retrieve one record separately for details.

assignmentstring

enum: "assigned", "unassigned" · Whether a worker association exists in this business, including historical memberships. unassigned cannot combine with a worker filter.

worker_qstring

minimum length: 1; maximum length: 100 · Literal substring of the business-specific worker first, last or full name; requires team.read. Does not assign anyone.

cURL

Addresses and code examples appear once API access is on for your business.

Get a Job

GET

Returns one business-owned job by API ID, including its local number, assignments, preferred window, and current ETag.

Action ID: work.jobs.get Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

jobstringRequired

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`job_...`) of the current-business job; it is distinct from the job's local_id.

cURL

Addresses and code examples appear once API access is on for your business.

Update a Job

PATCH

Updates supplied future Job fields and assignments only and requires the current ETag. A changed date cannot move onto a company holiday; an unchanged date closed after scheduling remains editable, and completed or canceled history may still be corrected. The preferred window is fixed at 60 minutes; the end is derived when omitted and a supplied end must match it.

Action ID: work.jobs.update Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

jobstringRequired

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`job_...`) of the current-business job; it is distinct from the job's local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Cancel a Job

POST

Transitions the authorized Job to Canceled through the same status transition used by the normal Jobs Flow. It does not add a comment; use work.jobs.comment separately when the owner asks to record context.

Action ID: work.jobs.cancel Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

jobstringRequired

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`job_...`) of the current-business job; it is distinct from the job's local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Add a Job worker comment

POST

Appends one actor-attributed Job comment to its request root.

Action ID: work.jobs.comment Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

jobstringRequired

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`job_...`) of the current-business job; it is distinct from the job's local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Job Logs: who changed what and when

GET

Status changes, edits and creations, oldest first. The job's Logs window: exactly the lines the Logs button on its preview card shows, as stored free text, usually "what - business-local time - who" (created, edited, status changed from X to Y, deleted). Read-only history; use work.jobs.get for the job's current state.

Action ID: work.jobs.logs Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

jobstringRequired

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`job_...`) of the current-business job; it is distinct from the job's local_id.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum log lines returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

List Requests

GET

Lists Requests that have not become Jobs. This matches the Requests page: converting a Request to a Job keeps its status (usually submit) but removes it from this list. Set include_converted=true to also return converted Requests, marked became_job true. Filters: customer, service, status, business date, local number, pagination. Each row includes bounded customer, Job Service, worker, and compact financial context when the caller's scopes allow it.

Action ID: work.requests.list Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Filter by owned customer API ID (`customer_...`).

service_idstring

pattern: "^job_service_[0-9a-hjkmnp-tv-z]{26}$" · Filter by the root Request’s owned Job Service API ID (`job_service_...`).

local_idinteger

minimum: 1 · Filter by business-local display number, distinct from API IDs.

statusstring

enum: "submit", "cancel", "approve", "draft", "in-progress", "complete", "scheduled", "in_progress" · Filter by documented business state.

fromstring

format: "date" · Inclusive business-local start date.

tostring

format: "date" · Inclusive business date; when paired with from the range is at most 366 days.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

sortstring

enum: "id", "preferred_start_at", "created_at", "updated_at" · Allowed sort field, applied to all matching records before the page limit. Omission preserves the existing default ordering.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the record ID as a stable tie-breaker.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · Match any listed status (OR), combined with other filters (AND). Send statuses[]=value. Do not combine with status.

representationstring

default: "full"; enum: "full", "compact" · full preserves the existing detailed shape. compact returns scalar list fields without child collections; retrieve one record separately for details.

include_convertedboolean

default: false · false (default) omits Requests already converted to a Job, as the Requests page does. true also returns them (became_job true); their status stays as it was when converted, usually submit.

cURL

Addresses and code examples appear once API access is on for your business.

Create a Request

POST

Creates a request against an existing owned customer and Job service; preferred_start_at is an offset timestamp stored as business wall time. Company holidays reject the new date. The preferred window is fixed at 60 minutes; the end is derived when omitted and a supplied end must match it.

Action ID: work.requests.create Permission: work.write, customers.read, work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a Request

GET

Returns one business-owned work request by API ID, including its local number, preferred window, relationships, and current ETag.

Action ID: work.requests.get Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

work_requeststringRequired

pattern: "^request_[0-9a-hjkmnp-tv-z]{26}$" · Request API ID (`request_...`), not local_id.

cURL

Addresses and code examples appear once API access is on for your business.

Update a Request

PATCH

Updates supplied request fields only and requires the current ETag. A changed date cannot move onto a company holiday; an unchanged date closed after scheduling remains editable. The preferred window is fixed at 60 minutes; the end is derived when omitted and a supplied end must match it.

Action ID: work.requests.update Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

work_requeststringRequired

pattern: "^request_[0-9a-hjkmnp-tv-z]{26}$" · Request API ID (`request_...`), not local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Add a Request worker comment

POST

Appends one actor-attributed worker comment to a Request without replacing its original customer comments.

Action ID: work.requests.comment Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

work_requeststringRequired

pattern: "^request_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`request_...`) of the current-business Request; it is distinct from the Request local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Create a Job from a Request

POST

Atomically converts one request to its single Job; replay returns the same Job. A new Job is not created when the request's scheduled business date is now a company holiday; an already converted Job remains unchanged.

Action ID: work.requests.convert Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

work_requeststringRequired

pattern: "^request_[0-9a-hjkmnp-tv-z]{26}$" · Request API ID (`request_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Request Logs: who changed what and when

GET

Status changes, edits and creations, oldest first. The request's Logs window: exactly the lines the Logs button on its preview card shows, as stored free text, usually "what - business-local time - who" (created, edited, status changed from X to Y, deleted). Read-only history; use work.requests.get for the request's current state.

Action ID: work.requests.logs Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

work_requeststringRequired

pattern: "^request_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`request_...`) of the current-business request; it is distinct from the request's local_id.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum log lines returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

List Visits

GET

Lists business-owned visits with stable pagination after status, worker, date, parent, and local-number filters are applied. Visit commitments are advisory and do not remove Appointment availability slots.

Action ID: work.visits.list Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Filter by owned customer API ID (`customer_...`).

service_idstring

pattern: "^job_service_[0-9a-hjkmnp-tv-z]{26}$" · Filter by the root Request’s owned Job Service API ID (`job_service_...`).

local_idinteger

minimum: 1 · Filter by business-local display number, distinct from API IDs.

project_numberinteger

minimum: 1 · Filter by project number (the root Request’s number): every visit of “Project #158”.

worker_idstring

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · Filter by assigned worker user API ID (`user_...`).

statusstring

enum: "submit", "cancel", "approve", "draft", "in-progress", "complete", "scheduled", "in_progress" · Filter by documented business state.

fromstring

format: "date" · Inclusive business-local start date.

tostring

format: "date" · Inclusive business date; when paired with from the range is at most 366 days.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

sortstring

enum: "id", "preferred_start_at", "created_at", "updated_at" · Allowed sort field, applied to all matching records before the page limit. Omission preserves the existing default ordering.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the record ID as a stable tie-breaker.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · Match any listed status (OR), combined with other filters (AND). Send statuses[]=value. Do not combine with status.

representationstring

default: "full"; enum: "full", "compact" · full preserves the existing detailed shape. compact returns scalar list fields without child collections; retrieve one record separately for details.

assignmentstring

enum: "assigned", "unassigned" · Whether a worker association exists in this business, including historical memberships. unassigned cannot combine with a worker filter.

worker_qstring

minimum length: 1; maximum length: 100 · Literal substring of the business-specific worker first, last or full name; requires team.read. Does not assign anyone.

cURL

Addresses and code examples appear once API access is on for your business.

Create a Visit

POST

Creates a Visit under an existing owned request without inventing availability. Company holidays reject the new date. A Visit is an exact start plus a duration in minutes: send duration_minutes, or end_at (the duration is the minutes between start and end), or neither for 60 minutes.

Action ID: work.visits.create Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a Visit

GET

Returns one business-owned visit by API ID, including its parent request, assignments, schedule, and current ETag.

Action ID: work.visits.get Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

visitstringRequired

pattern: "^visit_[0-9a-hjkmnp-tv-z]{26}$" · Visit API ID (`visit_...`), not local_id.

cURL

Addresses and code examples appear once API access is on for your business.

Update a Visit

PATCH

Updates supplied Visit schedule, details or assignments and requires the current ETag. A changed date cannot move onto a company holiday; an unchanged date closed after scheduling remains editable, and completed or canceled history may still be corrected. A Visit is an exact start plus a duration in minutes: send start_at alone to move it (the duration stays), duration_minutes to change the length, or end_at (the duration becomes the minutes between start and end).

Action ID: work.visits.update Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

visitstringRequired

pattern: "^visit_[0-9a-hjkmnp-tv-z]{26}$" · Visit API ID (`visit_...`), not local_id.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Cancel a Visit

POST

Transitions the Visit to Canceled through the same product status transition. It does not add a worker comment; use work.visits.comment separately.

Action ID: work.visits.cancel Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

visitstringRequired

pattern: "^visit_[0-9a-hjkmnp-tv-z]{26}$" · Visit API ID (`visit_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Add a Visit worker comment

POST

Appends one actor-attributed Visit comment.

Action ID: work.visits.comment Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

visitstringRequired

pattern: "^visit_[0-9a-hjkmnp-tv-z]{26}$" · Visit API ID (`visit_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Complete a Visit

POST

Transitions the Visit to Completed through the same product status transition. It does not add a worker comment; use work.visits.comment separately.

Action ID: work.visits.complete Permission: work.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

visitstringRequired

pattern: "^visit_[0-9a-hjkmnp-tv-z]{26}$" · Visit API ID (`visit_...`), not local_id.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Visit Logs: who changed what and when

GET

Status changes, edits and creations, oldest first. The visit's Logs window: exactly the lines the Logs button on its preview card shows, as stored free text, usually "what - business-local time - who" (created, edited, status changed from X to Y, deleted). Read-only history; use work.visits.get for the visit's current state.

Action ID: work.visits.logs Permission: work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

visitstringRequired

pattern: "^visit_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`visit_...`) of the current-business visit; it is distinct from the visit's local_id.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum log lines returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Requests, jobs & visits

Checklists

13 actions

Get an appointment's checklist

GET

For many Appointments, use checklists.list instead. Returns the checklist attached to the exact authorized Appointment; a numeric checklist ID from another parent cannot match. A Appointment with no checklist returns 404 not_found, the same as a missing Appointment.

Action ID: checklists.appointments.get Permission: checklists.read, appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`appointment_...`) of the owned Appointment parent.

cURL

Addresses and code examples appear once API access is on for your business.

Attach a checklist to an appointment

POST

Attaches a template-derived or explicit checklist to the exact authorized appointment without changing the source template.

Action ID: checklists.appointments.attach Permission: checklists.write, appointments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

appointmentstringRequired

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`appointment_...`) of the owned Appointment parent.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Complete a checklist item

POST

Completes an open step only after its required note and/or existing upload evidence is present. Every upload must be owned by this business and target this exact Job or appointment.

Action ID: checklists.items.complete Permission: checklists.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

itemstringRequired

pattern: "^checklist_item_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`checklist_item_...`) of a checklist step, resolved through its owning checklist and work.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Mark a checklist item not applicable

POST

Marks an open allow_na step not applicable with the required reason under the existing tick policy.

Action ID: checklists.items.not-applicable Permission: checklists.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

itemstringRequired

pattern: "^checklist_item_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`checklist_item_...`) of a checklist step, resolved through its owning checklist and work.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Reopen a checklist item

POST

Reopens an answered step under the manager/owner policy and records the optional reason; assigned workers cannot reopen.

Action ID: checklists.items.reopen Permission: checklists.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

itemstringRequired

pattern: "^checklist_item_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`checklist_item_...`) of a checklist step, resolved through its owning checklist and work.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List checklist templates

GET

Lists read-only checklist templates visible under the current business checklist policy; it does not attach or modify them.

Action ID: checklists.templates.list Permission: checklists.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get a checklist template

GET

Reads one active organisation template and its evidence requirements. Template writing is not exposed.

Action ID: checklists.templates.get Permission: checklists.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

templatestringRequired

pattern: "^checklist_template_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`checklist_template_...`) of the active checklist template owned by this business.

cURL

Addresses and code examples appear once API access is on for your business.

List checklists with how many items are done

GET

state=unfinished finds work with open checklists. List checklists with how many items are done; use state=unfinished to find Jobs and Appointments with open checklists in one call instead of probing each Job or Appointment with checklists.jobs.get / checklists.appointments.get. Each row gives the checklist id, title, state (open/complete), done/total counts, and the parent's type, API ID, local_id (the number shown in the app) and, for a Job, project_number (its Request's number). Read one checklist's steps with checklists.get.

Action ID: checklists.list Permission: checklists.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

statestring

default: "all"; enum: "unfinished", "finished", "all" · unfinished = checklists with at least one open item (or no items yet); finished = every item done or N/A; all = both. Default all.

parent_typestring

enum: "job", "appointment" · Only checklists on Jobs or only on Appointments. Omitted: both, limited to the parents this credential may read.

cURL

Addresses and code examples appear once API access is on for your business.

Get a checklist

GET

Returns one checklist authorized under its explicit job or appointment parent and the caller's current checklist policy.

Action ID: checklists.get Permission: checklists.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

checkliststringRequired

pattern: "^checklist_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`checklist_...`) of the checklist owned by this business.

cURL

Addresses and code examples appear once API access is on for your business.

Update a checklist

PATCH

Replaces supplied open-step definitions under the current ETag. A completed or N/A step may be sent as its id only and remains locked with its evidence and event history.

Action ID: checklists.update Permission: checklists.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

checkliststringRequired

pattern: "^checklist_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`checklist_...`) of the checklist owned by this business.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List a checklist's history

GET

Lists recorded lifecycle events for one authorized checklist; reading the event log does not change checklist state.

Action ID: checklists.events Permission: checklists.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

checkliststringRequired

pattern: "^checklist_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`checklist_...`) of the checklist owned by this business.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get a Job's checklist

GET

For many Jobs, use checklists.list instead. Returns the checklist attached to the exact authorized Job; a numeric checklist ID from another parent cannot match. A Job with no checklist returns 404 not_found, the same as a missing Job.

Action ID: checklists.jobs.get Permission: checklists.read, work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

jobstringRequired

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`job_...`) of the owned Job parent.

cURL

Addresses and code examples appear once API access is on for your business.

Attach a checklist to a Job

POST

Attaches a template-derived or explicit checklist to the exact authorized job without changing the source template.

Action ID: checklists.jobs.attach Permission: checklists.write, work.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

jobstringRequired

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`job_...`) of the owned Job parent.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Estimates

6 actions

List estimates

GET

Lists organisation-scoped estimates filtered by customer, request, status and inclusive quote_date bounds. Each row carries bounded customer, request, service and financial context when the caller has the corresponding read scope. No read sends or converts an estimate.

Action ID: estimates.list Permission: estimates.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of the related customer.

request_idstring

pattern: "^request_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`request_...`) of the related work request.

statusstring

enum: "waiting-approval", "approved", "changes-requested", "rejected", "expired", "canceled", "draft", "archived" · Exact public lifecycle state to include.

fromstring

format: "date" · Inclusive first business-local date in the requested range.

tostring

format: "date" · Inclusive last business-local date in the requested range.

local_idinteger

minimum: 1 · Exact business-local number within this operation’s record family; it is never compared with an API ID.

project_numberinteger

minimum: 1 · Filter by project number (the related Request’s number), shown as “Project #158”.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

sortstring

enum: "id", "created_at", "quote_date", "expires_on", "total" · Allowed sort field, applied to all matching records before the page limit. Omission preserves the existing default ordering.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the record ID as a stable tie-breaker.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · Match any listed status (OR), combined with other filters (AND). Send statuses[]=value. Do not combine with status.

representationstring

default: "full"; enum: "full", "compact" · full preserves the existing detailed shape. compact returns scalar list fields without child collections; retrieve one record separately for details.

job_idstring

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · Exact job API ID (`job_...`) in this business; matches documents belonging to that job’s request. This is not a direct document foreign key.

amount_minstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Minimum tax-inclusive document total in dollars, inclusive.

amount_maxstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Maximum tax-inclusive document total in dollars, inclusive; must not be below amount_min.

include_summaryboolean

default: false · Include a fixed summary over ALL records matching these filters, before sorting and pagination. Default false. Zero matches returns zero totals.

expires_fromstring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive estimate expiration calendar date bound; paired range at most366days. Legacy from/to still filters quote_date.

expires_tostring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive estimate expiration calendar date bound; paired range at most366days. Legacy from/to still filters quote_date.

cURL

Addresses and code examples appear once API access is on for your business.

Create an estimate

POST

Creates a local estimate from the supplied customer and line snapshots, calculating totals without sending or converting it.

Action ID: estimates.create Permission: estimates.write, work.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get an estimate

GET

Returns one business-owned estimate with its frozen line snapshots, totals, local number, and current version.

Action ID: estimates.get Permission: estimates.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

estimatestringRequired

pattern: "^estimate_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`estimate_...`) of the estimate path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Update an estimate

PATCH

Updates supplied mutable fields on an authorized estimate after its ETag check; omitted fields remain unchanged.

Action ID: estimates.update Permission: estimates.write, work.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

estimatestringRequired

pattern: "^estimate_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`estimate_...`) of the estimate path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Cancel an estimate

POST

Cancels an authorized estimate while retaining its line snapshots and history; it does not delete or convert the estimate.

Action ID: estimates.cancel Permission: estimates.write, work.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

estimatestringRequired

pattern: "^estimate_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`estimate_...`) of the estimate path resource.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Estimate Logs: who changed what and when

GET

Status changes, edits and creations, oldest first. The estimate's Logs window: exactly the lines the Logs button on its preview card shows, as stored free text, usually "what - business-local time - who" (created, edited, status changed from X to Y, deleted). Read-only history; use estimates.get for the estimate's current state.

Action ID: estimates.logs Permission: estimates.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

estimatestringRequired

pattern: "^estimate_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`estimate_...`) of the estimate path resource.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum log lines returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Estimate Templates

2 actions

List estimate templates

GET

Lists read-only estimate templates visible to the current business caller; template authoring is excluded.

Action ID: estimate-templates.list Permission: estimates.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Get an estimate template

GET

Returns one read-only estimate template and its line definitions without creating an estimate.

Action ID: estimate-templates.get Permission: estimates.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

templatestringRequired

pattern: "^estimate_template_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`estimate_template_...`) of the estimate-template path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Invoices

6 actions

List invoices

GET

Lists organisation-scoped invoices filtered by customer, request, status and inclusive created-date bounds. Each row carries bounded customer, request, service and financial context when the caller has the corresponding read scope. Reads omit token, pay link and provider identifiers and never backfill a customer token.

Action ID: invoices.list Permission: invoices.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of the related customer.

request_idstring

pattern: "^request_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`request_...`) of the related work request.

statusstring

enum: "voided", "paid", "paid_cash", "overdue", "refunded", "partially_refunded", "due", "pending", "declined", "disputed", "draft", "uncollectable" · Exact public lifecycle state to include.

fromstring

format: "date" · Inclusive first business-local date in the requested range.

tostring

format: "date" · Inclusive last business-local date in the requested range.

local_idinteger

minimum: 1 · Exact business-local number within this operation’s record family; it is never compared with an API ID.

project_numberinteger

minimum: 1 · Filter by project number (the related Request’s number), shown as “Project #158”.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

sortstring

enum: "id", "created_at", "total", "balance_due", "payment_due_on" · Allowed sort field, applied to all matching records before the page limit. Omission preserves the existing default ordering.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the record ID as a stable tie-breaker.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · Match any listed status (OR), combined with other filters (AND). Send statuses[]=value. Do not combine with status.

representationstring

default: "full"; enum: "full", "compact" · full preserves the existing detailed shape. compact returns scalar list fields without child collections; retrieve one record separately for details.

job_idstring

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · Exact job API ID (`job_...`) in this business; matches documents belonging to that job’s request. This is not a direct document foreign key.

amount_minstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Minimum tax-inclusive document total in dollars, inclusive.

amount_maxstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Maximum tax-inclusive document total in dollars, inclusive; must not be below amount_min.

include_summaryboolean

default: false · Include a fixed summary over ALL records matching these filters, before sorting and pagination. Default false. Zero matches returns zero totals.

balance_minstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Minimum canonical remaining balance, inclusive.

balance_maxstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Maximum canonical remaining balance, inclusive.

issued_fromstring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive first Invoice Date (issued_on: the date picked on the invoice form, or the creation date). Due dates use completion date (or creation date) plus due_days. New paired ranges are limited to 366 days.

issued_tostring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive last Invoice Date (issued_on: the date picked on the invoice form, or the creation date). Due dates use completion date (or creation date) plus due_days. New paired ranges are limited to 366 days.

due_fromstring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive first payment due calendar date. Due dates use completion date (or creation date) plus due_days. New paired ranges are limited to 366 days.

due_tostring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive last payment due calendar date. Due dates use completion date (or creation date) plus due_days. New paired ranges are limited to 366 days.

overdueboolean

Positive canonical balance with payment_due_on before today in the business timezone, excluding draft, voided, refunded and uncollectable. false selects the complement.

payment_statestring

enum: "unpaid", "partial", "paid" · Based on canonical total, net paid and remaining balance; excludes draft/voided/refunded/uncollectable and zero totals. paid does not infer payment from status alone.

cURL

Addresses and code examples appear once API access is on for your business.

Create an invoice

POST

Creates a local invoice draft from the supplied customer and line snapshots, calculating totals without sending or charging it.

Action ID: invoices.create Permission: invoices.write, work.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get an invoice

GET

Returns one business-owned invoice draft with its frozen line snapshots, totals, local number, and current version; it does not refresh provider state.

Action ID: invoices.get Permission: invoices.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

invoicestringRequired

pattern: "^invoice_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`invoice_...`) of the invoice path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Update an invoice

PATCH

Updates supplied mutable fields on a local invoice draft after its ETag check; omitted fields and frozen history remain unchanged.

Action ID: invoices.update Permission: invoices.write, work.read, customers.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

invoicestringRequired

pattern: "^invoice_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`invoice_...`) of the invoice path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Invoice Logs: who changed what and when

GET

Status changes, edits and creations, oldest first. The invoice's Logs window: exactly the lines the Logs button on its preview card shows, as stored free text, usually "what - business-local time - who" (created, edited, status changed from X to Y, deleted). Read-only history; use invoices.get for the invoice's current state.

Action ID: invoices.logs Permission: invoices.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

invoicestringRequired

pattern: "^invoice_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`invoice_...`) of the invoice path resource.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum log lines returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

List an invoice's payments

GET

Lists stored payments allocated to one business-owned invoice; it never contacts a payment provider or changes payment state.

Action ID: invoices.payments Permission: payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

invoicestringRequired

pattern: "^invoice_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`invoice_...`) of the invoice path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Payments

2 actions

List payments

GET

Merges local appointment and invoice payments with stable succeeded_at, id and type ordering. Each row includes bounded customer and parent context when scopes allow it. Provider, payment-method identifiers and raw metadata are excluded.

Action ID: payments.list Permission: payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

kindstring

enum: "appointment", "invoice" · Required record family discriminator; the payment's API ID must belong to this kind.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of the related customer.

statusstring

enum: "created", "pending", "success", "failed", "canceled", "partially_refunded", "refunded", "declined", "disputed" · Exact public lifecycle state to include.

fromstring

format: "date" · Inclusive first business-local date in the requested range.

tostring

format: "date" · Inclusive last business-local date in the requested range.

local_idinteger

minimum: 1 · Exact business-local number within this operation’s record family; it is never compared with an API ID. Requires kind=appointment because invoice payments have no business-local number.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

sortstring

enum: "id", "created_at", "succeeded_at", "amount" · Allowed sort field, applied to all matching records before the page limit. Omission preserves the existing default ordering.

directionstring

enum: "asc", "desc" · Sort direction; requires sort. Explicit sorting defaults to asc and uses the record ID as a stable tie-breaker.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · Match any listed status (OR), combined with other filters (AND). Send statuses[]=value. Do not combine with status.

representationstring

default: "full"; enum: "full", "compact" · full preserves the existing detailed shape. compact returns scalar list fields without child collections; retrieve one record separately for details.

include_summaryboolean

default: false · Include a fixed summary over ALL records matching these filters, before sorting and pagination. Default false. Zero matches returns zero totals.

amount_minstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Minimum stored payment-attempt amount, inclusive, in dollars.

amount_maxstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Maximum stored payment-attempt amount, inclusive.

invoice_idstring

pattern: "^invoice_[0-9a-hjkmnp-tv-z]{26}$" · Parent invoice API ID (`invoice_...`); implies invoice kind and cannot combine with appointment_id or contradictory kind.

appointment_idstring

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Parent appointment API ID (`appointment_...`); implies appointment kind and requires appointments.read.

date_fieldstring

enum: "created", "succeeded" · Select the date filtered by from/to. created uses business-local days compared with the stored business-clock creation time and includes failed/pending records with no success date. succeeded uses the established business-wall-clock success timestamp. Omission preserves legacy success-date filtering.

cURL

Addresses and code examples appear once API access is on for your business.

Get a payment

GET

Reads a payment by its required type-qualified identity: kind plus the payment API ID. The detail projection may include at most ten recent refunds with explicit coverage counters.

Action ID: payments.get Permission: payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

kindstringRequired

enum: "appointment", "invoice" · Required record family discriminator; the payment's API ID must belong to this kind.

paymentstringRequired

pattern: "^(?:payment|invoice_payment)_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_...` or `invoice_payment_...`) within the explicit payment kind.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Recurring payments

10 actions

List payment series

GET

Lists business-owned recurring-payment definitions after status, cadence, customer, and pagination filtering; it never runs a charge.

Action ID: payment-series.list Permission: payment-series.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of the related customer.

service_idstring

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`appointment_service_...`) of the owned service snapshot source.

lifecycle_statusstring

enum: "active", "paused", "ended" · Current recurring-series state: active, paused, or ended.

frequencystring

enum: "weekly", "2_weeks", "4_weeks", "monthly", "quarterly", "6_months", "yearly" · Filters definitions by the cadence used to calculate their future scheduled dates.

local_idinteger

minimum: 1 · Exact business-local number within this operation’s record family; it is never compared with an API ID.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Create a payment series

POST

Creates a future recurring-payment definition from a stored payment method reference; creation itself does not charge it.

Action ID: payment-series.create Permission: payment-series.write, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get the retry choices for a payment series

GET

Returns the code-owned retry-policy choices and numeric bounds clients must use when defining a recurring-payment series.

Action ID: payment-series.policy Permission: payment-series.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Get a payment series

GET

Returns one business-owned recurring-payment definition and its current version without charging or refreshing payment data.

Action ID: payment-series.get Permission: payment-series.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^payment_series_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_series_...`) of the recurring payment series.

cURL

Addresses and code examples appear once API access is on for your business.

Update a payment series

PATCH

Merges supplied future terms with the current authoritative snapshot under lock. A details-only edit preserves legacy v1 economics and never reprices an existing occurrence; the unchanged archived current service may be retained.

Action ID: payment-series.update Permission: payment-series.write, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^payment_series_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_series_...`) of the recurring payment series.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

End a payment series

POST

Ends future attempts for an authorized recurring-payment series while retaining the definition and occurrence history.

Action ID: payment-series.end Permission: payment-series.write, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^payment_series_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_series_...`) of the recurring payment series.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List payment series occurrences

GET

Lists organisation- and series-scoped occurrence snapshots and safe attempt counts/status only; payment methods and provider identifiers are excluded.

Action ID: payment-series.occurrences Permission: payment-series.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^payment_series_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_series_...`) of the recurring payment series.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Pause a payment series

POST

Pauses future automatic attempts for an authorized recurring-payment series while retaining its occurrence ledger.

Action ID: payment-series.pause Permission: payment-series.write, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^payment_series_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_series_...`) of the recurring payment series.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Resume a payment series

POST

Resumes future automatic attempts for an authorized paused series without retrying past occurrences immediately.

Action ID: payment-series.resume Permission: payment-series.write, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^payment_series_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_series_...`) of the recurring payment series.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Skip the next pending payment

POST

Marks the next pending occurrence of an authorized recurring-payment series as skipped without charging it.

Action ID: payment-series.skip-next Permission: payment-series.write, customers.read, appointment-services.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

seriesstringRequired

pattern: "^payment_series_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`payment_series_...`) of the recurring payment series.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Refunds

2 actions

List customer refunds

GET

Read stored customer refunds with parent, status, amount and business-local date filters. Each row includes bounded payment, parent and customer context when the corresponding records and scopes permit it. This does not issue a refund or contact a provider. Appointment refunds require appointments.read; unspecified kind omits that branch when access is absent.

Action ID: refunds.list Permission: payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_qstring

minimum length: 1; maximum length: 100 · Literal case-insensitive substring of customer first, last or full name within this business; requires customers.read. Multiple matches are returned, never automatically selected. % and _ are literal characters.

payment_idstring

pattern: "^(?:invoice_payment|payment)_[0-9a-hjkmnp-tv-z]{26}$" · Exact parent payment API ID (`invoice_payment_...` or `payment_...`); payment_kind must also be provided.

payment_kindstring

enum: "invoice", "appointment" · Parent payment family; incompatible parent filters are rejected.

invoice_idstring

pattern: "^invoice_[0-9a-hjkmnp-tv-z]{26}$" · Parent invoice API ID (`invoice_...`); implies invoice payment kind.

appointment_idstring

pattern: "^appointment_[0-9a-hjkmnp-tv-z]{26}$" · Parent appointment API ID (`appointment_...`); implies appointment payment kind and requires appointments.read.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Customer API ID (`customer_...`) from the parent invoice or appointment.

statusstring

enum: "created", "complete", "processing", "failed" · Exact stored refund status.

statusesarray

minimum items: 1; maximum items: 12; items must be unique · OR of stored statuses; cannot combine with status. Send statuses[]=value.

date_fieldstring

default: "created"; enum: "created", "completed" · Date filtered by from/to; business-local days are compared with the stored business-clock time. Null completion dates do not match bounded completion filters.

fromstring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive first business-local calendar day.

tostring

format: "date"; pattern: "^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}$" · Inclusive last business-local day; paired range at most366days.

sortstring

enum: "id", "created_at", "completed_at", "amount" · Allowed sort; omission returns newest-created first. Explicit nullable sorts place null last.

directionstring

enum: "asc", "desc" · Requires sort; explicit sorting defaults to asc with ID tie-breaker.

pageinteger

default: 1; minimum: 1 · One-based page number.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum rows on this page, not the matching total.

amount_minstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Inclusive minimum refund amount in dollars.

amount_maxstring

pattern: "^[0-9]{1,10}(\\.[0-9]{1,2})?$" · Inclusive maximum refund amount; must not be below amount_min.

include_summaryboolean

default: false · Include a fixed summary over ALL records matching these filters, before sorting and pagination. Default false. Zero matches returns zero totals.

cURL

Addresses and code examples appear once API access is on for your business.

Read one customer refund

GET

Read one stored refund by its global refund ID. The projection identifies its payment and carries bounded parent and customer context when scopes allow it. Missing, foreign or unauthorized parent records return not_found. Does not contact providers.

Action ID: refunds.get Permission: payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

refundstringRequired

pattern: "^refund_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`refund_...`) of the customer refund, not a payment ID or platform billing refund.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Taxes

1 action

List current business tax rates

GET

Returns the current business tax-rate catalog as exact decimal percentages for use in later invoice and estimate requests.

Action ID: taxes.list Permission: taxes.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

include_retiredstring

enum: "true", "false", "1", "0" · When true, include retired tax rates alongside active rates.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Estimates, invoices & payments

Price Book

8 actions

List Price Book categories

GET

Returns Price Book categories owned by the current business in their stored display order.

Action ID: price-book.categories.list Permission: price-book.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Create a Price Book category

POST

Creates a business-owned category used to organize Price Book items; the API assigns its API ID.

Action ID: price-book.categories.create Permission: price-book.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Read a Price Book category

GET

Returns one category owned by the current business with its current ETag for conditional updates.

Action ID: price-book.categories.get Permission: price-book.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

categorystringRequired

pattern: "^price_book_category_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`price_book_category_...`) of the price-book category path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Update a Price Book category

PATCH

Updates only supplied mutable category fields after ownership and ETag checks; omitted fields remain unchanged.

Action ID: price-book.categories.update Permission: price-book.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

categorystringRequired

pattern: "^price_book_category_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`price_book_category_...`) of the price-book category path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List Price Book items

GET

Returns business-owned Price Book items after category and search filtering; restricted cost fields are redacted before serialization when required.

Action ID: price-book.items.list Permission: price-book.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

qstring | null

maximum length: 100 · Case-insensitive text search over the documented business-facing fields.

category_idstring

pattern: "^price_book_category_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`price_book_category_...`) of an owned price-book category.

typePriceBookItemType

Exact supported domain type to include.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Create a Price Book item

POST

Creates a business-owned Price Book item using decimal-string money inputs; customer-facing price and restricted cost remain distinct fields.

Action ID: price-book.items.create Permission: price-book.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Read a Price Book item

GET

Returns one business-owned Price Book item; cost is included only when the caller has the separate permission documented by the resource schema.

Action ID: price-book.items.get Permission: price-book.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

itemstringRequired

pattern: "^price_book_item_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`price_book_item_...`) of the price-book item path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Update a Price Book item

PATCH

Updates only supplied mutable fields on a business-owned Price Book item after an ETag check; identity and owner fields cannot be replaced.

Action ID: price-book.items.update Permission: price-book.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

itemstringRequired

pattern: "^price_book_item_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`price_book_item_...`) of the price-book item path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Calls, messages & tickets

Conversations

4 actions

List every phone call with counts per status

GET

Every call in the Call & Message Center: answered, missed, voicemail, answered by Agent Genie, outgoing. meta.summary counts each status for the same dates, direction and customer (status does not narrow it), so it answers totals such as missed calls this week.

Action ID: conversations.calls Permission: conversations.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

fromstring

format: "date" · Inclusive lower business-local date.

tostring

format: "date" · Inclusive upper business-local date.

directionstring

enum: "incoming", "outgoing" · Only incoming or only outgoing calls.

statusstring

enum: "answered", "missed", "voicemail", "ai_answered", "outbound_answered", "outbound_missed", "in_progress" · Only calls with this outcome.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`); only calls with this customer.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Mark a phone number or email as spam

POST

Flags a sender in the business's Blocked Contacts list as spam, the same flag as Mark as spam in the Call & Message Center. It is not a full block; the business can block the contact on the Blocked Contacts page. Send is_spam false to clear the flag.

Action ID: conversations.spam Permission: conversations.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List customer conversation channels

GET

Returns channel summaries for one business-owned customer without sending or changing messages.

Action ID: conversations.list Permission: conversations.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstringRequired

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of the owned customer whose conversations are listed. Required.

cURL

Addresses and code examples appear once API access is on for your business.

List customer messages

GET

Returns one channel of the business-owned customer message history. Message bodies are plain text and capped at 100,000 characters; attachment storage paths are never returned.

Action ID: conversations.messages Permission: conversations.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customerstringRequired

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of the owned customer conversation or portal summary.

channelConversationChannel

Code-owned conversation channel key.

fromstring

format: "date" · Inclusive lower business-local date.

tostring

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Calls, messages & tickets

Receptionist

9 actions

Read AI Receptionist configuration and readiness

GET

Returns stored AI Receptionist configuration, readiness and bounded usage; it does not place or answer a call.

Action ID: receptionist.get Permission: receptionist.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Turn Agent Genie auto-send on or off

PUT

Enables or disables automatic reply sending within the stored receptionist policy.

Action ID: receptionist.auto-send Permission: receptionist.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List recorded Receptionist calls without live provider state

GET

Lists stored receptionist call summaries using status and business-local date filters; it does not place or answer a call.

Action ID: receptionist.calls Permission: receptionist.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

statusstring

enum: "active", "completed", "all" · Code-owned lifecycle state filter; omission includes every allowed state.

fromstring

format: "date" · Inclusive lower business-local date.

tostring

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read one recorded Receptionist call

GET

Returns one stored call transcript and its recorded receptionist actions.

Action ID: receptionist.calls.get Permission: receptionist.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

callstringRequired

pattern: "^receptionist_call_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`receptionist_call_...`) of the stored receptionist call.

cURL

Addresses and code examples appear once API access is on for your business.

Turn Agent Genie on or off

PUT

Enables or disables receptionist handling after current readiness checks.

Action ID: receptionist.enabled Permission: receptionist.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List recorded Receptionist replies

GET

Lists stored receptionist reply reviews using state and business-local date filters; it does not approve or send a reply.

Action ID: receptionist.replies Permission: receptionist.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

statestring

enum: "needs_approval", "handled", "all" · Code-owned lifecycle state filter; omission includes every allowed state.

fromstring

format: "date" · Inclusive lower business-local date.

tostring

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read one recorded Receptionist reply

GET

Returns one stored reply review with bounded excerpts and escalation state.

Action ID: receptionist.replies.get Permission: receptionist.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

replystringRequired

pattern: "^receptionist_reply_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`receptionist_reply_...`) of the stored receptionist reply review.

cURL

Addresses and code examples appear once API access is on for your business.

Update Agent Genie settings

PATCH

Updates supported receptionist persona, greeting, knowledge and action permissions under the current ETag.

Action ID: receptionist.settings Permission: receptionist.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Turn Agent Genie voice on or off

PUT

Enables or disables the voice channel without changing text-reply settings.

Action ID: receptionist.voice-enabled Permission: receptionist.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Calls, messages & tickets

Tickets

4 actions

List customer tickets (the Tickets page)

GET

Lists the business's own customer tickets: customer problems or complaints the business tracks, as shown on the Tickets page. These are not tickets the business sent to BizBaby support. Filter by customer, status and created date.

Action ID: tickets.list Permission: tickets.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of an owned customer used to narrow results.

statusstring

enum: "open", "resolved", "expired", "all" · Ticket state filter; omission returns open tickets only. Use all for every state.

fromstring

format: "date" · Inclusive lower business-local date on the ticket's created date.

tostring

format: "date" · Inclusive upper business-local date on the ticket's created date; not before from.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create a customer ticket

POST

Creates a customer ticket (the Tickets page, not a BizBaby support ticket) for a business-owned customer, optionally linked to a customer-owned appointment or job.

Action ID: tickets.create Permission: tickets.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Read a customer ticket

GET

Returns one of the business's own customer tickets (the Tickets page, not BizBaby support) and its linked work identity when present.

Action ID: tickets.get Permission: tickets.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

ticketstringRequired

pattern: "^ticket_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`ticket_...`) of the business-owned ticket.

cURL

Addresses and code examples appear once API access is on for your business.

Update a customer ticket

PATCH

Updates supplied fields of a customer ticket (the Tickets page, not BizBaby support) only. Supply work_type and work_id together; set both to null to unlink work.

Action ID: tickets.update Permission: tickets.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

ticketstringRequired

pattern: "^ticket_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`ticket_...`) of the business-owned ticket.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Calls, messages & tickets

Follow Ups

4 actions

List follow-ups

GET

Lists business-owned follow-ups. customer_id and contact are mutually exclusive filters.

Action ID: follow-ups.list Permission: follow-ups.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`customer_...`) of an owned customer used to narrow results.

contactstring

maximum length: 320 · Stored follow-up contact label used as an exact filter.

statestring

enum: "waiting", "done", "all" · Code-owned lifecycle state filter; omission includes every allowed state.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create a follow-up

POST

Creates a follow-up for exactly one business-owned customer or direct contact. No message is sent.

Action ID: follow-ups.create Permission: follow-ups.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Read a follow-up

GET

Returns one business-owned follow-up and its linked work identity when present.

Action ID: follow-ups.get Permission: follow-ups.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

follow_upstringRequired

pattern: "^follow_up_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`follow_up_...`) of the business-owned follow-up.

cURL

Addresses and code examples appear once API access is on for your business.

Update a follow-up

PATCH

Updates supplied follow-up details under the current ETag; omitted fields remain unchanged.

Action ID: follow-ups.update Permission: follow-ups.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

follow_upstringRequired

pattern: "^follow_up_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`follow_up_...`) of the business-owned follow-up.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Team & operations

Tasks

13 actions

List tasks visible to the caller

GET

Returns tasks visible under the caller's current business policy, with status, ownership, linkage, due-date, and pagination filters applied together.

Action ID: tasks.list Permission: tasks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

scopestring

default: "own"; enum: "own", "team" · Select the caller’s own tasks or the authorized team view.

sectionstring

enum: "unassigned", "overdue", "all_open", "completed" · Filter team tasks by unassigned, overdue, all_open, or completed. Requires scope=team; omit section for scope=own.

qstring | null

maximum length: 100 · Case-insensitive text search over the documented business-facing fields.

assignee_user_idstring

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`user_...`) of an eligible business user.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of the related customer.

context_typeTaskContextType

Exact linked-record family paired with work_id.

due_fromstring

format: "date" · Inclusive first business-local due date.

due_tostring

format: "date" · Inclusive last business-local due date.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Create a task

POST

Omit assignee_user_id to assign yourself. Creates a task in the current business with optional due time, recurrence, and linked-record context validated under live policy; send null explicitly for Unassigned.

Action ID: tasks.create Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Count team task sections

GET

Returns counts for the same policy-filtered task sections available to the caller; optional work linkage narrows each count consistently.

Action ID: tasks.counts Permission: tasks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

scopestring

enum: "own", "team" · Select the caller’s own tasks or the authorized team view.

qstring | null

maximum length: 100 · Case-insensitive text search over the documented business-facing fields.

assignee_user_idstring

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`user_...`) of an eligible business user.

customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of the related customer.

context_typeTaskContextType

Exact linked-record family paired with work_id.

due_fromstring

format: "date" · Inclusive first business-local due date.

due_tostring

format: "date" · Inclusive last business-local due date.

cURL

Addresses and code examples appear once API access is on for your business.

Read a task

GET

Returns one task only when it belongs to the current business and remains visible under the caller's current task policy.

Action ID: tasks.get Permission: tasks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

cURL

Addresses and code examples appear once API access is on for your business.

Update a task

PATCH

Updates only supplied mutable task fields after authorization and an ETag check; omitted fields retain their stored values.

Action ID: tasks.update Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Assign or unassign a task

PUT

Sets or clears the assignee on an authorized task after checking its current ETag and assignment policy.

Action ID: tasks.assignment Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Block an active task

POST

Moves an authorized active task into the blocked state while retaining its prior activity history.

Action ID: tasks.block Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Cancel a task

POST

Moves an authorized task into the canceled state without deleting the task or its recorded activity.

Action ID: tasks.cancel Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Complete a task

POST

Marks an authorized task complete and records the resulting lifecycle activity.

Action ID: tasks.complete Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Reopen a completed or canceled task

POST

Returns an authorized completed or canceled task to an open state and records the lifecycle transition.

Action ID: tasks.reopen Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Start an open task

POST

Moves an authorized open task into the active state and records the lifecycle transition.

Action ID: tasks.start Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Stop future recurrence for a task

POST

Stops future recurrence for an authorized task while retaining the task and existing recurrence history.

Action ID: tasks.stop-recurring Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Unblock a blocked task

POST

Returns an authorized blocked task to an active state and records the lifecycle transition.

Action ID: tasks.unblock Permission: tasks.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

taskstringRequired

pattern: "^task_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`task_...`) of the task path resource; never a business-local number.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Team & operations

Team members and assignments

3 actions

List team members

GET

Lists organisation memberships. Contact fields and inactive search are returned only to contact-authorized managers; hidden email is never searched for other roles.

Action ID: team.list Permission: team.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

activeboolean

default: true · Filter active state; inactive team rows require manager access.

qstring

maximum length: 100 · Literal case-insensitive contains name search; manager-level team search may also match email. %, _, and = are treated as ordinary text.

service_idstring

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · Filter active workers eligible for this owned Appointment Service API ID (`appointment_service_...`).

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get a team member

GET

Reads one organisation membership. Optional contact fields follow the same caller-role projection as the list.

Action ID: team.show Permission: team.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

user_idstringRequired

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · Worker user API ID (`user_...`), not membership_id.

activeboolean

default: true · Filter active state; inactive team rows require manager access.

qstring

maximum length: 100 · Literal case-insensitive contains name search; manager-level team search may also match email. %, _, and = are treated as ordinary text.

service_idstring

pattern: "^appointment_service_[0-9a-hjkmnp-tv-z]{26}$" · Filter active workers eligible for this owned Appointment Service API ID (`appointment_service_...`).

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

List existing team assignments

GET

Returns authorized appointment, Job, and Visit assignments. This is assignment evidence, not bookable arrival windows; excluded_types and is_complete prevent an empty list from implying availability.

Action ID: team.commitments Permission: team.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

user_idstringRequired

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · Worker user API ID (`user_...`), not membership_id.

fromstringRequired

format: "date" · Inclusive business-local start date.

tostringRequired

format: "date" · Inclusive business-local end date; endpoint range limits apply.

cURL

Addresses and code examples appear once API access is on for your business.

Team & operations

Notes

12 actions

List note folders

GET

Lists the current person's note folders and their stored ordering without exposing another person's private folders.

Action ID: notes.folders.list Permission: notes.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Create a note folder

POST

Creates a personal note folder for the current person; folders are not shared across users merely because they share a business.

Action ID: notes.folders.create Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Rename a note folder

PATCH

Renames an owned note folder after checking its current version; notes already in the folder remain there.

Action ID: notes.folders.update Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

folderstringRequired

pattern: "^note_folder_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_folder_...`) of the note-folder path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List notes visible to the caller

GET

Returns notes the current person owns or may access through active sharing, filtered before pagination and serialization.

Action ID: notes.list Permission: notes.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

qstring | null

maximum length: 100 · Case-insensitive text search over the documented business-facing fields.

folder_idstring

pattern: "^note_folder_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`note_folder_...`) of an owned note folder.

linked_customer_idstring

pattern: "^customer_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`customer_...`) of an owned customer linked to the note.

linked_job_idstring

pattern: "^job_[0-9a-hjkmnp-tv-z]{26}$" · Exact API ID (`job_...`) of an owned job linked to the note.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Create a private note

POST

Creates a private note owned by the current person in the current business; sharing and links are managed by their dedicated operations.

Action ID: notes.create Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Read an authorized note

GET

Returns a note only when the caller owns it or currently has an authorized share, with no public share token or storage path exposed.

Action ID: notes.get Permission: notes.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

notestringRequired

pattern: "^note_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_...`) of the note path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Update a note

PATCH

Updates only supplied content fields on an authorized note after an atomic version check, preventing stale text from overwriting newer text.

Action ID: notes.update Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

notestringRequired

pattern: "^note_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_...`) of the note path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Move a note to a folder

PUT

Moves an owned note into an owned folder, or clears its folder when the request explicitly supplies null, after an ETag check.

Action ID: notes.move Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

notestringRequired

pattern: "^note_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_...`) of the note path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Link a customer or Job to a note

POST

Adds an exact business-owned customer or job link to an authorized note after validating both sides of the relationship.

Action ID: notes.links.create Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

notestringRequired

pattern: "^note_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_...`) of the note path resource.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Remove a link from a note

DELETE

Removes the specified customer or job link from an authorized note without deleting either linked record.

Action ID: notes.links.delete Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

notestringRequired

pattern: "^note_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_...`) of the note path resource.

linkstringRequired

pattern: "^note_link_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_link_...`) of the note-link path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Pin or unpin a note

PUT

Sets the desired pinned state for an authorized note after checking its current version; repeating the same desired state is safe.

Action ID: notes.pin Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

notestringRequired

pattern: "^note_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_...`) of the note path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Change note sharing

PUT

Replaces the complete worker-sharing set for an owned note with the supplied current-business workers after an ETag check.

Action ID: notes.sharing Permission: notes.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

notestringRequired

pattern: "^note_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`note_...`) of the note path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Team & operations

Vehicles

19 actions

List vehicles

GET

Lists business-owned vehicles, with optional active-state and text filtering; it does not calculate routes or contact a provider.

Action ID: vehicles.list Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

activeboolean

Filters by active/inactive state when supplied; omission includes both states.

qstring | null

maximum length: 100 · Case-insensitive bounded text search; omission performs no text filtering.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create a vehicle

POST

Creates one vehicle from the supplied fleet identity, classification, maintenance day and optional driver/details.

Action ID: vehicles.create Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a vehicle

GET

Returns one business-owned vehicle and its latest independently recorded mileage summary.

Action ID: vehicles.get Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

cURL

Addresses and code examples appear once API access is on for your business.

Update a vehicle

PATCH

Updates only supplied vehicle fields; omitted fields keep their stored values and the current ETag is required.

Action ID: vehicles.update Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List vehicle accidents

GET

Lists locally stored accident reports for one business-owned vehicle.

Action ID: vehicles.accidents.list Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get a vehicle accident

GET

Returns one accident report scoped through its owning vehicle.

Action ID: vehicles.accidents.get Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

accidentstringRequired

pattern: "^vehicle_accident_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_accident_...`) of the accident under the parent vehicle.

cURL

Addresses and code examples appear once API access is on for your business.

List vehicle reminders

GET

Lists maintenance alarms configured for one business-owned vehicle.

Action ID: vehicles.alarms.list Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create a vehicle reminder

POST

Creates a date-based, mileage-based or combined maintenance reminder without scheduling provider work.

Action ID: vehicles.alarms.create Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a vehicle reminder

GET

Returns one vehicle alarm scoped through its owning vehicle.

Action ID: vehicles.alarms.get Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

alarmstringRequired

pattern: "^vehicle_alarm_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_alarm_...`) of the alarm under the parent vehicle.

cURL

Addresses and code examples appear once API access is on for your business.

Update a vehicle reminder

PATCH

Updates supplied alarm triggers or note while preserving omitted values.

Action ID: vehicles.alarms.update Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

alarmstringRequired

pattern: "^vehicle_alarm_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_alarm_...`) of the alarm under the parent vehicle.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Complete a vehicle reminder

POST

Marks the current alarm occurrence complete using its current stored triggers; it does not invent a next service record.

Action ID: vehicles.alarms.complete Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

alarmstringRequired

pattern: "^vehicle_alarm_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_alarm_...`) of the alarm under the parent vehicle.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List vehicle expenses

GET

Lists locally stored expenses for one business-owned vehicle; no payment is initiated.

Action ID: vehicles.expenses.list Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get a vehicle expense

GET

Returns one vehicle expense scoped through its owning vehicle.

Action ID: vehicles.expenses.get Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

expensestringRequired

pattern: "^vehicle_expense_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_expense_...`) of the expense under the parent vehicle.

cURL

Addresses and code examples appear once API access is on for your business.

List vehicle maintenance records

GET

Lists stored maintenance records for one business-owned vehicle.

Action ID: vehicles.maintenance.list Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create a vehicle maintenance record

POST

Creates a dated maintenance record with whole-mile mileage and optional reportee/details.

Action ID: vehicles.maintenance.create Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a vehicle maintenance record

GET

Returns one maintenance record scoped through its owning vehicle.

Action ID: vehicles.maintenance.get Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

maintenancestringRequired

pattern: "^vehicle_maintenance_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_maintenance_...`) of the maintenance row under the parent vehicle.

cURL

Addresses and code examples appear once API access is on for your business.

Update a vehicle maintenance record

PATCH

Updates supplied maintenance fields without changing the owning vehicle.

Action ID: vehicles.maintenance.update Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

maintenancestringRequired

pattern: "^vehicle_maintenance_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_maintenance_...`) of the maintenance row under the parent vehicle.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

List a vehicle's odometer readings

GET

Lists immutable odometer readings for one business-owned vehicle in recorded-time order.

Action ID: vehicles.odometer.list Permission: vehicles.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Record a vehicle odometer reading

POST

Records one independent whole-mile odometer observation for the vehicle; it does not rewrite maintenance records.

Action ID: vehicles.odometer.create Permission: vehicles.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vehiclestringRequired

pattern: "^vehicle_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vehicle_...`) of the parent vehicle; nested IDs are valid only under this vehicle.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Team & operations

Vendors

4 actions

List vendors

GET

Returns a paginated list of suppliers owned by the current business, optionally narrowed by the documented search filters.

Action ID: vendors.list Permission: vendors.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

qstring

maximum length: 100 · Literal case-insensitive contains search over the documented business-facing fields; %, _, and = are treated as ordinary text.

pageinteger

default: 1; minimum: 1 · One-based page number for this stable ordered result set.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records returned per page, from 1 through 100.

cURL

Addresses and code examples appear once API access is on for your business.

Create a vendor

POST

Creates a supplier record owned by the current business and returns its assigned API ID.

Action ID: vendors.create Permission: vendors.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Get a vendor

GET

Returns one supplier only when it belongs to the current business and is visible to the caller.

Action ID: vendors.get Permission: vendors.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vendorstringRequired

pattern: "^vendor_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vendor_...`) of the vendor path resource.

cURL

Addresses and code examples appear once API access is on for your business.

Update a vendor

PATCH

Updates only the supplied mutable fields on a supplier owned by the current business; omitted fields retain their stored values.

Action ID: vendors.update Permission: vendors.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

vendorstringRequired

pattern: "^vendor_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`vendor_...`) of the vendor path resource.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Marketing & website

Marketing

8 actions

List stored marketing audiences

GET

Lists stored marketing audience definitions and last-calculated counts without recalculation.

Action ID: marketing.audiences Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get a stored marketing audience

GET

Returns one business-owned audience, validated conditions and last-calculated counts.

Action ID: marketing.audience Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

audiencestringRequired

pattern: "^audience_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`audience_...`) of the stored marketing audience.

cURL

Addresses and code examples appear once API access is on for your business.

List email delivery campaigns

GET

Lists stored delivery campaign definitions and their persisted delivery counters without sending or recalculating.

Action ID: marketing.campaigns Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get an email delivery campaign

GET

Returns one business-owned delivery campaign and its linked email/audience identities.

Action ID: marketing.campaign Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

campaignstringRequired

pattern: "^campaign_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`campaign_...`) of the delivery campaign.

cURL

Addresses and code examples appear once API access is on for your business.

List campaign email Canvas components

GET

Returns the existing campaign.marketing.v1 catalog for this business and performs no initialization.

Action ID: marketing.catalog Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

List campaign email metadata

GET

Lists owned nondeleted emails that have a Live Canvas composition without loading full block documents.

Action ID: marketing.emails Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get campaign email metadata

GET

Returns one business-owned campaign email and its stored composition version.

Action ID: marketing.email Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

emailstringRequired

pattern: "^marketing_email_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`marketing_email_...`) of the campaign email.

cURL

Addresses and code examples appear once API access is on for your business.

Get a campaign email canvas document

GET

Returns the current validated stored composition and optimistic lock version. Documents larger than 2 MiB are refused.

Action ID: marketing.document Permission: marketing.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

emailstringRequired

pattern: "^marketing_email_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`marketing_email_...`) of the campaign email.

cURL

Addresses and code examples appear once API access is on for your business.

Marketing & website

Automations

8 actions

Read the current automation builder catalog

GET

Returns the code-owned triggers, actions, recipients, condition fields and delay choices accepted by validation.

Action ID: automations.catalog Permission: automations.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

List safe automation run history

GET

Lists stored automation execution history; reading it never reruns an action.

Action ID: automations.history Permission: automations.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

viewstring

enum: "all", "attention", "scheduled" · Selects the stored automation-history view.

statusstring

enum: "completed", "partial", "failed", "scheduled", "overdue", "skipped", "canceled" · Code-owned lifecycle state filter; omission includes every allowed state.

action_typestring

enum: "email", "sms", "notification", "internal" · Filters history by channel: email, sms, notification (pushes only) or internal (every action that is neither an email nor a text).

sortstring

enum: "newest", "oldest" · Selects the documented deterministic history order.

querystring | null

maximum length: 100 · Bounded text filter over documented history fields.

automationstring | null

maximum length: 120; pattern: "^(?:automation_[0-9a-hjkmnp-tv-z]{26}|name-[a-z0-9-]*)$" · API ID (`automation_...`) of the business-owned automation, or the `name-…` key of a deleted automation. Any other value is refused with 422.

fromstring

format: "date" · Inclusive lower business-local date.

tostring

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

List visible automation rules

GET

Lists the same scoped automation definitions shown by the Automation Center without executing or replaying them.

Action ID: automations.list Permission: automations.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

activeboolean

Filters by active/inactive state when supplied; omission includes both states.

qstring | null

maximum length: 100 · Case-insensitive bounded text search; omission performs no text filtering.

trigger_eventstring

enum: "request.submitted", "request.approved", "quote.created", "quote.approved", "quote.rejected", "quote.changes_requested", "quote.expired", "invoice.created", "invoice.paid", "invoice.overdue", "invoice.disputed", "job.created", "job.started", "job.completed", "job.canceled", "visit.created", "visit.completed", "visit.canceled", "order.created", "order.completed", "order.canceled", "order.paid", "order.payment_declined", "order.confirmed", "payment.succeeded", "payment.failed", "payment.refunded", "customer.created", "customer.invitation_requested", "customer.inactive", "call.missed", "call.voicemail_received", "message.received", "storage.nearing_limit", "ai.reply_drafted", "ai.escalated" · Filters by the code-owned trigger event.

actionstring

enum: "send_sms", "send_email", "send_push", "create_follow_up", "create_task" · Filters by the code-owned automation action.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Create an automation draft

POST

Creates one automation definition; no historical trigger is replayed.

Action ID: automations.create Permission: automations.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Validate a complete automation definition without saving or delivering

POST

Validates an automation draft against the current catalog without saving or executing it.

Action ID: automations.validate Permission: automations.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Read an automation rule

GET

Returns one Automation Center-visible business-owned definition and its current enabled state.

Action ID: automations.get Permission: automations.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

automationstringRequired

pattern: "^automation_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`automation_...`) of the business-owned automation.

cURL

Addresses and code examples appear once API access is on for your business.

Update an automation

PATCH

Updates the supplied definition fields under the current ETag without executing the automation.

Action ID: automations.update Permission: automations.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

automationstringRequired

pattern: "^automation_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`automation_...`) of the business-owned automation.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Turn an automation on or off

PUT

Enables or disables one automation definition under the current ETag; it does not replay missed triggers.

Action ID: automations.enabled Permission: automations.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

automationstringRequired

pattern: "^automation_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`automation_...`) of the business-owned automation.

If-MatchstringRequired

minimum length: 1 · The opaque ETag from the latest record read. Missing: 428; stale: 412.

BizBaby sets it: the ETag from your latest read of this record.

Idempotency-Keystring

format: "uuid" · Optional for PUT, PATCH and DELETE. Supply a stable UUID to obtain the same safe receipt/replay behavior as POST. Reuse it only for identical input within the 24-hour retry window.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.

Marketing & website

Website

4 actions

List website component field definitions

GET

Returns active addable component schema metadata without mutation handlers or preset controls.

Action ID: website.catalog Permission: website.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

List editable website pages

GET

Returns active organisation V2 pages allowed by the current page plan. This read does not initialize page content or rebuild the site.

Action ID: website.pages Permission: website.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Get website page metadata

GET

Returns one business-owned V2 website page; template-owner and foreign pages are unavailable.

Action ID: website.page Permission: website.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pagestringRequired

pattern: "^website_page_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`website_page_...`) of the owned V2 website page.

cURL

Addresses and code examples appear once API access is on for your business.

Get structured website page content

GET

Returns body text and structured object fields. Executable markup, style, script, action, attribute and code settings are omitted.

Action ID: website.content Permission: website.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

pagestringRequired

pattern: "^website_page_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`website_page_...`) of the owned V2 website page.

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

Reports

4 actions

Read collected financial summary

GET

A business-local inclusive period, limited to 366 days. Required dependency scopes follow the included appointment/job scope.

Action ID: reports.financial-summary Permission: reports.read, payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

fromstringRequired

format: "date" · Inclusive lower business-local date.

tostringRequired

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

scopestring

enum: "appointments", "jobs", "both" · Selects appointment, job or combined revenue sources. Omitted: every source the caller may read (both when it may read all), with the rest named in excluded_sources; an explicit value is refused with scope_denied when its scopes are missing.

cURL

Addresses and code examples appear once API access is on for your business.

Read itemized work-date report

GET

Returns paged appointment, recurring-payment and job revenue rows while calculating totals over the full filtered result.

Action ID: reports.itemized Permission: reports.read, appointments.read, work.read, invoices.read, payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

fromstringRequired

format: "date" · Inclusive lower business-local date.

tostringRequired

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read collected sales buckets

GET

Returns canonical collected revenue totals grouped into business-calendar buckets.

Action ID: reports.sales Permission: reports.read, payments.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

fromstringRequired

format: "date" · Inclusive lower business-local date.

tostringRequired

format: "date" · Inclusive upper business date, or documented exclusive instant where stated.

scopestring

enum: "appointments", "jobs", "both" · Selects appointment, job or combined revenue sources. Omitted: every source the caller may read (both when it may read all), with the rest named in excluded_sources; an explicit value is refused with scope_denied when its scopes are missing.

group_bystringRequired

enum: "day", "month", "year" · Calendar unit used for returned revenue buckets.

cURL

Addresses and code examples appear once API access is on for your business.

Read stored territory performance

GET

Uses stored ZIP centroids, service zones and collected revenue; it performs no provider geocoding or refresh.

Action ID: reports.territory Permission: reports.read, customers.read, appointments.read, work.read, invoices.read, payments.read, service-areas.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

daysinteger

default: 90; enum: 30, 90, 365 · Fixed lookback window in business calendar days.

cURL

Addresses and code examples appear once API access is on for your business.

Search authorized business records

GET

Searches authorized business records by exact name, partial name, or a bounded similar spelling. Similar results are candidates only and are never reported as exact. Each requested type requires its own product read scope; excluded_types names requested sources omitted for lack of scope.

Action ID: search.list Permission: search.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

qstringRequired

minimum length: 1; maximum length: 80 · Required literal case-insensitive search text, trimmed before execution. %, _, and = are ordinary characters and never wildcards.

typesarray

minimum items: 1; items must be unique · Requested public search record families; omission requests every supported family and inaccessible families are excluded.

limitinteger

default: 4; minimum: 1; maximum: 5 · Maximum results returned per requested search family. Results are ranked exact, prefix, contains, then normalized title and ID.

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

Business alerts

2 actions

List business alerts requiring attention

GET

Lists persisted business alerts requiring attention for the acting user’s current inbox audiences; it does not dismiss or mark alerts read.

Action ID: attention.list Permission: attention.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

statestring

enum: "open", "resolved", "dismissed", "all" · Code-owned lifecycle state filter; omission includes every allowed state.

typeAttentionType

Code-owned business-alert type filter; omission includes all types visible to the actor.

qstring

maximum length: 100 · Case-insensitive bounded text search; omission performs no text filtering.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Count business alerts requiring attention

GET

Counts persisted business alerts requiring attention by lifecycle state using the same audience and text/type filters as the list.

Action ID: attention.counts Permission: attention.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

typeAttentionType

Code-owned business-alert type filter; omission includes all types visible to the actor.

qstring

maximum length: 100 · Case-insensitive bounded text search; omission performs no text filtering.

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

References

1 action

Resolve record references to owner-facing names

POST

Resolves up to 100 typed record API IDs in one bounded query. Results stay scoped to the connected business and the token's product read permissions. Missing, foreign, inactive, and unauthorized references all return resolved=false so the response does not disclose cross-business existence.

Action ID: references.resolve Permission: search.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

QuickBooks

6 actions

Read stored QuickBooks connection status

GET

Returns the current business's locally stored QuickBooks connection and synchronization status without contacting QuickBooks.

Action ID: quickbooks.status Permission: quickbooks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

List stored QuickBooks issues

GET

Lists locally stored QuickBooks integrity issues for the current business and requested coverage lane; it does not repair them.

Action ID: quickbooks.issues.list Permission: quickbooks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

statestring

enum: "open", "resolved" · Code-owned lifecycle state filter; omission includes every allowed state.

openboolean

Boolean shortcut for open versus resolved QuickBooks issues.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read one stored QuickBooks issue

GET

Returns one locally stored business-owned QuickBooks integrity issue with its safe explanation and repair state.

Action ID: quickbooks.issues.get Permission: quickbooks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

issuestringRequired

pattern: "^quickbooks_issue_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`quickbooks_issue_...`) of the local QuickBooks issue pointer.

cURL

Addresses and code examples appear once API access is on for your business.

List local QuickBooks projections

GET

Lists allowed local QuickBooks projections for the requested object type; it performs no provider read, export, or repair.

Action ID: quickbooks.objects.list Permission: quickbooks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

statestring

enum: "success", "failed", "unknown", "missing" · Code-owned lifecycle state filter; omission includes every allowed state.

kindstring

enum: "customer", "invoice", "payment", "refund", "stripe_money", "payout_transfer" · Code-owned record/table discriminator; combine it with the bill ID.

currentboolean

default: true · When true, excludes archived QuickBooks projections; omission follows the documented true default.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read one local QuickBooks projection

GET

Returns one allowed business-owned local QuickBooks projection by type and API ID without contacting QuickBooks.

Action ID: quickbooks.objects.get Permission: quickbooks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

objectstringRequired

pattern: "^quickbooks_object_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`quickbooks_object_...`) of the local QuickBooks projection row.

cURL

Addresses and code examples appear once API access is on for your business.

Read local QuickBooks run progress

GET

Returns progress already stored for one local QuickBooks run; reading it neither clears claims nor starts or resumes work.

Action ID: quickbooks.runs.get Permission: quickbooks.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

run_idstringRequired

pattern: "^quickbooks_run_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`quickbooks_run_...`) of the QuickBooks sync run.

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

Account

7 actions

List stored platform bills

GET

Lists stored business bills for the requested year without charging or retrying payment.

Action ID: account.bills Permission: account.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

yearinteger

minimum: 2000 · Four-digit calendar year used to filter stored bills.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read one stored platform bill by kind

GET

Returns one type-qualified stored bill by its API ID.

Action ID: account.bill Permission: account.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

kindstringRequired

enum: "usage", "monthly", "extra-charge", "refund" · Code-owned record/table discriminator; combine it with the bill ID.

billstringRequired

pattern: "^bill_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`bill_...`) within the selected bill kind.

cURL

Addresses and code examples appear once API access is on for your business.

Read the current platform plan

GET

Returns the business’s stored active plan snapshot and feature names without billing mutation.

Action ID: account.plan Permission: account.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Read stored monthly usage reports

GET

Returns stored usage totals for the requested calendar month without provider refresh.

Action ID: account.usage Permission: account.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

monthstring

pattern: "^[0-9]{4}-(0[1-9]|1[0-2])$" · Calendar month in YYYY-MM format; omission uses the operation’s documented current month behavior.

cURL

Addresses and code examples appear once API access is on for your business.

Read the safe business profile

GET

Returns the current business profile fields exposed to the API; no account setting is changed.

Action ID: account.profile Permission: account.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Read permitted implemented operations

GET

Returns operation availability computed from current business role, plan and platform action availability.

Action ID: account.capabilities Permission: account.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

cURL

Addresses and code examples appear once API access is on for your business.

Read stored storage usage

GET

Returns stored file-usage totals for the requested month without scanning or deleting files.

Action ID: account.storage Permission: account.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

monthstring

pattern: "^[0-9]{4}-(0[1-9]|1[0-2])$" · Calendar month in YYYY-MM format; omission uses the operation’s documented current month behavior.

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

Authentication

1 action

Read the current credential connection

GET

Returns non-secret metadata for the bearer credential currently authenticating the request, including its live effective scopes and policy revision.

Action ID: auth.session Permission: Any connected key

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

API activity history

2 actions

List administrator API request activity

GET

Lists up to a 90-day UTC window of redacted audit events for the business. Owner/admin Wingman access may read this history when Account and storage access is enabled; secrets and request bodies remain excluded.

Action ID: audit.list Permission: audit.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

fromstring

format: "date" · UTC start date. Defaults to 89 days before to.

tostring

format: "date" · UTC inclusive end date. The range may span at most 90 days.

productstring

maximum length: 80 · Code-owned product key used to filter administrator API activity.

operationstring

maximum length: 80 · Exact API operation ID used to filter administrator activity.

outcomestring

enum: "success", "denied", "validation_error", "conflict", "rate_limited", "server_error", "indeterminate" · Code-owned audit outcome filter.

user_idstring

pattern: "^user_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`user_...`) of the acting business user.

grant_idstring

format: "uuid" · Non-secret UUID of an API grant.

request_idstring

format: "uuid" · Server-issued request UUID used for end-to-end audit correlation.

pageinteger

default: 1; minimum: 1 · One-based page number within the currently filtered result set. Keep the same filters when following subsequent pages.

per_pageinteger

default: 25; minimum: 1; maximum: 100 · Maximum records to return on this page. This limits page size, not the full filtered total.

cURL

Addresses and code examples appear once API access is on for your business.

Read administrator API request activity

GET

Returns one redacted business-owned audit event. Wingman credentials cannot read this history.

Action ID: audit.get Permission: audit.read

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

audit_eventstringRequired

pattern: "^audit_event_[0-9a-hjkmnp-tv-z]{26}$" · API ID (`audit_event_...`) of the redacted API audit event.

cURL

Addresses and code examples appear once API access is on for your business.

Reports, search & account

Support Tickets

1 action

Submit a BizBaby platform support ticket

POST

Creates a ticket for BizBaby platform support after Wingman has presented the exact ticket for owner confirmation. This is not a customer ticket. Page, device, skin, viewport, and observed error context may be included; the full conversation is never attached. Private Wingman image IDs may be copied to the ticket when they belong to the same owner, business, and conversation history.

Action ID: support-tickets.create Permission: support-tickets.write

Parameters

business_idstringRequired

pattern: "^business_[0-9a-hjkmnp-tv-z]{26}$" · The business's API ID (`business_...`). The server rejects a different business; this path parameter cannot switch tenants. Trusted clients obtain it from their connection rather than asking the owner.

Idempotency-KeystringRequired

format: "uuid" · A stable UUID for the same logical request. Reusing it with different input returns 409. Mutation retry window: 24 hours; receipts retained for 30 days.

Your software makes it: a new UUID for each change.

cURL

Addresses and code examples appear once API access is on for your business.