Skip to main content
The Create Appointment endpoint lets you book a new appointment slot for a patient with a specific professional at your clinic. You must supply the patient and professional UUIDs, the start and end times in UTC, and optionally the appointment type and internal notes. By default, ByDoctor sends a WhatsApp confirmation to the patient immediately after the appointment is created — set notify_patient to false if you want to suppress this notification.

Request

POST https://api.bydoctor.com.br/v1/appointments Content-Type: application/json
string
required
The UUID of an existing patient in your clinic. You can find patient UUIDs via the Patients API.
string
required
The UUID of the professional who will conduct the appointment.
string
required
The appointment start time as an ISO 8601 UTC timestamp. Example: 2025-07-15T14:00:00Z.
string
required
The appointment end time as an ISO 8601 UTC timestamp. Must be strictly after starts_at.
string
default:"presencial"
The appointment modality. Accepted values: presencial (in-person) or teleconsulta (video call). When teleconsulta is set, a teleconsult_url is automatically generated and returned in the response.
string
Free-text notes visible to clinic staff. Not shared with the patient.
boolean
default:true
When true, ByDoctor sends a WhatsApp confirmation message to the patient’s registered phone number immediately after the appointment is created. This field is write-only and is not returned in responses.

Response Fields

string
Unique identifier for the newly created appointment (UUID).
string
The ID of the clinic that owns this appointment.
string
The ID of the patient linked to this appointment.
string
The ID of the professional assigned to this appointment.
string
Appointment start time in ISO 8601 UTC format.
string
Appointment end time in ISO 8601 UTC format.
string
Appointment type: presencial or teleconsulta.
string
Initial status of the appointment. Always scheduled on creation.
string
Notes attached to the appointment. null if not provided.
string
Initial payment status. Always pending on creation.
string
Auto-generated video room URL. Present only when type is teleconsulta. null for presencial appointments.
string
Timestamp when the appointment was created (ISO 8601 UTC).
string
Timestamp of the last update. Equal to created_at on a fresh record.
If the requested time slot is already occupied by another appointment for the same professional, the API returns a 409 Conflict error. Fetch the professional’s schedule first to identify available windows before attempting to create.

Example Request

Example Response (201 Created)

Error Responses

400 Bad Request — One or more required fields are missing or malformed.
401 Unauthorized — Your API key is missing or invalid.
404 Not Found — The specified patient or professional does not exist in your clinic.
409 Conflict — The professional already has an appointment overlapping the requested time slot.
422 Unprocessable Entity — The request body is structurally valid but logically inconsistent (for example, ends_at is before or equal to starts_at).