Referencia

Referencia de la API

La API de Kuida es REST: recibe y devuelve JSON con claves en camelCase, usa los códigos HTTP estándar y se autentica con una clave por organización. Esta referencia tiene 32 operaciones en 9 recursos y se genera del mismo contrato que valida cada pedido.

Versión vigente: 2026-09-28. El contrato completo en OpenAPI 3.1 está en /api/v1/openapi.json. Para empezar, ver Primeros pasos.

URL base
https://www.kuida.ar/api/v1

Obtener la cuenta

GET/v1/account

La organización dueña de la clave, con sus líneas de servicio y los permisos de la clave. Sirve para probar que la integración está bien configurada.

Permiso
cualquier clave válida
SDK
account.retrieve

Respuesta

200 con un objeto Account. La organización dueña de la clave de API.

› Ver los 8 campos de la respuesta
  • idstring

    Id de la organización.

  • objectstring
  • namestring
  • typestring

    Tipo de institución (clinic, pharmacy, lab, …).

  • timeZonestring
  • serviceLinesarray de enum

    Líneas de servicio contratadas: seguimiento de pacientes y red de derivaciones.

    Valores:follow_upnetwork

  • livemodeboolean

    true en producción, false en el entorno de pruebas.

  • apiKeyobjeto
    › Ver 3 campos
    • namestring
    • prefixstring
    • scopesarray de string
GET /v1/account
curl https://www.kuida.ar/api/v1/account \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "org_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "account",
  "name": "Institución Demo",
  "type": "clinic",
  "timeZone": "America/Argentina/Buenos_Aires",
  "serviceLines": [
    "follow_up"
  ],
  "livemode": false,
  "apiKey": {
    "name": "Sistema de turnos",
    "prefix": "kd_test_0a1b2c3d4e5f",
    "scopes": [
      "patients:read",
      "patients:write"
    ]
  }
}

Crear o identificar un paciente

POST/v1/patients

Da de alta a un paciente sin mandarle nada. Si ya existe uno con ese teléfono (o ese DNI), devuelve el existente y completa los datos que le faltaban; nunca pisa datos cargados. Crear un paciente no lo contacta: el contacto lo dispara un turno, una consulta o una solicitud de ingreso.

Permiso
patients:write
SDK
patients.create
Idempotencia
Acepta Idempotency-Key
Línea de servicio
Requiere la línea de seguimiento de pacientes

Cuerpo

  • phonestringobligatorio

    Celular con WhatsApp, en cualquier formato; Kuida lo normaliza.

  • fullNamestring

    Nombre y apellido.

  • dnistring

    Documento, sin puntos.

  • emailemail

    Correo electrónico.

  • externalIdstring

    Id del paciente en su sistema.

  • dateOfBirthfecha

    Fecha ISO 8601 (AAAA-MM-DD).

Respuesta

200 con un objeto Patient. Un paciente de la organización.

› Ver los 12 campos de la respuesta
  • idstring

    Id del paciente.

  • objectstring
  • fullNamestringpuede ser null
  • phonestringpuede ser null

    Teléfono normalizado.

  • emailstringpuede ser null
  • dnistringpuede ser null
  • externalIdstringpuede ser null

    Id del paciente en su sistema.

  • dateOfBirthfechapuede ser null

    Fecha de nacimiento (AAAA-MM-DD).

  • stageenum

    Estado básico del paciente en Kuida.

    Valores:pending_follow_upin_conversationscheduledperiodic_follow_updischargedlost

  • optedOutboolean

    Si el paciente pidió no recibir mensajes. Kuida no le escribe.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

POST /v1/patients
curl https://www.kuida.ar/api/v1/patients \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+54 9 342 555 0000",
  "fullName": "Paciente Demo",
  "dni": "11111111",
  "externalId": "HC-1234"
}'
Respuesta
{
  "id": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "patient",
  "fullName": "Paciente Demo",
  "phone": "+5493425550000",
  "email": "paciente.demo@example.com",
  "dni": "11111111",
  "externalId": "HC-1234",
  "dateOfBirth": null,
  "stage": "pending_follow_up",
  "optedOut": false,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Obtener un paciente

GET/v1/patients/{id}

Devuelve un paciente por su id.

Permiso
patients:read
SDK
patients.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto Patient. Un paciente de la organización.

› Ver los 12 campos de la respuesta
  • idstring

    Id del paciente.

  • objectstring
  • fullNamestringpuede ser null
  • phonestringpuede ser null

    Teléfono normalizado.

  • emailstringpuede ser null
  • dnistringpuede ser null
  • externalIdstringpuede ser null

    Id del paciente en su sistema.

  • dateOfBirthfechapuede ser null

    Fecha de nacimiento (AAAA-MM-DD).

  • stageenum

    Estado básico del paciente en Kuida.

    Valores:pending_follow_upin_conversationscheduledperiodic_follow_updischargedlost

  • optedOutboolean

    Si el paciente pidió no recibir mensajes. Kuida no le escribe.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

GET /v1/patients/{id}
curl https://www.kuida.ar/api/v1/patients/pat_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "patient",
  "fullName": "Paciente Demo",
  "phone": "+5493425550000",
  "email": "paciente.demo@example.com",
  "dni": "11111111",
  "externalId": "HC-1234",
  "dateOfBirth": null,
  "stage": "pending_follow_up",
  "optedOut": false,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Actualizar un paciente

PATCH/v1/patients/{id}

Cambia solo los campos que envía. El teléfono no se puede cambiar porque es la identidad del paciente en WhatsApp.

Permiso
patients:write
SDK
patients.update
Línea de servicio
Requiere la línea de seguimiento de pacientes

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Cuerpo

Solo cambia lo que envía. El teléfono no se cambia: es la identidad.

  • fullNamestring
  • emailemail
  • dnistring
  • externalIdstring
  • dateOfBirthfecha

    Fecha ISO 8601 (AAAA-MM-DD).

Respuesta

200 con un objeto Patient. Un paciente de la organización.

› Ver los 12 campos de la respuesta
  • idstring

    Id del paciente.

  • objectstring
  • fullNamestringpuede ser null
  • phonestringpuede ser null

    Teléfono normalizado.

  • emailstringpuede ser null
  • dnistringpuede ser null
  • externalIdstringpuede ser null

    Id del paciente en su sistema.

  • dateOfBirthfechapuede ser null

    Fecha de nacimiento (AAAA-MM-DD).

  • stageenum

    Estado básico del paciente en Kuida.

    Valores:pending_follow_upin_conversationscheduledperiodic_follow_updischargedlost

  • optedOutboolean

    Si el paciente pidió no recibir mensajes. Kuida no le escribe.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

PATCH /v1/patients/{id}
curl -X PATCH https://www.kuida.ar/api/v1/patients/pat_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "paciente.demo@example.com"
}'
Respuesta
{
  "id": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "patient",
  "fullName": "Paciente Demo",
  "phone": "+5493425550000",
  "email": "paciente.demo@example.com",
  "dni": "11111111",
  "externalId": "HC-1234",
  "dateOfBirth": null,
  "stage": "pending_follow_up",
  "optedOut": false,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Listar pacientes

GET/v1/patients

Pacientes de la organización, del más nuevo al más viejo. Filtre por teléfono, DNI o id externo para buscar uno.

Permiso
patients:read
SDK
patients.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • phonestring

    Filtre por teléfono (cualquier formato).

  • dnistring
  • externalIdstring

Respuesta

200 con un objeto PatientList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Un paciente de la organización.

    › Ver 12 campos
    • idstring

      Id del paciente.

    • objectstring
    • fullNamestringpuede ser null
    • phonestringpuede ser null

      Teléfono normalizado.

    • emailstringpuede ser null
    • dnistringpuede ser null
    • externalIdstringpuede ser null

      Id del paciente en su sistema.

    • dateOfBirthfechapuede ser null

      Fecha de nacimiento (AAAA-MM-DD).

    • stageenum

      Estado básico del paciente en Kuida.

      Valores:pending_follow_upin_conversationscheduledperiodic_follow_updischargedlost

    • optedOutboolean

      Si el paciente pidió no recibir mensajes. Kuida no le escribe.

    • createdAttimestamp

      Fecha y hora ISO 8601.

    • updatedAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/patients
curl -G https://www.kuida.ar/api/v1/patients \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "pat_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "patient",
      "fullName": "Paciente Demo",
      "phone": "+5493425550000",
      "email": "paciente.demo@example.com",
      "dni": "11111111",
      "externalId": "HC-1234",
      "dateOfBirth": null,
      "stage": "pending_follow_up",
      "optedOut": false,
      "createdAt": "2026-10-01T17:30:00.000Z",
      "updatedAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/patients"
}

