Crear cita

POSThttps://api.bydomu.com/v1/appointments

This reference is generated from the API’s code, so descriptions are in Spanish. Names, parameters and examples are the same in every language.

Agenda una cita con un contacto y programa sus recordatorios. endTime debe ser posterior a startTime. Respeta el tope mensual de citas del plan (403 PLAN_LIMIT_REACHED).

Permission
appointments:write
Keys
Secret only (server-side)

Headers

X-API-Keystringrequired
Your secret key.
Idempotency-Keystring
Clave única de la operación (8-128 caracteres de [a-zA-Z0-9._:-]). Un reintento con la misma clave y el mismo cuerpo devuelve la respuesta original sin repetir la operación. Vive 24 horas. · 8–128 chars

Body (JSON)

titlestringrequired
2–200 chars
descriptionstring
≤ 2000 chars
typestring
SHOWINGMEETINGCALLFOLLOW_UPSIGNINGOTHER · default="MEETING"
colorstring
startTimestringrequired
endTimestringrequired
locationstring
≤ 500 chars
contactIdstringrequired
dealIdstring
propertyIdstring
assigneeIdstringrequired
remindersobject[]

Responses

201Cita creada
400Datos inválidos: el cuerpo o la query no cumplen el esquema, o `Idempotency-Key` está mal formada.
401UNAUTHORIZED · Clave faltante, inválida, desactivada o vencida.
402PAYMENT_REQUIRED · Cuenta en modo solo lectura: se rechaza toda mutación.
403FORBIDDEN · La clave no puede usar esta operación: falta el scope, es una secreta en el navegador, el nivel de la cuenta no la permite, está suspendida o se alcanzó un tope del plan.
404NOT_FOUND · El recurso no existe en la organización.
409DUPLICATE · Choca con un dato existente o con el estado actual, o la `Idempotency-Key` ya se usó con otro cuerpo o sigue en curso.
429RATE_LIMITED · Límite de peticiones excedido: el de la clave (`RATE_LIMITED`), el de escrituras de la organización (`TENANT_RATE_LIMITED`) o bloqueo temporal de la IP por claves inválidas.
500INTERNAL_ERROR · Error interno del servidor.
cURL
curl -X POST "https://api.bydomu.com/v1/appointments" \
  -H "X-API-Key: $BYDOMU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Visita Apto Chapinero",
  "type": "SHOWING",
  "startTime": "2026-10-02T15:00:00.000Z",
  "endTime": "2026-10-02T16:00:00.000Z",
  "location": "Cra 7 #45-12, Bogotá",
  "contactId": "clx1con001",
  "propertyId": "clx1prop001",
  "assigneeId": "clx1usr001",
  "reminders": [
    {
      "channel": "WHATSAPP",
      "minutesBefore": 60
    }
  ]
}'
JavaScript
const res = await fetch("https://api.bydomu.com/v1/appointments", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.BYDOMU_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "title": "Visita Apto Chapinero",
    "type": "SHOWING",
    "startTime": "2026-10-02T15:00:00.000Z",
    "endTime": "2026-10-02T16:00:00.000Z",
    "location": "Cra 7 #45-12, Bogotá",
    "contactId": "clx1con001",
    "propertyId": "clx1prop001",
    "assigneeId": "clx1usr001",
    "reminders": [
      {
        "channel": "WHATSAPP",
        "minutesBefore": 60
      }
    ]
  }),
});
const data = await res.json();
Python
import os, requests

r = requests.post(
    "https://api.bydomu.com/v1/appointments",
    headers={"X-API-Key": os.environ["BYDOMU_API_KEY"]},
    json={
        "title": "Visita Apto Chapinero",
        "type": "SHOWING",
        "startTime": "2026-10-02T15:00:00.000Z",
        "endTime": "2026-10-02T16:00:00.000Z",
        "location": "Cra 7 #45-12, Bogotá",
        "contactId": "clx1con001",
        "propertyId": "clx1prop001",
        "assigneeId": "clx1usr001",
        "reminders": [
            {
                "channel": "WHATSAPP",
                "minutesBefore": 60
            }
        ]
    }
)
data = r.json()
Response · 201 · example
{
  "data": {
    "id": "clx1apt001",
    "title": "Visita Apto Chapinero",
    "description": "Segunda visita; llevar el certificado de libertad.",
    "type": "SHOWING",
    "status": "SCHEDULED",
    "startTime": "2026-10-02T15:00:00.000Z",
    "endTime": "2026-10-02T16:00:00.000Z",
    "color": "#6366F1",
    "location": "Cra 7 #45-12, Bogotá",
    "createdAt": "2026-09-25T09:00:00.000Z",
    "cancelReason": "El cliente reagendará",
    "source": "MANUAL",
    "contactId": "clx1con001",
    "dealId": "clx1deal001",
    "propertyId": "clx1prop001",
    "assigneeId": "clx1usr001",
    "createdById": "clx1usr002",
    "updatedAt": "2026-09-25T09:00:00.000Z",
    "contact": {
      "id": "clx1con001",
      "firstName": "María",
      "lastName": "González",
      "phone": "+573001234567"
    },
    "deal": {
      "id": "clx1deal001",
      "title": "Venta Apto Chapinero"
    },
    "assignee": {
      "id": "clx1usr001",
      "firstName": "Carlos",
      "lastName": "Rodríguez"
    },
    "reminders": [
      {
        "id": "clx1rem001",
        "channel": "WHATSAPP",
        "minutesBefore": 60,
        "scheduledFor": "2026-10-02T14:00:00.000Z",
        "status": "PENDING"
      }
    ]
  …

The key goes in the BYDOMU_API_KEY variable. The example data belongs to no agency.