Book the visit
book_appointmentAt the company chosen from find_companies (pass its company). Books the visit at a free time from check_availability. Only after the client confirmed the service, the time, the address and the price. The company messages the client (WhatsApp, or e-mail when given). Returns the request number and a token for get_request_status / cancel_request. Repeating the same call (same idempotency_key or the same data) returns the same booking — its token again only with the same idempotency_key, so send one to be able to retry.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language for names and labels: ru, es, en, ar, pt, fr, de, it, tr, id, vi, th. Default en. | |
| units | No | How many (air conditioners, sockets, taps… — as the service asks) — only for services that count them. Default 1. | |
| address | Yes | Where the work is done: street, building, apartment, city. | |
| answers | No | Answers to the service's questions: { question_id: option_id | [option_ids] | number | text }. Use the ids from list_services. | |
| company | Yes | The company: the `company` of a find_companies result. | |
| service | Yes | The service key from list_services. | |
| slot_id | Yes | A slot_id from check_availability. | |
| district | No | When company_info lists service_zones: the client's district as its zone id (e.g. "dubai:jlt"), or "other" when it is not in the list. | |
| diagnosis | No | Optional: { brand, code } from diagnose — the technician sees it. | |
| client_name | Yes | ||
| client_email | No | Optional: messages go to this e-mail instead of WhatsApp. | |
| client_phone | Yes | With the country code, e.g. +971 50 123 4567. | |
| idempotency_key | No | Optional, 8–100 of A-Z a-z 0-9 _ -: the same key never books twice. | |
| client_accepted_disclaimer | No | Needed with diagnosis: the client agreed it is a hint, not a diagnosis. |