Listar profesionales

GET/v1/doctors

El padrón de profesionales de la organización. Lo cura la organización dentro de Kuida; los turnos y consultas que envía lo usan para identificar a quién atiende.

Permiso
doctors:read
SDK
doctors.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • activeenum

    Filtre por activos o inactivos.

    Valores:truefalse

  • externalIdstring

Respuesta

200 con un objeto DoctorList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Un profesional del padrón de la organización.

    › Ver 8 campos
    • idstring

      Id del profesional.

    • objectstring
    • fullNamestring
    • specialtystringpuede ser null
    • licenseNumberstringpuede ser null

      Matrícula.

    • externalIdstringpuede ser null
    • activeboolean

      Si atiende hoy. Solo los activos reciben turnos del agente.

    • createdAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/doctors
curl -G https://www.kuida.ar/api/v1/doctors \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "doc_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "doctor",
      "fullName": "Dra. Demo",
      "specialty": "Cardiología",
      "licenseNumber": "MP 0000",
      "externalId": "MED-12",
      "active": true,
      "createdAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/doctors"
}

Obtener un profesional

GET/v1/doctors/{id}

Devuelve un profesional por su id.

Permiso
doctors:read
SDK
doctors.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto Doctor. Un profesional del padrón de la organización.

› Ver los 8 campos de la respuesta
  • idstring

    Id del profesional.

  • objectstring
  • fullNamestring
  • specialtystringpuede ser null
  • licenseNumberstringpuede ser null

    Matrícula.

  • externalIdstringpuede ser null
  • activeboolean

    Si atiende hoy. Solo los activos reciben turnos del agente.

  • createdAttimestamp

    Fecha y hora ISO 8601.

GET /v1/doctors/{id}
curl https://www.kuida.ar/api/v1/doctors/doc_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "doc_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "doctor",
  "fullName": "Dra. Demo",
  "specialty": "Cardiología",
  "licenseNumber": "MP 0000",
  "externalId": "MED-12",
  "active": true,
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Crear un turno

POST/v1/appointments

Registra un turno y agenda los recordatorios por WhatsApp que la organización tiene configurados (por ejemplo, 24 y 3 horas antes). Si envía externalId y ya existe un turno con ese id, devuelve ese y no crea otro.

Permiso
appointments:write
SDK
appointments.create
Idempotencia
Acepta Idempotency-Key
Línea de servicio
Requiere la línea de seguimiento de pacientes

Cuerpo

  • patientstring u objetoobligatorio

    Un paciente: su id de Kuida (pat_…) o los datos con que lo conoce su sistema.

    › Ver 6 campos
    • phonestring

      Celular con WhatsApp, en cualquier formato; Kuida lo normaliza. Es la identidad principal del paciente.

    • fullNamestring

      Nombre y apellido.

    • dnistring

      Documento, sin puntos.

    • emailemail

      Correo electrónico.

    • externalIdstring

      Id del paciente en su sistema.

    • dateOfBirthfecha

      Fecha ISO 8601 (AAAA-MM-DD).

  • doctorstring u objeto

    Un profesional: su id de Kuida (doc_…) o sus datos.

    › Ver 3 campos
    • externalIdstring

      Id del profesional en su sistema.

    • fullNamestring

      Nombre del profesional.

    • specialtystring

      Especialidad.

  • startAttimestampobligatorio

    Inicio del turno.

  • typestring

    Tipo de turno o práctica.

  • externalIdstring

    Id del turno en su sistema. Si ya existe un turno con ese id, se devuelve ese y no se crea otro.

Respuesta

200 con un objeto Appointment. Un turno. Kuida le manda al paciente los recordatorios que la organización configuró.

› Ver los 12 campos de la respuesta
  • idstring

    Id del turno.

  • objectstring
  • patientstring

    Paciente del turno.

  • doctorstringpuede ser null

    Profesional.

  • startAttimestamp

    Fecha y hora ISO 8601.

  • statusenum

    Valores:confirmedpendingrescheduledcancelledcompleted

  • typestringpuede ser null

    Tipo de turno o práctica.

  • externalIdstringpuede ser null

    Id del turno en su sistema.

  • sourceenum

    Por dónde entró: su API, el conector del sistema de gestión, el agente de Kuida o el equipo.

    Valores:apipmsagentmanual

  • cancelledAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

