--- title: maintenance.confirmPrice | Doing Work API description: Apply an agent's proposed price on a maintenance plan. Owner or office, from their own sign-in, never an agent. The lines then count as the shop's, and the url: https://doingwork.work/docs/reference/maintenance-confirmprice/ --- # maintenance.confirmPrice Apply an agent's proposed price on a maintenance plan. Owner or office, from their own sign-in, never an agent. The lines then count as the shop's, and the next term's invoice uses them. Invoices already made keep their price. | | | |---|---| | Who | A person's own sign-in only (agent tokens are refused) | | REST | `POST /v1/maintenance-plans/price/confirm` | | MCP tool | Not an MCP tool | | Writes | yes, send an Idempotency-Key | | Area | [Scheduling and visits](https://doingwork.work/docs/reference/#scheduling-and-visits) | ## When to use it Apply an agent's proposed price on a maintenance plan. Owner or office, from their own sign-in, never an agent. ## What to tell the owner Ask the person to do this with their own sign-in. Your agent token is refused here. ## Input | Field | Type | Required | |---|---|---| | `proposal_id` | string (uuid) | yes | | `plan_id` | string (uuid) | no | ## Example ```http POST https://doingwork.work/v1/maintenance-plans/price/confirm content-type: application/json Idempotency-Key: 3f1c... { "proposal_id": "00000000-0000-4000-8000-000000000000" } ``` ## Output JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are `{code, message, status}`. ## Errors | Code | Status | What to do | |---|---|---| | `invalid_input`, `invalid_token`, `rate_limited` | | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |