Place a service request
place_service_requestOne call for any trade job (repair, quote, booking). Pass service_sku (or a plain description and it matches one), intake_answers keyed by the field ids from get_service_requirements, customer (name, phone, address with line1+zip), preferred_time, and slot_start only when the service flow asks for one. For an unchanged retry after receiving a receipt, include retry_ref and its customer_token with the original details. For quote-first requests without a slot, optionally generate and securely save intent_capability before the first submission; explicitly repeat the same business/details/capability to recover a lost first receipt. Do not silently resubmit. Without either capability this creates a separate request, even if the phone matches. A quote_required request is sent to the business without a price; a priced booking draft waits for the customer's approval. Follow the returned next_step, and never call a request booked until the business confirms.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| notes | No | ||
| photos | No | URLs (use upload_photo to turn an image into a URL) | |
| urgency | No | ||
| customer | Yes | Who the job/order is for. Use what the customer already gave you; ask only for what a tool says is missing. | |
| retry_ref | No | Existing request reference for an unchanged retry; requires customer_token. A phone number never authorizes a retry. | |
| slot_start | No | ISO start from get_availability | |
| description | No | The problem in the customer's words; used to match a service if service_sku is omitted | |
| referred_by | No | Slug of the business whose error response listed this one under referrals[] (its trusted partner). Lets both businesses see the referral. | |
| service_sku | No | ||
| customer_token | No | Customer token returned with retry_ref; only for an unchanged retry of that request. | |
| intake_answers | No | ||
| preferred_time | No | e.g. 'Tomorrow morning' or an ISO datetime | |
| intent_capability | No | Optional secret 32-byte random client capability, encoded as lowercase hex. Save before sending a quote-first request without a slot; explicitly repeat unchanged details with the same capability to recover a lost first receipt. Never combine with retry_ref/customer_token; never silently resubmit. |