POST /v1/appointments
curl https://www.kuida.ar/api/v1/appointments \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "patient": {
    "phone": "+54 9 342 555 0000",
    "fullName": "Paciente Demo"
  },
  "doctor": {
    "externalId": "MED-12",
    "fullName": "Dra. Demo"
  },
  "startAt": "2026-10-05T10:30:00-03:00",
  "type": "Control",
  "externalId": "turno-123"
}'
Respuesta
{
  "id": "apt_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "appointment",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
  "startAt": "2026-10-01T17:30:00.000Z",
  "status": "confirmed",
  "type": "Control",
  "externalId": "turno-123",
  "source": "api",
  "cancelledAt": null,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Obtener un turno

GET/v1/appointments/{id}

Devuelve un turno por su id.

Permiso
appointments:read
SDK
appointments.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto Appointment. Un turno. Kuida le manda al paciente los recordatorios que la organización configuró.

› Ver los 12 campos de la respuesta
  • idstring

    Id del turno.

  • objectstring
  • patientstring

    Paciente del turno.

  • doctorstringpuede ser null

    Profesional.

  • startAttimestamp

    Fecha y hora ISO 8601.

  • statusenum

    Valores:confirmedpendingrescheduledcancelledcompleted

  • typestringpuede ser null

    Tipo de turno o práctica.

  • externalIdstringpuede ser null

    Id del turno en su sistema.

  • sourceenum

    Por dónde entró: su API, el conector del sistema de gestión, el agente de Kuida o el equipo.

    Valores:apipmsagentmanual

  • cancelledAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

GET /v1/appointments/{id}
curl https://www.kuida.ar/api/v1/appointments/apt_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "apt_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "appointment",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
  "startAt": "2026-10-01T17:30:00.000Z",
  "status": "confirmed",
  "type": "Control",
  "externalId": "turno-123",
  "source": "api",
  "cancelledAt": null,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Reprogramar o modificar un turno

PATCH/v1/appointments/{id}

Cambia horario, profesional o tipo. Un horario nuevo mueve los recordatorios pendientes al horario nuevo. Un turno cancelado o atendido no se puede modificar.

Permiso
appointments:write
SDK
appointments.update
Línea de servicio
Requiere la línea de seguimiento de pacientes

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Cuerpo

  • startAttimestamp

    Nuevo horario. Reprograma los recordatorios.

  • doctorstring u objeto

    Un profesional: su id de Kuida (doc_…) o sus datos.

    › Ver 3 campos
    • externalIdstring

      Id del profesional en su sistema.

    • fullNamestring

      Nombre del profesional.

    • specialtystring

      Especialidad.

  • typestring

Respuesta

200 con un objeto Appointment. Un turno. Kuida le manda al paciente los recordatorios que la organización configuró.

› Ver los 12 campos de la respuesta
  • idstring

    Id del turno.

  • objectstring
  • patientstring

    Paciente del turno.

  • doctorstringpuede ser null

    Profesional.

  • startAttimestamp

    Fecha y hora ISO 8601.

  • statusenum

    Valores:confirmedpendingrescheduledcancelledcompleted

  • typestringpuede ser null

    Tipo de turno o práctica.

  • externalIdstringpuede ser null

    Id del turno en su sistema.

  • sourceenum

    Por dónde entró: su API, el conector del sistema de gestión, el agente de Kuida o el equipo.

    Valores:apipmsagentmanual

  • cancelledAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

PATCH /v1/appointments/{id}
curl -X PATCH https://www.kuida.ar/api/v1/appointments/apt_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…" \
  -H "Content-Type: application/json" \
  -d '{
  "startAt": "2026-10-06T11:00:00-03:00"
}'
Respuesta
{
  "id": "apt_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "appointment",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
  "startAt": "2026-10-01T17:30:00.000Z",
  "status": "confirmed",
  "type": "Control",
  "externalId": "turno-123",
  "source": "api",
  "cancelledAt": null,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Cancelar un turno

POST/v1/appointments/{id}/cancel

Marca el turno como cancelado y da de baja sus recordatorios pendientes. Cancelar un turno ya cancelado no hace nada.

Permiso
appointments:write
SDK
appointments.cancel
Idempotencia
Acepta Idempotency-Key
Línea de servicio
Requiere la línea de seguimiento de pacientes

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Cuerpo

  • reasonstring

    Motivo, para el registro.

Respuesta

200 con un objeto Appointment. Un turno. Kuida le manda al paciente los recordatorios que la organización configuró.

› Ver los 12 campos de la respuesta
  • idstring

    Id del turno.

  • objectstring
  • patientstring

    Paciente del turno.

  • doctorstringpuede ser null

    Profesional.

  • startAttimestamp

    Fecha y hora ISO 8601.

  • statusenum

    Valores:confirmedpendingrescheduledcancelledcompleted

  • typestringpuede ser null

    Tipo de turno o práctica.

  • externalIdstringpuede ser null

    Id del turno en su sistema.

  • sourceenum

    Por dónde entró: su API, el conector del sistema de gestión, el agente de Kuida o el equipo.

    Valores:apipmsagentmanual

  • cancelledAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

POST /v1/appointments/{id}/cancel
curl https://www.kuida.ar/api/v1/appointments/apt_cm1a2b3c4d5e6f7g8h9i0j/cancel \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "El paciente pidió cancelar"
}'
Respuesta
{
  "id": "apt_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "appointment",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
  "startAt": "2026-10-01T17:30:00.000Z",
  "status": "confirmed",
  "type": "Control",
  "externalId": "turno-123",
  "source": "api",
  "cancelledAt": null,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Listar turnos

GET/v1/appointments

Turnos de la organización, del más nuevo al más viejo según cuándo se cargaron. Filtre por paciente, estado, id externo o rango de horario.

Permiso
appointments:read
SDK
appointments.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • patientstring

    Id del paciente (pat_…).

  • statusenum

    Valores:confirmedpendingrescheduledcancelledcompleted

  • externalIdstring
  • startAtGtetimestamp

    Turnos desde esta fecha y hora.

  • startAtLttimestamp

    Turnos antes de esta fecha y hora.

Respuesta

200 con un objeto AppointmentList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Un turno. Kuida le manda al paciente los recordatorios que la organización configuró.

    › Ver 12 campos
    • idstring

      Id del turno.

    • objectstring
    • patientstring

      Paciente del turno.

    • doctorstringpuede ser null

      Profesional.

    • startAttimestamp

      Fecha y hora ISO 8601.

    • statusenum

      Valores:confirmedpendingrescheduledcancelledcompleted

    • typestringpuede ser null

      Tipo de turno o práctica.

    • externalIdstringpuede ser null

      Id del turno en su sistema.

    • sourceenum

      Por dónde entró: su API, el conector del sistema de gestión, el agente de Kuida o el equipo.

      Valores:apipmsagentmanual

    • cancelledAttimestamppuede ser null

      Fecha y hora ISO 8601.

    • createdAttimestamp

      Fecha y hora ISO 8601.

    • updatedAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/appointments
curl -G https://www.kuida.ar/api/v1/appointments \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "apt_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "appointment",
      "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
      "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
      "startAt": "2026-10-01T17:30:00.000Z",
      "status": "confirmed",
      "type": "Control",
      "externalId": "turno-123",
      "source": "api",
      "cancelledAt": null,
      "createdAt": "2026-10-01T17:30:00.000Z",
      "updatedAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/appointments"
}

Registrar una consulta atendida

POST/v1/visits

Registra que el paciente fue atendido y arranca su seguimiento post-consulta: unas horas después Kuida le escribe por WhatsApp. Si viene de un turno, envíe appointment y el turno queda como atendido. Con externalId repetido devuelve la consulta existente.

Permiso
visits:write
SDK
visits.create
Idempotencia
Acepta Idempotency-Key
Línea de servicio
Requiere la línea de seguimiento de pacientes

Cuerpo

  • patientstring u objetoobligatorio

    Un paciente: su id de Kuida (pat_…) o los datos con que lo conoce su sistema.

    › Ver 6 campos
    • phonestring

      Celular con WhatsApp, en cualquier formato; Kuida lo normaliza. Es la identidad principal del paciente.

    • fullNamestring

      Nombre y apellido.

    • dnistring

      Documento, sin puntos.

    • emailemail

      Correo electrónico.

    • externalIdstring

      Id del paciente en su sistema.

    • dateOfBirthfecha

      Fecha ISO 8601 (AAAA-MM-DD).

  • doctorstring u objeto

    Un profesional: su id de Kuida (doc_…) o sus datos.

    › Ver 3 campos
    • externalIdstring

      Id del profesional en su sistema.

    • fullNamestring

      Nombre del profesional.

    • specialtystring

      Especialidad.

  • visitedAttimestampobligatorio

    Cuándo se atendió.

  • typestring
  • externalIdstring

    Id de la consulta en su sistema. Si ya existe, se devuelve esa y no se crea otra.

  • appointmentstring

    Turno del que sale la consulta: id de Kuida (apt_…) o el externalId del turno. Lo marca como atendido.

  • diagnosisstring
  • notesstring

Respuesta

200 con un objeto Visit. Una consulta atendida. Crearla arranca el seguimiento post-consulta del paciente.

› Ver los 12 campos de la respuesta
  • idstring

    Id de la consulta.

  • objectstring
  • patientstring

    Paciente atendido.

  • doctorstringpuede ser null

    Profesional.

  • appointmentstringpuede ser null

    Turno del que salió la consulta.

  • visitedAttimestamp

    Fecha y hora ISO 8601.

  • typestringpuede ser null
  • diagnosisstringpuede ser null
  • notesstringpuede ser null
  • externalIdstringpuede ser null
  • sourceenum

    Valores:pmsmanual

  • createdAttimestamp

    Fecha y hora ISO 8601.

