---
title: Doing Work: a complete field service platform your AI agent runs
description: Everything in Doing Work today: requests, scheduling and visits, quotes, invoices and payments, field work, customer hub, costs and reports, imports and exports. Every feature for every shop.
url: https://doingwork.work/platform/
---

# Everything a home service shop runs on, built for agents

Doing Work is a complete field service platform. Your AI agent runs it; you make the calls. Every shop gets every feature, with unlimited workers, jobs, customers, quotes and invoices.

## Available now

What's built today, with every operation an agent can call. Each links to its reference page.

### Sign-in and agent access

- [Email a one-time sign-in link](https://doingwork.work/docs/reference/auth-requestlink/) (agent)
- [Exchange a sign-in link token for a browser session](https://doingwork.work/docs/reference/auth-redeemlink/) (hosted page)
- [Register an OAuth client (RFC 7591 dynamic registration)](https://doingwork.work/docs/reference/auth-oauthregister/) (agent)
- [A signed-in person approves an agent client](https://doingwork.work/docs/reference/auth-oauthauthorize/) (agent)
- [Exchange an authorization code and PKCE verifier, or a refresh token, for a short-lived agent access token and a new refresh token](https://doingwork.work/docs/reference/auth-oauthtoken/) (agent)
- [The signed-in person](https://doingwork.work/docs/reference/me-get/) (agent)
- [Make a named agent key for one shop (owner only)](https://doingwork.work/docs/reference/keys-create/) (person only)
- [List a shop's named agent keys (owner only): label, scopes, audience, when made, last used and revoked](https://doingwork.work/docs/reference/keys-list/) (agent)
- [Revoke a named agent key (owner only)](https://doingwork.work/docs/reference/keys-revoke/) (agent)
- [auth.md agent registration](https://doingwork.work/docs/reference/agents-register/) (agent)
- [auth.md claim](https://doingwork.work/docs/reference/agents-claim/) (agent)
- [Hosted claim page only: the shop owner whose email the claim names types the agent's 6 digit code, picks one of their shops and accepts the agent key terms](https://doingwork.work/docs/reference/agents-approve/) (hosted page)
- [Hosted claim page only: the person turns the agent down](https://doingwork.work/docs/reference/agents-deny/) (hosted page)
- [The legal documents Doing Work asks people to accept, with the current version and a link to the text](https://doingwork.work/docs/reference/legal-documents/) (agent)
- [What the signed-in person has accepted: for each document that is accepted here, the current version, the versions accepted and when, and whether the current version still needs accepting](https://doingwork.work/docs/reference/legal-status/) (agent)
- [Record that the signed-in person accepts the current version of a legal document (clickwrap)](https://doingwork.work/docs/reference/legal-accept/) (person only)

### Shop

- [Create a shop](https://doingwork.work/docs/reference/shops-create/) (agent)
- [Withdraw a draft or sent quote the customer has not signed, with an optional reason](https://doingwork.work/docs/reference/quotes-withdraw/) (agent)
- [Doing Work's fee schedule: one stepped rate on each shop's calendar month of card and bank payments, taken out of the payments](https://doingwork.work/docs/reference/fees-schedule/) (agent)
- [What Doing Work would take on a payment of this size right now, the effective rate on it, the month's volume so far (all locations under the same owner), and how far the shop is from the next, cheaper band (owner or office)](https://doingwork.work/docs/reference/fees-preview/) (agent)
- [Read a shop's audit log, newest first (owner only)](https://doingwork.work/docs/reference/audit-list/) (agent)
- [One customer with contacts, properties, custom fields and open balance](https://doingwork.work/docs/reference/customers-get/) (agent)
- [Customers of a shop, newest first, filtered by tag, lead source or archived](https://doingwork.work/docs/reference/customers-list/) (agent)
- [Find customers by name, company, email, phone or property address](https://doingwork.work/docs/reference/customers-search/) (agent)
- [Change a customer's name, kind, company, email, phone, billing address, lead source, tags or notes](https://doingwork.work/docs/reference/customers-update/) (agent)
- [Archive a customer (hidden from lists, history kept) or bring one back](https://doingwork.work/docs/reference/customers-archive/) (agent)
- [Likely duplicate customers in a shop: same email, same phone digits, or same name](https://doingwork.work/docs/reference/customers-duplicates/) (agent)
- [Merge a duplicate customer into another: jobs, requests, contacts, properties and fields move over](https://doingwork.work/docs/reference/customers-merge/) (agent)
- [Add a contact person to a customer (tenant, manager, billing, spouse)](https://doingwork.work/docs/reference/customers-contactadd/) (agent)
- [Change or remove one contact of a customer](https://doingwork.work/docs/reference/customers-contactupdate/) (agent)
- [Set the tags and lead source on a job](https://doingwork.work/docs/reference/jobs-settags/) (agent)
- [Everything that happened with a customer, newest first: requests, jobs, quotes, signatures, invoices and payments](https://doingwork.work/docs/reference/customers-timeline/) (agent)
- [A customer's account statement: every invoice with total, paid and balance, and the total owed](https://doingwork.work/docs/reference/customers-statement/) (agent)
- [Everything the shop holds about one customer, as one JSON document, for a privacy request](https://doingwork.work/docs/reference/customers-privacyexport/) (agent)
- [Erase a customer's personal details for a privacy request](https://doingwork.work/docs/reference/customers-privacydelete/) (person only)
- [Turn the automatic unpaid-invoice reminder on or off for the whole shop (owner only)](https://doingwork.work/docs/reference/shops-setinvoicereminders/) (agent)
- [Set the phone and email customers see when they open a canceled invoice or quote link (owner only)](https://doingwork.work/docs/reference/shops-setcontact/) (agent)
- [Let field workers in the shop see job costs (labor cost, material cost, expenses others entered, price book cost), or hide them again (owner only)](https://doingwork.work/docs/reference/shops-setfieldcosts/) (agent)
- [Turn the customer hub link in quote and invoice emails on or off for the whole shop (owner only)](https://doingwork.work/docs/reference/shops-sethublinkinemails/) (agent)
- [Turn the automatic unpaid reminder on or off for one invoice (owner or office)](https://doingwork.work/docs/reference/invoices-setreminder/) (agent)
- [Customer declines a quote or asks for changes (hosted page)](https://doingwork.work/docs/reference/quotes-respond/) (hosted page)
- [What the customer has done with a quote: when each version was first opened and how often, and any decline or change request with its note](https://doingwork.work/docs/reference/quotes-activity/) (agent)
- [Set how many days after a quote is sent the customer gets one friendly follow-up email if they have not answered (owner only)](https://doingwork.work/docs/reference/shops-setquotefollowup/) (agent)
- [Create an invoice without a quote, from lines the worker wrote (never filled in by AI)](https://doingwork.work/docs/reference/invoices-create/) (agent)
- [Create many invoices at once (up to 100), each from a job and the lines the worker wrote](https://doingwork.work/docs/reference/invoices-createbatch/) (agent)
- [One invoice with its lines, what has been paid, the balance, the due date, and whether a bank payment is still clearing](https://doingwork.work/docs/reference/invoices-get/) (agent)
- [The invoice as a PDF (base64), with shop, customer, lines, paid so far and balance](https://doingwork.work/docs/reference/invoices-pdf/) (agent)
- [Accounts receivable aging: every open invoice's balance by how late it is (current, 1-30, 31-60, 61-90, over 90 days past due), with totals per customer (owner or office)](https://doingwork.work/docs/reference/invoices-aging/) (agent)
- [Turn tips on or off on this shop's invoice pay page (owner only)](https://doingwork.work/docs/reference/shops-settips/) (agent)
- [Set the review link (for example your Google review page, https only) and how many days after an invoice is paid the customer gets one email asking for a review (owner only)](https://doingwork.work/docs/reference/shops-setreviewrequest/) (agent)
- [Turn auto-pay on or off for a customer (owner or office)](https://doingwork.work/docs/reference/customers-setautopay/) (agent)
- [Choose how the sales tax report counts a period (owner only)](https://doingwork.work/docs/reference/shops-settaxreportbasis/) (agent)
- [Show an uploaded photo or file of the same job with a quote, with an optional caption](https://doingwork.work/docs/reference/quotes-addattachment/) (agent)
- [Take a photo or file off a quote](https://doingwork.work/docs/reference/quotes-removeattachment/) (agent)
- [Photos and files shown with a quote, in order](https://doingwork.work/docs/reference/quotes-listattachments/) (agent)
- [Add or remove tags on a photo (for example: leak, panel, permit)](https://doingwork.work/docs/reference/media-tag/) (agent)
- [Find photos across the shop that carry all the given tags](https://doingwork.work/docs/reference/media-search/) (agent)
- [Jobs in the shop that carry all the given tags (set with jobs.setTags), newest first, up to 200](https://doingwork.work/docs/reference/jobs-findbytag/) (agent)
- [Save markup over a photo as a new layer version: arrows, lines, boxes, circles, text and freehand strokes in 0..1 photo coordinates (0,0 is top left)](https://doingwork.work/docs/reference/media-savemarkup/) (agent)
- [A photo's markup: the latest version unless one is named, with an SVG overlay to lay over the original photo](https://doingwork.work/docs/reference/media-getmarkup/) (agent)
- [List deliveries to one webhook endpoint, newest first, with event, status, attempts and last HTTP status](https://doingwork.work/docs/reference/webhooks-deliveries/) (agent)
- [Send a failed or dead delivery again from attempt 0 (owner or office)](https://doingwork.work/docs/reference/webhooks-retry/) (agent)
- [Owner only: everything the shop holds as one ZIP: data/<table>.csv and data/<table>.json for every shop table, files/ with job photos and PDFs, and manifest.json](https://doingwork.work/docs/reference/shops-export/) (agent)
- [What each current worker in a shop may do beyond their role: see_prices, see_costs, take_money, delete and manage_schedule](https://doingwork.work/docs/reference/members-permissions/) (agent)
- [Owner only, not an agent: turn a worker's permissions on or off](https://doingwork.work/docs/reference/members-setpermissions/) (person only)
- [Mark a job done (owner or office)](https://doingwork.work/docs/reference/jobs-complete/) (agent)
- [Pick a customer audience by filters (tags, last job dates, kind of work, open quotes, money owed, maintenance plans, city or postal code, has email or phone) and get the counts and a page of matching customers](https://doingwork.work/docs/reference/customers-audience/) (agent)
- [Start handing the shop to a current worker (owner, on a hosted page)](https://doingwork.work/docs/reference/shops-transferstart/) (hosted page)
- [Accept a hand-off and become the shop's owner (the person asked, on a hosted page)](https://doingwork.work/docs/reference/shops-transferaccept/) (hosted page)
- [Stop an open hand-off: the owner cancels it, or the person asked declines it](https://doingwork.work/docs/reference/shops-transfercancel/) (agent)
- [Hand-offs of a shop, newest first](https://doingwork.work/docs/reference/shops-transfers/) (agent)
- [Whether the shop can close now (owner only)](https://doingwork.work/docs/reference/shops-closecheck/) (agent)
- [Close the shop for good (owner, on a hosted page, typing the shop name)](https://doingwork.work/docs/reference/shops-close/) (hosted page)
- [Reopen a closed shop (only the owner who closed it, on a hosted page, within 90 days of closing)](https://doingwork.work/docs/reference/shops-reopen/) (hosted page)
- [Void an invoice nobody has paid yet (owner or office), with a reason](https://doingwork.work/docs/reference/invoices-void/) (agent)

### Team (unlimited workers)

- [Invite a person by email as office or field](https://doingwork.work/docs/reference/members-invite/) (agent)
- [Accept an invite as the signed-in person](https://doingwork.work/docs/reference/members-accept/) (agent)
- [Current members of a shop with role and start date](https://doingwork.work/docs/reference/members-list/) (agent)
- [End a membership: the owner removes a worker, or a worker leaves](https://doingwork.work/docs/reference/members-end/) (agent)
- [Owner changes a worker between office and field](https://doingwork.work/docs/reference/members-changerole/) (agent)
- [Owner only, not an agent: require owner approval before an agent can run an action](https://doingwork.work/docs/reference/approvals-setrule/) (person only)
- [Owner only, not an agent: stop requiring approval for a rule](https://doingwork.work/docs/reference/approvals-removerule/) (person only)
- [The shop's approval rules: which agent actions wait for the owner](https://doingwork.work/docs/reference/approvals-listrules/) (agent)
- [Approval requests for a shop, newest first, optionally by status (pending, approved, denied, failed, expired)](https://doingwork.work/docs/reference/approvals-list/) (agent)
- [One approval request with its status and, once approved and run, the action's result](https://doingwork.work/docs/reference/approvals-get/) (agent)
- [Owner only, not an agent: approve or deny a pending agent action](https://doingwork.work/docs/reference/approvals-decide/) (person only)

### Customers

- [Add a customer to a shop, with kind, company, email, phone, billing address, lead source, tags and notes in one call](https://doingwork.work/docs/reference/customers-create/) (agent)
- [Add a service address to a customer, with optional label and access notes](https://doingwork.work/docs/reference/properties-add/) (agent)
- [Service addresses of a customer, or every property of a shop](https://doingwork.work/docs/reference/properties-list/) (agent)
- [Change a property's label or access notes, or archive it](https://doingwork.work/docs/reference/properties-update/) (agent)
- [Record equipment at a property: kind, make, model, serial, install date and warranty](https://doingwork.work/docs/reference/equipment-add/) (agent)
- [Equipment at a property, or warranties ending soon across a shop](https://doingwork.work/docs/reference/equipment-list/) (agent)
- [Change or archive an equipment record](https://doingwork.work/docs/reference/equipment-update/) (agent)

### Jobs (unlimited)

- [Start a job at a home (the home is found or created from the address)](https://doingwork.work/docs/reference/jobs-create/) (agent)
- [Jobs of a shop, newest first](https://doingwork.work/docs/reference/jobs-list/) (agent)
- [One job with its home address](https://doingwork.work/docs/reference/jobs-get/) (agent)

### Job photos

- [Get a signed upload URL for a job photo](https://doingwork.work/docs/reference/media-requestupload/) (agent)
- [Hosted photo capture: a signed upload URL for a worker taking a photo in the browser](https://doingwork.work/docs/reference/media-requestcapture/) (hosted page)
- [List the photos on a job that you are allowed to see](https://doingwork.work/docs/reference/media-list/) (agent)
- [One photo's details](https://doingwork.work/docs/reference/media-get/) (agent)
- [Make a link to a gallery of a job's photos that anyone with the link can open without signing in](https://doingwork.work/docs/reference/shares-create/) (agent)
- [Photo share links on a job, newest first, with whether each is still active and how often it was opened](https://doingwork.work/docs/reference/shares-list/) (agent)
- [Turn a photo share link off now](https://doingwork.work/docs/reference/shares-revoke/) (agent)

### Quotes (unlimited)

- [Create a quote from lines the worker wrote](https://doingwork.work/docs/reference/quotes-create/) (agent)
- [Lock the quote and get a single-use signing link for the customer](https://doingwork.work/docs/reference/quotes-send/) (agent)
- [Sign a quote after accepting electronic signing](https://doingwork.work/docs/reference/quotes-sign/) (hosted page)
- [Replace an unsigned quote with a new version](https://doingwork.work/docs/reference/quotes-revise/) (agent)
- [Add a price book item, or change one when item_id is given (owner or office)](https://doingwork.work/docs/reference/pricebook-saveitem/) (agent)
- [List the shop's price book items, by name](https://doingwork.work/docs/reference/pricebook-list/) (agent)
- [Archive a price book item, or bring it back with archived false (owner or office)](https://doingwork.work/docs/reference/pricebook-archiveitem/) (agent)

### Invoices and payments (unlimited)

- [Create an invoice for a signed quote, for the total of the option and optional lines the customer picked](https://doingwork.work/docs/reference/invoices-createfromquote/) (agent)
- [Send an invoice (or the next part of it) and get a single-use pay link](https://doingwork.work/docs/reference/invoices-send/) (agent)
- [Start paying an invoice (hosted page)](https://doingwork.work/docs/reference/invoices-pay/) (hosted page)
- [Record that the customer paid an invoice outside Doing Work (check, cash, financing, insurance or other)](https://doingwork.work/docs/reference/invoices-markpaidoutside/) (person only)
- [Refund part or all of a payment (owner or office)](https://doingwork.work/docs/reference/invoices-refund/) (person only)
- [Add or change a sales tax rate the shop charges in one jurisdiction (owner or office)](https://doingwork.work/docs/reference/taxes-saverate/) (agent)
- [The shop's tax rates](https://doingwork.work/docs/reference/taxes-listrates/) (agent)
- [Stop using a tax rate (owner or office)](https://doingwork.work/docs/reference/taxes-archiverate/) (agent)
- [Sales tax report for a period (owner or office), shop local dates, from and to inclusive](https://doingwork.work/docs/reference/taxes-salesreport/) (agent)

### Stripe connection

- [Start payment setup for a shop (owner, hosted page)](https://doingwork.work/docs/reference/payments-connectstart/) (hosted page)
- [Get a secure page where the customer saves a card with the shop's payment processor (owner or office)](https://doingwork.work/docs/reference/cards-setuplink/) (agent)
- [Open the card saving page from a save-your-card-again email link (hosted page only)](https://doingwork.work/docs/reference/cards-resave/) (hosted page)
- [The card a customer has on file (brand, last 4, expiry) and whether auto-pay is on (owner or office)](https://doingwork.work/docs/reference/cards-get/) (agent)
- [Remove a customer's saved card (owner or office)](https://doingwork.work/docs/reference/cards-remove/) (agent)

### Idaho compliance

- [The Idaho 45-525(3) subcontractor and supplier statement for a job: the latest signed one, any prepared draft, and whether final payment needs one](https://doingwork.work/docs/reference/subcontractors-get/) (agent)
- [Prepare the Idaho 45-525(3) statement for the shop to sign: a list of subcontractors, materialmen and rental equipment providers over $500, or none_attestation "yes" for "No subcontractors or suppliers over $500 on this job"](https://doingwork.work/docs/reference/subcontractors-prepare/) (agent)
- [The shop owner or office signs the Idaho 45-525(3) statement on a hosted page: a list (entries JSON), the "No subcontractors or suppliers over $500 on this job" attestation (none_attestation "yes"), or with neither, the prepared draft](https://doingwork.work/docs/reference/subcontractors-sign/) (hosted page)

### Signed job records

- [Get a single-use link the customer opens to confirm the work was done (or flag a problem)](https://doingwork.work/docs/reference/jobs-requestconfirmation/) (agent)
- [Customer confirms the work or flags a problem (hosted page)](https://doingwork.work/docs/reference/jobs-confirm/) (hosted page)
- [Public keys that verify signed job records](https://doingwork.work/docs/reference/records-keys/) (agent)
- [The latest signed record for a job and its level (logged, paid, verified)](https://doingwork.work/docs/reference/jobs-record/) (agent)
- [Render a photo report PDF for a job: a title and the worker's own notes, then the job's photos in time order with stage and tags](https://doingwork.work/docs/reference/documents-photoreport/) (agent)
- [Render the daily log for a job as a PDF: each day's entries in the workers' own words with who wrote them, and the photos they attached](https://doingwork.work/docs/reference/documents-dailylog/) (agent)
- [PDF documents core made for a job (photo reports, daily logs and submitted forms), newest first, with each file's sha256](https://doingwork.work/docs/reference/documents-list/) (agent)
- [One stored job PDF (base64) with its sha256, byte for byte as it was made](https://doingwork.work/docs/reference/documents-get/) (agent)

### Plans and fees

- [A month's Doing Work fees for a shop: card and bank volume, fees by kind, the effective rate, each line, and how far the shop is from the next band this month (owner or office)](https://doingwork.work/docs/reference/fees-statement/) (agent)

### Developers and platforms

- [Add a webhook endpoint for a shop (owner or office)](https://doingwork.work/docs/reference/webhooks-create/) (person only)
- [List a shop's webhook endpoints and their recent delivery counts](https://doingwork.work/docs/reference/webhooks-list/) (agent)
- [Remove a webhook endpoint](https://doingwork.work/docs/reference/webhooks-delete/) (agent)
- [Create a developer platform account (private beta)](https://doingwork.work/docs/reference/platforms-create/) (agent)
- [List the platform accounts you own and the shops each one manages](https://doingwork.work/docs/reference/platforms-list/) (agent)
- [Let a platform manage this shop](https://doingwork.work/docs/reference/platforms-grantmanage/) (hosted page)
- [Stop a platform from managing this shop](https://doingwork.work/docs/reference/platforms-revokemanage/) (agent)
- [Every event a webhook can receive, with its payload keys and types](https://doingwork.work/docs/reference/events-catalog/) (agent)

### Scheduling and visits

- [Book a repeating visit (daily, weekly or monthly, every n) for a job](https://doingwork.work/docs/reference/visits-createrecurring/) (agent)
- [Cancel the visits of a repeating series that have not started yet, from a time onward (default now)](https://doingwork.work/docs/reference/visits-cancelseries/) (agent)
- [Mark a visit started (from scheduled, on the way, or arrived)](https://doingwork.work/docs/reference/visits-start/) (agent)
- [Mark a visit done, with an optional note](https://doingwork.work/docs/reference/visits-done/) (agent)
- [Book a visit to a job at a time, optionally with the workers going](https://doingwork.work/docs/reference/visits-create/) (agent)
- [Move a visit or change its title, notes or arrival window](https://doingwork.work/docs/reference/visits-update/) (agent)
- [Set who is going on a visit](https://doingwork.work/docs/reference/visits-assign/) (agent)
- [Cancel a visit that is scheduled, on the way, or arrived](https://doingwork.work/docs/reference/visits-cancel/) (agent)
- [One visit with its job and workers](https://doingwork.work/docs/reference/visits-get/) (agent)
- [A shop's visits that overlap a time window, earliest first](https://doingwork.work/docs/reference/schedule-list/) (agent)
- [Set a worker's weekly hours, replacing what was there](https://doingwork.work/docs/reference/availability-sethours/) (agent)
- [Add time off for a worker (vacation, sick, appointment)](https://doingwork.work/docs/reference/availability-addtimeoff/) (agent)
- [Remove a time-off entry](https://doingwork.work/docs/reference/availability-removetimeoff/) (agent)
- [A worker's weekly hours, time off, and booked visits in a window (at most 62 days)](https://doingwork.work/docs/reference/availability-get/) (agent)
- [The shop's scheduling setup: time zone, booking hours (or the default when none are set), arrival window, travel buffer, reminder lead time, and whether on-my-way notices go out](https://doingwork.work/docs/reference/schedule-settings/) (agent)
- [Set the shop's booking hours, replacing what was there (owner or office)](https://doingwork.work/docs/reference/schedule-setshophours/) (agent)
- [Change the shop's scheduling rules (owner or office; the time zone is owner only)](https://doingwork.work/docs/reference/schedule-setrules/) (agent)
- [Find open times for a visit of a given length](https://doingwork.work/docs/reference/schedule-findtime/) (agent)
- [Mark that the worker is on the way to a visit, with an optional ETA (eta_at, or eta_minutes from now)](https://doingwork.work/docs/reference/visits-ontheway/) (agent)
- [Mark that the worker arrived at a visit](https://doingwork.work/docs/reference/visits-arrived/) (agent)
- [Customer notices planned or handled for a visit (appointment reminder, on my way), with status pending, queued (handed to email), cancelled or skipped and why](https://doingwork.work/docs/reference/visits-notices/) (agent)
- [Start a maintenance plan for a job's customer (owner or office)](https://doingwork.work/docs/reference/maintenance-createplan/) (agent)
- [One maintenance plan: price per term, current term, renewal date, and each term's invoice](https://doingwork.work/docs/reference/maintenance-getplan/) (agent)
- [A shop's maintenance plans, optionally for one customer or by status, soonest renewal first](https://doingwork.work/docs/reference/maintenance-listplans/) (agent)
- [Replace a plan's priced lines (owner or office; you write them, never AI), and optionally its tax rate](https://doingwork.work/docs/reference/maintenance-setprice/) (agent)
- [Cancel a maintenance plan (owner or office)](https://doingwork.work/docs/reference/maintenance-cancelplan/) (agent)
- [Customers' requests to move or cancel a visit, from the customer hub, newest first](https://doingwork.work/docs/reference/visits-changerequests/) (agent)
- [Answer a customer's request to move or cancel a visit](https://doingwork.work/docs/reference/visits-answerchange/) (agent)

### Field work (checklists, forms, time, notes, change orders, subcontractors)

- [Write a daily log entry on a job: what happened on site that day, in the worker's own words](https://doingwork.work/docs/reference/logs-add/) (agent)
- [Daily log entries on a job, oldest first, optionally between two dates (inclusive)](https://doingwork.work/docs/reference/logs-list/) (agent)
- [Take a daily log entry out of the log](https://doingwork.work/docs/reference/logs-remove/) (agent)
- [Ask someone to sign a document on a hosted page, and get the signing link to give them](https://doingwork.work/docs/reference/signatures-request/) (agent)
- [A new signing link for an open signature request](https://doingwork.work/docs/reference/signatures-newlink/) (agent)
- [Cancel an open signature request](https://doingwork.work/docs/reference/signatures-cancel/) (agent)
- [One signature request: the document text (or stored PDF id) and its sha256, and the signature when signed (who, typed name, consent text and its sha256, surface, time)](https://doingwork.work/docs/reference/signatures-get/) (agent)
- [Signature requests for a job, a customer or a whole shop, newest first, with status and who signed](https://doingwork.work/docs/reference/signatures-list/) (agent)
- [Sign a document after reading it, typing your name and agreeing to sign electronically](https://doingwork.work/docs/reference/signatures-sign/) (hosted page)
- [Create a checklist template, or replace one (give checklist_template_id)](https://doingwork.work/docs/reference/checklists-savetemplate/) (agent)
- [The shop's checklist templates with their items](https://doingwork.work/docs/reference/checklists-listtemplates/) (agent)
- [Archive a checklist template so it is no longer offered](https://doingwork.work/docs/reference/checklists-archivetemplate/) (agent)
- [Put a checklist on a job, or on one visit of the job (visit_id)](https://doingwork.work/docs/reference/checklists-create/) (agent)
- [Checklists on a job (all of them, job-level and per visit) or on one visit, with counts of open required items and sign-off state](https://doingwork.work/docs/reference/checklists-list/) (agent)
- [One checklist with every item (removed items included and marked), who ticked what and when, and its sign-off](https://doingwork.work/docs/reference/checklists-get/) (agent)
- [Tick (done true) or untick an item, with an optional note](https://doingwork.work/docs/reference/checklists-checkitem/) (agent)
- [Add items to the end of a checklist (owner or office)](https://doingwork.work/docs/reference/checklists-additems/) (agent)
- [Remove an item from a checklist (it stays in the history, marked removed)](https://doingwork.work/docs/reference/checklists-removeitem/) (agent)
- [Ask for a sign-off on a finished checklist and get the signing link](https://doingwork.work/docs/reference/checklists-requestsignoff/) (agent)
- [Create a form template (an inspection, a safety sheet, a start-up report), or replace one (give form_template_id)](https://doingwork.work/docs/reference/forms-savetemplate/) (agent)
- [The shop's form templates with their fields](https://doingwork.work/docs/reference/forms-listtemplates/) (agent)
- [Archive a form template so it is no longer offered](https://doingwork.work/docs/reference/forms-archivetemplate/) (agent)
- [Start a form on a job, or on one visit of the job (visit_id)](https://doingwork.work/docs/reference/forms-start/) (agent)
- [Save answers on a draft form](https://doingwork.work/docs/reference/forms-fill/) (agent)
- [Submit a draft form: every required field must be answered (forms.get lists what is missing)](https://doingwork.work/docs/reference/forms-submit/) (agent)
- [Cancel a draft form (kept in history)](https://doingwork.work/docs/reference/forms-cancel/) (agent)
- [One form with its fields, answers, the required fields still missing, its stored PDF id and hash once submitted, and its sign-off](https://doingwork.work/docs/reference/forms-get/) (agent)
- [Forms on a job (job-level and per visit), or on one visit, newest first, without fields and answers](https://doingwork.work/docs/reference/forms-list/) (agent)
- [Ask for a signature on a submitted form and get the signing link (owner or office)](https://doingwork.work/docs/reference/forms-requestsignoff/) (agent)
- [Write a note on a job, or on one visit of it (give visit_id; job_id is then optional)](https://doingwork.work/docs/reference/notes-add/) (agent)
- [Save a voice memo as a note: send the transcript your agent made, the memo's length in seconds, when it was recorded, and what transcribed it](https://doingwork.work/docs/reference/notes-addvoicememo/) (agent)
- [Change a note](https://doingwork.work/docs/reference/notes-update/) (agent)
- [Take a note off the job](https://doingwork.work/docs/reference/notes-remove/) (agent)
- [One note you may see, with every earlier wording (history, oldest first)](https://doingwork.work/docs/reference/notes-get/) (agent)
- [Notes you may see on a job (job-level and every visit) or on one visit: pinned first, then newest first](https://doingwork.work/docs/reference/notes-list/) (agent)
- [Write a change order on a job: a priced change to its scope, from lines a worker wrote (never filled in by AI)](https://doingwork.work/docs/reference/changes-create/) (agent)
- [A job's change orders and its money picture: signed quotes (contract_minor) + approved change orders = revised_total_minor; pending (sent, not yet signed); invoiced on live invoices; unbilled; and approved change orders not on an invoice yet](https://doingwork.work/docs/reference/changes-list/) (agent)
- [One change order with its lines, totals, status, signature and invoice](https://doingwork.work/docs/reference/changes-get/) (agent)
- [Owner or office: ask the customer to approve a change order](https://doingwork.work/docs/reference/changes-send/) (agent)
- [Cancel a draft or sent change order (its open signature request is cancelled too, so the link stops working)](https://doingwork.work/docs/reference/changes-cancel/) (agent)
- [Bill approved change orders on a normal invoice (draft; send it with invoices.send)](https://doingwork.work/docs/reference/changes-invoice/) (agent)
- [Start a person's clock: on a job (work), or drive, shop or break time](https://doingwork.work/docs/reference/timesheets-clockin/) (agent)
- [Stop a person's running clock](https://doingwork.work/docs/reference/timesheets-clockout/) (agent)
- [A person's running clock in a shop, or null when they are not clocked in](https://doingwork.work/docs/reference/timesheets-current/) (agent)
- [Add time after the fact (a manual entry with a start and an end, at most 24 hours)](https://doingwork.work/docs/reference/timesheets-add/) (agent)
- [Fix a time entry that is not approved: its start, end, category, job, visit or notes](https://doingwork.work/docs/reference/timesheets-update/) (agent)
- [Take back a time entry that was never approved (kept in history, no longer counted)](https://doingwork.work/docs/reference/timesheets-void/) (agent)
- [Owner or office: approve or reject stopped time entries (up to 200 at once, one shop)](https://doingwork.work/docs/reference/timesheets-decide/) (agent)
- [Owner only: reopen approved time so it can be fixed (it goes back to waiting for approval)](https://doingwork.work/docs/reference/timesheets-reopen/) (agent)
- [Time entries in a shop between dates (the shop's time zone), or on one job, with minutes by category and by person, and approved minutes](https://doingwork.work/docs/reference/timesheets-list/) (agent)
- [Owner or office: set what an hour of a worker's time costs the shop (wage plus burden), or the shop default when person_id is left out](https://doingwork.work/docs/reference/timesheets-setrate/) (agent)
- [Labor cost rates in force now: the shop default and each worker's own, plus upcoming ones](https://doingwork.work/docs/reference/timesheets-listrates/) (agent)
- [Record a material used on a job (optionally on one of its visits): from the price book (pricebook_item_id; its name, unit, price, cost and taxable are copied as they are now) or typed in (name, unit, and optionally the price and cost per unit)](https://doingwork.work/docs/reference/materials-add/) (agent)
- [Change a recorded material's quantity, visit or notes](https://doingwork.work/docs/reference/materials-update/) (agent)
- [Remove a recorded material (recorded in error or returned)](https://doingwork.work/docs/reference/materials-remove/) (agent)
- [Materials recorded on a job (or one visit), with the price and cost totals of those still counted](https://doingwork.work/docs/reference/materials-list/) (agent)
- [Add a subcontractor to a job: a company and the one email they will sign in with](https://doingwork.work/docs/reference/subs-add/) (agent)
- [Subcontractors on a job, or on every job in the shop: status invited, joined, expired or removed, when they last opened their page](https://doingwork.work/docs/reference/subs-list/) (agent)
- [Change a subcontractor's contact name, trade or scope note (what they see on their page)](https://doingwork.work/docs/reference/subs-update/) (agent)
- [Take a subcontractor off a job, for good: their link stops working at once](https://doingwork.work/docs/reference/subs-remove/) (agent)
- [Notes subcontractors left on a job, newest first](https://doingwork.work/docs/reference/subs-notes/) (agent)
- [The subcontractor's page for one job: the shop, job summary, work address, scope note, upcoming visit times and their notes](https://doingwork.work/docs/reference/subs-view/) (hosted page)
- [Leave a note for the shop on this job, as the subcontractor (up to 20 a day)](https://doingwork.work/docs/reference/subs-addnote/) (hosted page)

### Customer hub, requests and customer emails

- [Log a request for work from a customer or a new lead](https://doingwork.work/docs/reference/requests-create/) (agent)
- [Requests of a shop, newest first, filtered by stage, customer or tag](https://doingwork.work/docs/reference/requests-list/) (agent)
- [How many open requests a shop has in each stage, and how many were won or lost in the last 30 days](https://doingwork.work/docs/reference/requests-pipeline/) (agent)
- [One request with its customer and the job it became](https://doingwork.work/docs/reference/requests-get/) (agent)
- [Move a request to another stage or change its details, customer or property](https://doingwork.work/docs/reference/requests-update/) (agent)
- [Turn a request into a job at its property or address; the worker then writes the quote or books a visit](https://doingwork.work/docs/reference/requests-convert/) (agent)
- [Turn on the shop's public request form and get its key](https://doingwork.work/docs/reference/requests-formcreate/) (agent)
- [Send a shop a request through its public form](https://doingwork.work/docs/reference/requests-submitform/) (agent)
- [Save a quote template: worker-written lines (and good, better, best options) to start quotes from](https://doingwork.work/docs/reference/templates-save/) (agent)
- [List the shop's saved quote templates with their lines](https://doingwork.work/docs/reference/templates-list/) (agent)
- [Archive a quote template, or bring it back with archived false (owner or office)](https://doingwork.work/docs/reference/templates-archive/) (agent)
- [The shop's customer message templates, one per kind (invoice_reminder, quote_followup, review_request): the wording in use (custom or built-in), the placeholders each kind takes, and the locked link placeholder that must stay in the body](https://doingwork.work/docs/reference/messages-templates/) (agent)
- [Set the subject and body wording for one kind of automatic customer email](https://doingwork.work/docs/reference/messages-savetemplate/) (agent)
- [Go back to the built-in wording for one kind of automatic customer email](https://doingwork.work/docs/reference/messages-resettemplate/) (agent)
- [Show how one kind of automatic customer email reads, filled with sample customer details and the shop's name](https://doingwork.work/docs/reference/messages-previewtemplate/) (agent)
- [Make a customer hub link: one page where this customer sees their quotes, jobs, invoices, upcoming visits and requests with you, pays, asks to move or cancel a visit, and asks for new work](https://doingwork.work/docs/reference/hub-createlink/) (agent)
- [A customer's hub links, newest first: when each was made, when it expires or was revoked, and how often and when it was last opened](https://doingwork.work/docs/reference/hub-links/) (agent)
- [Stop a customer hub link working, for good](https://doingwork.work/docs/reference/hub-revokelink/) (agent)
- [The customer hub for the signed-in customer: their quotes, jobs, invoices with what is still owed, upcoming visits with any change request, and requests with this shop](https://doingwork.work/docs/reference/hub-view/) (hosted page)
- [Open a sent quote or an unpaid invoice from the customer hub: returns a fresh page link for that one item, for the signed-in customer only, good for a day](https://doingwork.work/docs/reference/hub-open/) (hosted page)
- [From the customer hub, ask the shop to move (reschedule, with the times that work better) or cancel an upcoming visit](https://doingwork.work/docs/reference/hub-requestvisitchange/) (hosted page)
- [From the customer hub, take back your own open request to move or cancel a visit](https://doingwork.work/docs/reference/hub-withdrawvisitchange/) (hosted page)
- [From the customer hub, ask the shop for new work](https://doingwork.work/docs/reference/hub-requestwork/) (hosted page)

### Costs, expenses and reports

- [Tips customers paid, by invoice and in total, between two dates (owner or office)](https://doingwork.work/docs/reference/tips-report/) (agent)
- [Record money a worker spent on a job, with the receipt photo](https://doingwork.work/docs/reference/expenses-add/) (agent)
- [Change an expense: date, vendor, category, amount, tax, receipt photo or note](https://doingwork.work/docs/reference/expenses-update/) (agent)
- [Take an expense off the books (kept in history)](https://doingwork.work/docs/reference/expenses-remove/) (agent)
- [Expenses on a job, or across the shop between dates, with totals by category](https://doingwork.work/docs/reference/expenses-list/) (agent)
- [Money collected between two dates (inclusive, UTC), by month: card and bank payments through Doing Work less refunds, and payments recorded as taken outside Doing Work, shown apart](https://doingwork.work/docs/reference/reports-revenue/) (agent)
- [Money customers still owe on sent invoices, grouped by how long ago each invoice went out: 0 to 30, 31 to 60, 61 to 90 and over 90 days](https://doingwork.work/docs/reference/reports-owed/) (agent)
- [Of the quotes made between two dates (inclusive, UTC) and sent, how many were signed, declined, or are still waiting](https://doingwork.work/docs/reference/reports-quotewinrate/) (agent)
- [Job costing for one job: contract, invoiced, collected and revenue against labor (approved and pending time at each entry's cost rate), materials at cost, expenses and Doing Work fees, with profit and margin](https://doingwork.work/docs/reference/costs-job/) (agent)
- [Job costing across jobs dated between two days (inclusive, in the shop's time zone), with totals](https://doingwork.work/docs/reference/costs-jobs/) (agent)
- [The shop's today queues in one call: visits today, visits in the next 7 days with nobody assigned, new requests, quotes and change orders waiting on the customer, overdue and draft invoices, done jobs not invoiced, time waiting for approval and approvals waiting on the owner](https://doingwork.work/docs/reference/reports-today/) (agent)
- [How the shop did in one week (Monday to Sunday in the shop's time zone) against the week before: money collected, refunded, paid outside and invoiced; quotes sent and signed; jobs, visits, customers and requests; time logged and expenses](https://doingwork.work/docs/reference/reports-week/) (agent)
- [Save a report to run again later: a name, one report operation (reports.revenue, reports.owed, reports.quoteWinRate, reports.today, reports.week, costs.jobs), its settings, and an optional moving date range (today, this_week, last_week, this_month, last_month, last_7_days, last_30_days, last_90_days, this_quarter, last_quarter, this_year, last_year) worked out on the shop's calendar each run](https://doingwork.work/docs/reference/reports-save/) (agent)
- [The shop's saved reports, by name](https://doingwork.work/docs/reference/reports-listsaved/) (agent)
- [Remove a saved report (kept for the record; its name is free to use again)](https://doingwork.work/docs/reference/reports-removesaved/) (agent)
- [Run a saved report now: its date range is worked out on the shop's calendar (or around as_of), and the report operation runs with the caller's own permissions](https://doingwork.work/docs/reference/reports-run/) (agent)

### Imports, custom fields, tags and search

- [Add a custom field to customers, properties, jobs, quotes or invoices for a shop](https://doingwork.work/docs/reference/fields-define/) (agent)
- [Custom fields a shop has defined, optionally for one kind of record](https://doingwork.work/docs/reference/fields-list/) (agent)
- [Set one custom field value on a customer, property, job, quote or invoice](https://doingwork.work/docs/reference/fields-set/) (agent)
- [Custom field values on one record, with any required fields still empty](https://doingwork.work/docs/reference/fields-get/) (agent)
- [Every tag used in the shop, with how many photos and jobs carry it](https://doingwork.work/docs/reference/tags-list/) (agent)
- [Search one shop for customers (name, email, phone), properties (address), jobs (summary) and requests (title)](https://doingwork.work/docs/reference/search-global/) (agent)
- [The customer import fields and the built-in presets (jobber, housecall_pro, companycam) with the export column each reads](https://doingwork.work/docs/reference/imports-fields/) (agent)
- [Dry run of a customer CSV import](https://doingwork.work/docs/reference/imports-preview/) (agent)
- [Owner only: import customers (and one service address each) from a CSV with the mapping the owner confirmed](https://doingwork.work/docs/reference/imports-run/) (agent)
- [Run one safe action on up to 200 records: customers.addTags, customers.removeTags, customers.archive, customers.unarchive, jobs.addTags, jobs.removeTags, visits.assign](https://doingwork.work/docs/reference/bulk-run/) (agent)

## Coming soon

Not available yet, so agents shouldn't offer these until they appear in the [API reference](https://doingwork.work/docs/reference/). Text messages aren't part of launch either; customer notices go by email.

### Integrations

- QuickBooks Online sync
- Google Ads conversion uploads