POST /v1/visits
curl https://www.kuida.ar/api/v1/visits \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "patient": {
    "phone": "+54 9 342 555 0000",
    "fullName": "Paciente Demo",
    "dni": "11111111"
  },
  "doctor": {
    "externalId": "MED-12",
    "fullName": "Dra. Demo"
  },
  "visitedAt": "2026-10-05T10:45:00-03:00",
  "type": "Control",
  "externalId": "consulta-987",
  "appointment": "turno-123"
}'
Respuesta
{
  "id": "vis_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "visit",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
  "appointment": "apt_cm1a2b3c4d5e6f7g8h9i0j",
  "visitedAt": "2026-10-01T17:30:00.000Z",
  "type": "Consulta",
  "diagnosis": null,
  "notes": null,
  "externalId": "turno-123",
  "source": "pms",
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Obtener una consulta

GET/v1/visits/{id}

Devuelve una consulta por su id.

Permiso
visits:read
SDK
visits.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto Visit. Una consulta atendida. Crearla arranca el seguimiento post-consulta del paciente.

› Ver los 12 campos de la respuesta
  • idstring

    Id de la consulta.

  • objectstring
  • patientstring

    Paciente atendido.

  • doctorstringpuede ser null

    Profesional.

  • appointmentstringpuede ser null

    Turno del que salió la consulta.

  • visitedAttimestamp

    Fecha y hora ISO 8601.

  • typestringpuede ser null
  • diagnosisstringpuede ser null
  • notesstringpuede ser null
  • externalIdstringpuede ser null
  • sourceenum

    Valores:pmsmanual

  • createdAttimestamp

    Fecha y hora ISO 8601.

GET /v1/visits/{id}
curl https://www.kuida.ar/api/v1/visits/vis_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "vis_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "visit",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
  "appointment": "apt_cm1a2b3c4d5e6f7g8h9i0j",
  "visitedAt": "2026-10-01T17:30:00.000Z",
  "type": "Consulta",
  "diagnosis": null,
  "notes": null,
  "externalId": "turno-123",
  "source": "pms",
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Listar consultas

GET/v1/visits

Consultas registradas, de la más nueva a la más vieja según cuándo se cargaron.

Permiso
visits:read
SDK
visits.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • patientstring

    Id del paciente (pat_…).

  • externalIdstring

Respuesta

200 con un objeto VisitList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Una consulta atendida. Crearla arranca el seguimiento post-consulta del paciente.

    › Ver 12 campos
    • idstring

      Id de la consulta.

    • objectstring
    • patientstring

      Paciente atendido.

    • doctorstringpuede ser null

      Profesional.

    • appointmentstringpuede ser null

      Turno del que salió la consulta.

    • visitedAttimestamp

      Fecha y hora ISO 8601.

    • typestringpuede ser null
    • diagnosisstringpuede ser null
    • notesstringpuede ser null
    • externalIdstringpuede ser null
    • sourceenum

      Valores:pmsmanual

    • createdAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/visits
curl -G https://www.kuida.ar/api/v1/visits \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "vis_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "visit",
      "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
      "doctor": "doc_cm1a2b3c4d5e6f7g8h9i0j",
      "appointment": "apt_cm1a2b3c4d5e6f7g8h9i0j",
      "visitedAt": "2026-10-01T17:30:00.000Z",
      "type": "Consulta",
      "diagnosis": null,
      "notes": null,
      "externalId": "turno-123",
      "source": "pms",
      "createdAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/visits"
}

Crear una solicitud de ingreso

POST/v1/intake_requests

Alguien pide el servicio para un paciente. Kuida registra la solicitud, identifica al paciente y a sus referentes y, si la organización lo configuró, le escribe por WhatsApp para completar lo que falta (missing). Cuando queda completa pasa a ready y se dispara el webhook intake.ready.

Permiso
intake_requests:write
SDK
intake_requests.create
Idempotencia
Acepta Idempotency-Key
Línea de servicio
Requiere la línea de seguimiento de pacientes

Cuerpo

Hace falta al menos un dato del paciente o de un referente (nombre, documento o teléfono).

  • patientobjeto

    Cómo conoce su sistema al paciente. Kuida lo busca por teléfono y después por DNI; si no existe, lo crea.

    › Ver 6 campos
    • phonestring

      Celular con WhatsApp, en cualquier formato; Kuida lo normaliza. Es la identidad principal del paciente.

    • fullNamestring

      Nombre y apellido.

    • dnistring

      Documento, sin puntos.

    • emailemail

      Correo electrónico.

    • externalIdstring

      Id del paciente en su sistema.

    • dateOfBirthfecha

      Fecha ISO 8601 (AAAA-MM-DD).

  • contactsarray de objetos

    Un referente del paciente (familiar, cuidador).

    › Ver 4 campos
    • namestring
    • relationshipstring
    • phonestring
    • emailemail
  • coverageobjeto
    › Ver 3 campos
    • insurerstring

      Obra social o prepaga.

    • planstring
    • memberIdstring

      Número de afiliado.

  • addressstring
  • requestedServicestring
  • summarystring

    Resumen administrativo del pedido, sin contenido clínico.

  • hospitalizedboolean

    Si el paciente está internado hoy.

  • senderobjeto

    Quién pide el servicio.

    › Ver 3 campos
    • namestring
    • emailemail
    • organizationstring

Respuesta

200 con un objeto IntakeRequest. Una solicitud de ingreso: alguien pide el servicio para un paciente y Kuida completa lo que falta.

› Ver los 13 campos de la respuesta
  • idstring

    Id de la solicitud.

  • objectstring
  • statusenum

    new recién llegada · validating Kuida está completando datos por WhatsApp · ready completa · loaded cargada en el sistema de la organización · discarded descartada.

    Valores:newvalidatingreadyloadeddiscarded

  • patientstringpuede ser null

    Paciente, cuando ya se pudo identificar.

  • summarystringpuede ser null
  • missingarray de string

    Datos que todavía faltan para que la solicitud quede lista.

  • dataobjeto

    Los datos de la solicitud tal como los tiene Kuida.

  • discardReasonstringpuede ser null
  • readyAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • loadedAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • closedAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

POST /v1/intake_requests
curl https://www.kuida.ar/api/v1/intake_requests \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "patient": {
    "fullName": "Paciente Demo",
    "dni": "11111111"
  },
  "contacts": [
    {
      "name": "Familiar Demo",
      "relationship": "hija",
      "phone": "+54 9 342 555 0001"
    }
  ],
  "coverage": {
    "insurer": "OSDEMO",
    "memberId": "000123"
  },
  "requestedService": "Internación domiciliaria",
  "summary": "Alta sanatorial prevista para el viernes; requiere enfermería diaria.",
  "hospitalized": true
}'
Respuesta
{
  "id": "int_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "intake_request",
  "status": "new",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "summary": "Pedido de internación domiciliaria",
  "missing": [],
  "data": {},
  "discardReason": null,
  "readyAt": null,
  "loadedAt": null,
  "closedAt": null,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Obtener una solicitud de ingreso

GET/v1/intake_requests/{id}

Devuelve una solicitud con su estado y lo que todavía falta.

Permiso
intake_requests:read
SDK
intake_requests.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto IntakeRequest. Una solicitud de ingreso: alguien pide el servicio para un paciente y Kuida completa lo que falta.

› Ver los 13 campos de la respuesta
  • idstring

    Id de la solicitud.

  • objectstring
  • statusenum

    new recién llegada · validating Kuida está completando datos por WhatsApp · ready completa · loaded cargada en el sistema de la organización · discarded descartada.

    Valores:newvalidatingreadyloadeddiscarded

  • patientstringpuede ser null

    Paciente, cuando ya se pudo identificar.

  • summarystringpuede ser null
  • missingarray de string

    Datos que todavía faltan para que la solicitud quede lista.

  • dataobjeto

    Los datos de la solicitud tal como los tiene Kuida.

  • discardReasonstringpuede ser null
  • readyAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • loadedAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • closedAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

GET /v1/intake_requests/{id}
curl https://www.kuida.ar/api/v1/intake_requests/int_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "int_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "intake_request",
  "status": "new",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "summary": "Pedido de internación domiciliaria",
  "missing": [],
  "data": {},
  "discardReason": null,
  "readyAt": null,
  "loadedAt": null,
  "closedAt": null,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Listar solicitudes de ingreso

GET/v1/intake_requests

Solicitudes de la organización, de la más nueva a la más vieja.

Permiso
intake_requests:read
SDK
intake_requests.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • statusenum

    Valores:newvalidatingreadyloadeddiscarded

  • patientstring

Respuesta

200 con un objeto IntakeRequestList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Una solicitud de ingreso: alguien pide el servicio para un paciente y Kuida completa lo que falta.

    › Ver 13 campos
    • idstring

      Id de la solicitud.

    • objectstring
    • statusenum

      new recién llegada · validating Kuida está completando datos por WhatsApp · ready completa · loaded cargada en el sistema de la organización · discarded descartada.

      Valores:newvalidatingreadyloadeddiscarded

    • patientstringpuede ser null

      Paciente, cuando ya se pudo identificar.

    • summarystringpuede ser null
    • missingarray de string

      Datos que todavía faltan para que la solicitud quede lista.

    • dataobjeto

      Los datos de la solicitud tal como los tiene Kuida.

    • discardReasonstringpuede ser null
    • readyAttimestamppuede ser null

      Fecha y hora ISO 8601.

    • loadedAttimestamppuede ser null

      Fecha y hora ISO 8601.

    • closedAttimestamppuede ser null

      Fecha y hora ISO 8601.

    • createdAttimestamp

      Fecha y hora ISO 8601.

    • updatedAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/intake_requests
curl -G https://www.kuida.ar/api/v1/intake_requests \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "int_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "intake_request",
      "status": "new",
      "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
      "summary": "Pedido de internación domiciliaria",
      "missing": [],
      "data": {},
      "discardReason": null,
      "readyAt": null,
      "loadedAt": null,
      "closedAt": null,
      "createdAt": "2026-10-01T17:30:00.000Z",
      "updatedAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/intake_requests"
}

Registrar un tratamiento

POST/v1/treatments

Registra un tratamiento indicado al paciente. Queda en su ficha y el agente lo tiene en cuenta en la conversación. Kuida no envía recordatorios de toma de medicación.

Permiso
treatments:write
SDK
treatments.create
Idempotencia
Acepta Idempotency-Key
Línea de servicio
Requiere la línea de seguimiento de pacientes

Cuerpo

  • patientstring u objetoobligatorio

    Un paciente: su id de Kuida (pat_…) o los datos con que lo conoce su sistema.

    › Ver 6 campos
    • phonestring

      Celular con WhatsApp, en cualquier formato; Kuida lo normaliza. Es la identidad principal del paciente.

    • fullNamestring

      Nombre y apellido.

    • dnistring

      Documento, sin puntos.

    • emailemail

      Correo electrónico.

    • externalIdstring

      Id del paciente en su sistema.

    • dateOfBirthfecha

      Fecha ISO 8601 (AAAA-MM-DD).

  • namestringobligatorio
  • kindenum

    Default medication.

    Valores:medicationtherapydietstudylabworklifestyle

  • dosagestring
  • frequencystring
  • instructionsstring
  • startDatetimestamp

    Fecha y hora ISO 8601.

  • endDatetimestamp

    Fecha y hora ISO 8601.

Respuesta

200 con un objeto Treatment. Un tratamiento indicado al paciente.

› Ver los 13 campos de la respuesta
  • idstring

    Id del tratamiento.

  • objectstring
  • patientstring

    Paciente.

  • kindenum

    Valores:medicationtherapydietstudylabworklifestyle

  • namestring
  • dosagestringpuede ser null
  • frequencystringpuede ser null
  • instructionsstringpuede ser null
  • startDatetimestamppuede ser null

    Fecha y hora ISO 8601.

  • endDatetimestamppuede ser null

    Fecha y hora ISO 8601.

  • activeboolean
  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

POST /v1/treatments
curl https://www.kuida.ar/api/v1/treatments \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "name": "Enalapril 10 mg",
  "dosage": "1 comprimido",
  "frequency": "cada 12 horas",
  "startDate": "2026-10-05T00:00:00-03:00"
}'
Respuesta
{
  "id": "trt_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "treatment",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "kind": "medication",
  "name": "Enalapril 10 mg",
  "dosage": "10 mg",
  "frequency": "cada 12 horas",
  "instructions": null,
  "startDate": "2026-10-01T17:30:00.000Z",
  "endDate": null,
  "active": true,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Obtener un tratamiento

GET/v1/treatments/{id}

Devuelve un tratamiento por su id.

Permiso
treatments:read
SDK
treatments.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto Treatment. Un tratamiento indicado al paciente.

› Ver los 13 campos de la respuesta
  • idstring

    Id del tratamiento.

  • objectstring
  • patientstring

    Paciente.

  • kindenum

    Valores:medicationtherapydietstudylabworklifestyle

  • namestring
  • dosagestringpuede ser null
  • frequencystringpuede ser null
  • instructionsstringpuede ser null
  • startDatetimestamppuede ser null

    Fecha y hora ISO 8601.

  • endDatetimestamppuede ser null

    Fecha y hora ISO 8601.

  • activeboolean
  • createdAttimestamp

    Fecha y hora ISO 8601.

  • updatedAttimestamp

    Fecha y hora ISO 8601.

GET /v1/treatments/{id}
curl https://www.kuida.ar/api/v1/treatments/trt_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "trt_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "treatment",
  "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
  "kind": "medication",
  "name": "Enalapril 10 mg",
  "dosage": "10 mg",
  "frequency": "cada 12 horas",
  "instructions": null,
  "startDate": "2026-10-01T17:30:00.000Z",
  "endDate": null,
  "active": true,
  "createdAt": "2026-10-01T17:30:00.000Z",
  "updatedAt": "2026-10-01T17:30:00.000Z"
}

Listar tratamientos

GET/v1/treatments

Tratamientos registrados, del más nuevo al más viejo.

Permiso
treatments:read
SDK
treatments.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • patientstring
  • activeenum

    Valores:truefalse

Respuesta

200 con un objeto TreatmentList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Un tratamiento indicado al paciente.

    › Ver 13 campos
    • idstring

      Id del tratamiento.

    • objectstring
    • patientstring

      Paciente.

    • kindenum

      Valores:medicationtherapydietstudylabworklifestyle

    • namestring
    • dosagestringpuede ser null
    • frequencystringpuede ser null
    • instructionsstringpuede ser null
    • startDatetimestamppuede ser null

      Fecha y hora ISO 8601.

    • endDatetimestamppuede ser null

      Fecha y hora ISO 8601.

    • activeboolean
    • createdAttimestamp

      Fecha y hora ISO 8601.

    • updatedAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/treatments
curl -G https://www.kuida.ar/api/v1/treatments \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "trt_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "treatment",
      "patient": "pat_cm1a2b3c4d5e6f7g8h9i0j",
      "kind": "medication",
      "name": "Enalapril 10 mg",
      "dosage": "10 mg",
      "frequency": "cada 12 horas",
      "instructions": null,
      "startDate": "2026-10-01T17:30:00.000Z",
      "endDate": null,
      "active": true,
      "createdAt": "2026-10-01T17:30:00.000Z",
      "updatedAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/treatments"
}

Enviar eventos

POST/v1/events

La puerta genérica: su sistema avisa lo que pasó con el sobre común y Kuida reacciona. Acepta un evento o un lote de hasta 100. Cada evento se procesa por separado y trae su propio resultado; el status HTTP es 200 si al menos uno se aceptó. Si ninguno entró, responde el error de siempre (400 si todos fallaron por esquema, 500 si fallaron al procesarse) y además results con el detalle de cada evento. Los recursos (/v1/visits, /v1/appointments, …) hacen lo mismo con una forma más cómoda.

Permiso
events:write
SDK
events.create
Idempotencia
Acepta Idempotency-Key
Línea de servicio
Requiere la línea de seguimiento de pacientes

Cuerpo

Un evento, un array de hasta 100 o { events: [...] }.

  • idstringobligatorio

    Su id del evento. Es la clave de idempotencia: reenviar el mismo id no repite nada.

  • schemaVersionnumber

    Versión del esquema del evento. Siempre 1 en v1.

    Default: 1

  • occurredAttimestamp

    Cuándo pasó. Default: ahora.

  • sourceobjeto

    Qué sistema lo emite, para el registro.

    › Ver 2 campos
    • systemstring
    • versionstring
  • typeenumobligatorio

    Tipo de evento. Define la forma de data.

    Valores:intake.requestedpatient.upsertedappointment.createdappointment.rescheduledappointment.cancelledvisit.completedtreatment.prescribedorder.issued

  • dataobjetoobligatorio

    Su forma depende de type: ver el catálogo de eventos.

Respuesta

200 con un objeto EventBatchResponse. Un resultado por evento, en el mismo orden.

› Ver los 2 campos de la respuesta
  • objectstring
  • resultsarray de objetos
    › Ver 6 campos
    • idstring

      El id que envió.

    • acceptedboolean
    • statusenum

      Valores:processedduplicateunhandledinvalidfailed

    • eventstringpuede ser null

      Id del evento en Kuida (evt_…).

    • resultobjetopuede ser null
      › Ver 2 campos
      • objectstring
      • idstring
    • errorstringpuede ser null
POST /v1/events
curl https://www.kuida.ar/api/v1/events \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "turno-123-atendido",
  "type": "visit.completed",
  "occurredAt": "2026-10-05T10:45:00-03:00",
  "source": {
    "system": "mi-sistema",
    "version": "3.2"
  },
  "data": {
    "patient": {
      "phone": "+54 9 342 555 0000",
      "fullName": "Paciente Demo",
      "dni": "11111111"
    },
    "visit": {
      "visitedAt": "2026-10-05T10:45:00-03:00",
      "externalId": "turno-123"
    }
  }
}'
Respuesta
{
  "object": "event_batch",
  "results": [
    {
      "id": "turno-123-atendido",
      "accepted": true,
      "status": "processed",
      "event": "evt_cm1a2b3c4d5e6f7g8h9i0j",
      "result": {
        "object": "visit",
        "id": "vis_cm1a2b3c4d5e6f7g8h9i0j"
      },
      "error": null
    }
  ]
}

Obtener un evento

GET/v1/events/{id}

Un evento que entró a Kuida, con su estado y lo que produjo.

Permiso
events:read
SDK
events.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto Event. Un evento que entró a Kuida, con su resultado.

› Ver los 12 campos de la respuesta
  • idstring

    Id del evento en Kuida.

  • objectstring
  • typeenum

    Valores:intake.requestedpatient.upsertedappointment.createdappointment.rescheduledappointment.cancelledvisit.completedtreatment.prescribedorder.issued

  • sourceenum

    Por dónde entró.

    Valores:apipmsemailtoolmanualimport

  • sourceRefstring

    Identidad del evento en su fuente. Para la API, el id que envió.

  • statusenum

    processed Kuida hizo lo suyo · unhandled guardado, sin efecto todavía · failed falló, reintente con el mismo id · duplicate · received en curso.

    Valores:receivedprocessedfailedduplicateunhandled

  • errorstringpuede ser null
  • resultobjetopuede ser null

    Lo que produjo el evento ({ object: "visit", id: "vis_…" }).

    › Ver 2 campos
    • objectstring
    • idstring
  • dataobjeto
  • occurredAttimestamp

    Fecha y hora ISO 8601.

  • receivedAttimestamp

    Fecha y hora ISO 8601.

  • processedAttimestamppuede ser null

    Fecha y hora ISO 8601.

GET /v1/events/{id}
curl https://www.kuida.ar/api/v1/events/evt_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "evt_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "event",
  "type": "intake.requested",
  "source": "api",
  "sourceRef": "turno-123-atendido",
  "status": "received",
  "error": null,
  "result": {
    "object": "visit",
    "id": "vis_cm1a2b3c4d5e6f7g8h9i0j"
  },
  "data": {},
  "occurredAt": "2026-10-01T17:30:00.000Z",
  "receivedAt": "2026-10-01T17:30:00.000Z",
  "processedAt": null
}

Listar eventos

GET/v1/events

Todo lo que entró a Kuida para la organización (por la API, el conector, el correo), del más nuevo al más viejo. Sirve para depurar una integración: filtre por status=failed.

Permiso
events:read
SDK
events.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • typeenum

    Valores:intake.requestedpatient.upsertedappointment.createdappointment.rescheduledappointment.cancelledvisit.completedtreatment.prescribedorder.issued

  • statusenum

    Valores:receivedprocessedfailedduplicateunhandled

  • sourceenum

    Valores:apipmsemailtoolmanualimport

Respuesta

200 con un objeto EventList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Un evento que entró a Kuida, con su resultado.

    › Ver 12 campos
    • idstring

      Id del evento en Kuida.

    • objectstring
    • typeenum

      Valores:intake.requestedpatient.upsertedappointment.createdappointment.rescheduledappointment.cancelledvisit.completedtreatment.prescribedorder.issued

    • sourceenum

      Por dónde entró.

      Valores:apipmsemailtoolmanualimport

    • sourceRefstring

      Identidad del evento en su fuente. Para la API, el id que envió.

    • statusenum

      processed Kuida hizo lo suyo · unhandled guardado, sin efecto todavía · failed falló, reintente con el mismo id · duplicate · received en curso.

      Valores:receivedprocessedfailedduplicateunhandled

    • errorstringpuede ser null
    • resultobjetopuede ser null

      Lo que produjo el evento ({ object: "visit", id: "vis_…" }).

      › Ver 2 campos
      • objectstring
      • idstring
    • dataobjeto
    • occurredAttimestamp

      Fecha y hora ISO 8601.

    • receivedAttimestamp

      Fecha y hora ISO 8601.

    • processedAttimestamppuede ser null

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/events
curl -G https://www.kuida.ar/api/v1/events \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "evt_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "event",
      "type": "intake.requested",
      "source": "api",
      "sourceRef": "turno-123-atendido",
      "status": "received",
      "error": null,
      "result": {
        "object": "visit",
        "id": "vis_cm1a2b3c4d5e6f7g8h9i0j"
      },
      "data": {},
      "occurredAt": "2026-10-01T17:30:00.000Z",
      "receivedAt": "2026-10-01T17:30:00.000Z",
      "processedAt": null
    }
  ],
  "hasMore": false,
  "url": "/v1/events"
}

Crear un endpoint de webhooks

POST/v1/webhook_endpoints

Registra una URL de su sistema para recibir eventos de Kuida. La respuesta trae el secret para verificar la firma: guárdelo, no se vuelve a mostrar.

Permiso
webhooks:write
SDK
webhook_endpoints.create
Idempotencia
Acepta Idempotency-Key

Cuerpo

  • urlurlobligatorio

    URL https de su sistema.

  • enabledEventsarray de enumobligatorio

    Qué eventos quiere recibir. * = todos.

    Valores:intake.requestedpatient.upsertedappointment.createdappointment.rescheduledappointment.cancelledvisit.completedtreatment.prescribedorder.issuedintake.createdintake.readyconversation.handoffpatient.silentwebhook.ping*

  • descriptionstring

Respuesta

200 con un objeto WebhookEndpoint. Una URL de su sistema a la que Kuida le avisa lo que pasa.

› Ver los 10 campos de la respuesta
  • idstring

    Id del endpoint.

  • objectstring
  • urlstring
  • descriptionstringpuede ser null
  • enabledEventsarray de string

    Tipos de evento que recibe. * = todos.

  • statusenum

    Valores:enableddisabled

  • secretstring

    Secreto para verificar la firma (whsec_…). Solo viene en la respuesta de creación.

  • lastDeliveredAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • lastErrorobjetopuede ser null
    › Ver 2 campos
    • attimestamp

      Fecha y hora ISO 8601.

    • messagestring
  • createdAttimestamp

    Fecha y hora ISO 8601.

POST /v1/webhook_endpoints
curl https://www.kuida.ar/api/v1/webhook_endpoints \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://sistema.example/kuida/webhooks",
  "enabledEvents": [
    "intake.ready",
    "intake.created"
  ],
  "description": "Sistema de admisión"
}'
Respuesta
{
  "id": "we_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "webhook_endpoint",
  "url": "https://sistema.example/kuida/webhooks",
  "description": "Sistema de admisión",
  "enabledEvents": [
    "intake.ready",
    "intake.created"
  ],
  "status": "enabled",
  "secret": "whsec_…",
  "lastDeliveredAt": null,
  "lastError": null,
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Obtener un endpoint de webhooks

GET/v1/webhook_endpoints/{id}

Devuelve un endpoint, sin el secreto.

Permiso
webhooks:read
SDK
webhook_endpoints.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto WebhookEndpoint. Una URL de su sistema a la que Kuida le avisa lo que pasa.

› Ver los 10 campos de la respuesta
  • idstring

    Id del endpoint.

  • objectstring
  • urlstring
  • descriptionstringpuede ser null
  • enabledEventsarray de string

    Tipos de evento que recibe. * = todos.

  • statusenum

    Valores:enableddisabled

  • secretstring

    Secreto para verificar la firma (whsec_…). Solo viene en la respuesta de creación.

  • lastDeliveredAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • lastErrorobjetopuede ser null
    › Ver 2 campos
    • attimestamp

      Fecha y hora ISO 8601.

    • messagestring
  • createdAttimestamp

    Fecha y hora ISO 8601.

GET /v1/webhook_endpoints/{id}
curl https://www.kuida.ar/api/v1/webhook_endpoints/we_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "we_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "webhook_endpoint",
  "url": "https://sistema.example/kuida/webhooks",
  "description": "Sistema de admisión",
  "enabledEvents": [
    "intake.ready",
    "intake.created"
  ],
  "status": "enabled",
  "secret": "whsec_…",
  "lastDeliveredAt": null,
  "lastError": null,
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Actualizar un endpoint de webhooks

PATCH/v1/webhook_endpoints/{id}

Cambia URL, eventos o descripción, o lo pausa con disabled: true.

Permiso
webhooks:write
SDK
webhook_endpoints.update

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Cuerpo

  • urlurl
  • enabledEventsarray de enum

    Valores:intake.requestedpatient.upsertedappointment.createdappointment.rescheduledappointment.cancelledvisit.completedtreatment.prescribedorder.issuedintake.createdintake.readyconversation.handoffpatient.silentwebhook.ping*

  • descriptionstring
  • disabledboolean

    true pausa los envíos sin borrar el endpoint.

Respuesta

200 con un objeto WebhookEndpoint. Una URL de su sistema a la que Kuida le avisa lo que pasa.

› Ver los 10 campos de la respuesta
  • idstring

    Id del endpoint.

  • objectstring
  • urlstring
  • descriptionstringpuede ser null
  • enabledEventsarray de string

    Tipos de evento que recibe. * = todos.

  • statusenum

    Valores:enableddisabled

  • secretstring

    Secreto para verificar la firma (whsec_…). Solo viene en la respuesta de creación.

  • lastDeliveredAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • lastErrorobjetopuede ser null
    › Ver 2 campos
    • attimestamp

      Fecha y hora ISO 8601.

    • messagestring
  • createdAttimestamp

    Fecha y hora ISO 8601.

PATCH /v1/webhook_endpoints/{id}
curl -X PATCH https://www.kuida.ar/api/v1/webhook_endpoints/we_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…" \
  -H "Content-Type: application/json" \
  -d '{
  "enabledEvents": [
    "*"
  ]
}'
Respuesta
{
  "id": "we_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "webhook_endpoint",
  "url": "https://sistema.example/kuida/webhooks",
  "description": "Sistema de admisión",
  "enabledEvents": [
    "intake.ready",
    "intake.created"
  ],
  "status": "enabled",
  "secret": "whsec_…",
  "lastDeliveredAt": null,
  "lastError": null,
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Borrar un endpoint de webhooks

DELETE/v1/webhook_endpoints/{id}

Lo borra con su historial de entregas. Las entregas pendientes se cancelan.

Permiso
webhooks:write
SDK
webhook_endpoints.delete

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto DeletedObject. Confirmación de un borrado.

› Ver los 3 campos de la respuesta
  • idstring
  • objectstring
  • deletedstring
DELETE /v1/webhook_endpoints/{id}
curl -X DELETE https://www.kuida.ar/api/v1/webhook_endpoints/we_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "…",
  "object": "…",
  "deleted": true
}

Listar endpoints de webhooks

GET/v1/webhook_endpoints

Los endpoints de la organización, del más nuevo al más viejo.

Permiso
webhooks:read
SDK
webhook_endpoints.list

Parámetros de consulta

  • limitinteger

    Default: 10

  • startingAfterstring
  • endingBeforestring

Respuesta

200 con un objeto WebhookEndpointList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Una URL de su sistema a la que Kuida le avisa lo que pasa.

    › Ver 10 campos
    • idstring

      Id del endpoint.

    • objectstring
    • urlstring
    • descriptionstringpuede ser null
    • enabledEventsarray de string

      Tipos de evento que recibe. * = todos.

    • statusenum

      Valores:enableddisabled

    • secretstring

      Secreto para verificar la firma (whsec_…). Solo viene en la respuesta de creación.

    • lastDeliveredAttimestamppuede ser null

      Fecha y hora ISO 8601.

    • lastErrorobjetopuede ser null
      › Ver 2 campos
      • attimestamp

        Fecha y hora ISO 8601.

      • messagestring
    • createdAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/webhook_endpoints
curl -G https://www.kuida.ar/api/v1/webhook_endpoints \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "we_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "webhook_endpoint",
      "url": "https://sistema.example/kuida/webhooks",
      "description": "Sistema de admisión",
      "enabledEvents": [
        "intake.ready",
        "intake.created"
      ],
      "status": "enabled",
      "secret": "whsec_…",
      "lastDeliveredAt": null,
      "lastError": null,
      "createdAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/webhook_endpoints"
}

Mandar un evento de prueba

POST/v1/webhook_endpoints/{id}/ping

Encola un evento webhook.ping firmado hacia el endpoint, con los mismos reintentos que uno real. Siga la entrega con GET /v1/webhook_deliveries/{id}.

Permiso
webhooks:write
SDK
webhook_endpoints.ping
Idempotencia
Acepta Idempotency-Key

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto WebhookDelivery. Un envío de webhook con sus reintentos.

› Ver los 12 campos de la respuesta
  • idstring

    Id de la entrega.

  • objectstring
  • webhookEndpointstring

    Endpoint destino.

  • eventTypestring
  • statusenum

    pending en curso o esperando reintento · succeeded su endpoint respondió 2xx · failed se agotaron los reintentos.

    Valores:pendingsucceededfailed

  • attemptsinteger
  • lastStatusCodeintegerpuede ser null
  • lastErrorstringpuede ser null
  • nextAttemptAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • deliveredAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • payloadobjeto

    El cuerpo exacto que se envió.

  • createdAttimestamp

    Fecha y hora ISO 8601.

POST /v1/webhook_endpoints/{id}/ping
curl -X POST https://www.kuida.ar/api/v1/webhook_endpoints/we_cm1a2b3c4d5e6f7g8h9i0j/ping \
  -H "Authorization: Bearer kd_test_…" \
  -H "Idempotency-Key: $(uuidgen)"
Respuesta
{
  "id": "whd_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "webhook_delivery",
  "webhookEndpoint": "we_cm1a2b3c4d5e6f7g8h9i0j",
  "eventType": "intake.ready",
  "status": "succeeded",
  "attempts": 1,
  "lastStatusCode": 200,
  "lastError": null,
  "nextAttemptAt": null,
  "deliveredAt": "2026-10-01T17:30:01.000Z",
  "payload": {
    "id": "whd_cm1a2b3c4d5e6f7g8h9i0j",
    "object": "event",
    "type": "intake.ready",
    "apiVersion": "2026-09-28",
    "livemode": false,
    "occurredAt": "2026-10-01T17:30:00.000Z",
    "ref": "cm1a2b3c4d5e6f7g8h9i0j",
    "data": {}
  },
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Listar entregas de webhooks

GET/v1/webhook_deliveries

Cada envío a sus endpoints con sus intentos. Filtre por endpoint o por status=failed para ver qué no llegó.

Permiso
webhooks:read
SDK
webhook_deliveries.list

Parámetros de consulta

  • limitinteger

    Cantidad de objetos a devolver, entre 1 y 100. Default 10.

    Default: 10

  • startingAfterstring

    Cursor: id del último objeto de la página anterior. Devuelve los siguientes.

  • endingBeforestring

    Cursor: id del primer objeto de la página actual. Devuelve los anteriores.

  • webhookEndpointstring

    Id del endpoint (we_…).

  • statusenum

    Valores:pendingsucceededfailed

Respuesta

200 con un objeto WebhookDeliveryList. Página de resultados. Siga con startingAfter = id del último.

› Ver los 4 campos de la respuesta
  • objectstring
  • dataarray de objetos

    Un envío de webhook con sus reintentos.

    › Ver 12 campos
    • idstring

      Id de la entrega.

    • objectstring
    • webhookEndpointstring

      Endpoint destino.

    • eventTypestring
    • statusenum

      pending en curso o esperando reintento · succeeded su endpoint respondió 2xx · failed se agotaron los reintentos.

      Valores:pendingsucceededfailed

    • attemptsinteger
    • lastStatusCodeintegerpuede ser null
    • lastErrorstringpuede ser null
    • nextAttemptAttimestamppuede ser null

      Fecha y hora ISO 8601.

    • deliveredAttimestamppuede ser null

      Fecha y hora ISO 8601.

    • payloadobjeto

      El cuerpo exacto que se envió.

    • createdAttimestamp

      Fecha y hora ISO 8601.

  • hasMoreboolean

    Si hay más objetos después de esta página.

  • urlstring
GET /v1/webhook_deliveries
curl -G https://www.kuida.ar/api/v1/webhook_deliveries \
  -H "Authorization: Bearer kd_test_…" \
  -d limit=3
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "whd_cm1a2b3c4d5e6f7g8h9i0j",
      "object": "webhook_delivery",
      "webhookEndpoint": "we_cm1a2b3c4d5e6f7g8h9i0j",
      "eventType": "intake.ready",
      "status": "succeeded",
      "attempts": 1,
      "lastStatusCode": 200,
      "lastError": null,
      "nextAttemptAt": null,
      "deliveredAt": "2026-10-01T17:30:01.000Z",
      "payload": {
        "id": "whd_cm1a2b3c4d5e6f7g8h9i0j",
        "object": "event",
        "type": "intake.ready",
        "apiVersion": "2026-09-28",
        "livemode": false,
        "occurredAt": "2026-10-01T17:30:00.000Z",
        "ref": "cm1a2b3c4d5e6f7g8h9i0j",
        "data": {}
      },
      "createdAt": "2026-10-01T17:30:00.000Z"
    }
  ],
  "hasMore": false,
  "url": "/v1/webhook_deliveries"
}

Obtener una entrega de webhook

GET/v1/webhook_deliveries/{id}

Una entrega con su estado, intentos y el cuerpo enviado.

Permiso
webhooks:read
SDK
webhook_deliveries.retrieve

Parámetros de ruta

  • idstringobligatorio

    Id del objeto.

Respuesta

200 con un objeto WebhookDelivery. Un envío de webhook con sus reintentos.

› Ver los 12 campos de la respuesta
  • idstring

    Id de la entrega.

  • objectstring
  • webhookEndpointstring

    Endpoint destino.

  • eventTypestring
  • statusenum

    pending en curso o esperando reintento · succeeded su endpoint respondió 2xx · failed se agotaron los reintentos.

    Valores:pendingsucceededfailed

  • attemptsinteger
  • lastStatusCodeintegerpuede ser null
  • lastErrorstringpuede ser null
  • nextAttemptAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • deliveredAttimestamppuede ser null

    Fecha y hora ISO 8601.

  • payloadobjeto

    El cuerpo exacto que se envió.

  • createdAttimestamp

    Fecha y hora ISO 8601.

GET /v1/webhook_deliveries/{id}
curl https://www.kuida.ar/api/v1/webhook_deliveries/whd_cm1a2b3c4d5e6f7g8h9i0j \
  -H "Authorization: Bearer kd_test_…"
Respuesta
{
  "id": "whd_cm1a2b3c4d5e6f7g8h9i0j",
  "object": "webhook_delivery",
  "webhookEndpoint": "we_cm1a2b3c4d5e6f7g8h9i0j",
  "eventType": "intake.ready",
  "status": "succeeded",
  "attempts": 1,
  "lastStatusCode": 200,
  "lastError": null,
  "nextAttemptAt": null,
  "deliveredAt": "2026-10-01T17:30:01.000Z",
  "payload": {
    "id": "whd_cm1a2b3c4d5e6f7g8h9i0j",
    "object": "event",
    "type": "intake.ready",
    "apiVersion": "2026-09-28",
    "livemode": false,
    "occurredAt": "2026-10-01T17:30:00.000Z",
    "ref": "cm1a2b3c4d5e6f7g8h9i0j",
    "data": {}
  },
  "createdAt": "2026-10-01T17:30:00.000Z"
}

Los errores de todas las operaciones tienen el mismo formato y un código estable: ver Errores.