We do not handle life-threatening emergencies: call 112.

+34 611 673 280

DevelopersAPI v1

Reference

API reference

Every endpoint, parameter, body, response and schema of API v1, generated from its OpenAPI specification.

This reference is generated automatically from the OpenAPI 3.1 specification published by the API itself, so it's always in step with what is deployed. The curl examples point to the sandbox; in production, change the base URL and the key.

Every successful response is wrapped in the same envelope: { "status": 200, "data": { … }, "message": "…" }, and paginated lists carry data.items and data.pagination. Errors follow the RFC 9457 format.

Version
1.0.0 · OpenAPI 3.1.0
Base URL
  • https://api.saludenruta.es/api/integrations/v1 — Production
  • https://sandbox-api.saludenruta.es/api/integrations/v1 — Test (sandbox)
Authentication

X-Api-Key (header) — Clave del proveedor. Producción: srd_live_…; pruebas (sandbox): srd_test_…

Provider Integration API (v1)

Avisos, catálogo, informes y sandbox

GET/catalog

Tipos de servicio permitidos y aseguradoras finales admitidas

Ámbito: visits:write.

Responses

  • 200Successobject
    • statusnumberoptional
      Example
      200
    • Show fields
      • providerTypestringrequired
        Values
        INSURERINTERMEDIARYPRIVATEOTHER
      • requiresExternalRefbooleanrequired

        Si externalRef es obligatorio

      • Tipos de servicio con línea en su tarifa vigente (o todos los activos sin tarifa)

        Show fields
        • idstring (uuid)required
        • codestringrequired
          Example
          GENERAL_CONSULTATION
        • namestringrequired
          Example
          Consulta general
        • requiredProfessionalstringrequired
          Values
          DOCTORNURSE
      • Aseguradoras finales admitidas (solo intermediarios)

        Show fields
        • idstring (uuid)required
        • namestringrequired
          Example
          Sanitas
    • messagestringoptional
      Example
      Operación realizada correctamente
  • 401API key ausente, inválida, revocada o caducadaProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 429Límite de peticiones de la clave superado (Retry-After)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/catalog" \
  -H "X-Api-Key: $SERAD_API_KEY"
Response 200
{
  "status": 200,
  "data": {
    "providerType": "INSURER",
    "requiresExternalRef": true,
    "serviceTypes": [
      {
        "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
        "code": "GENERAL_CONSULTATION",
        "name": "Consulta general",
        "requiredProfessional": "DOCTOR"
      }
    ],
    "insurers": [
      {
        "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
        "name": "Sanitas"
      }
    ]
  },
  "message": "Operación realizada correctamente"
}

GET/visits

Lista avisos del proveedor (filtro por externalRef, estado, fechas)

Ámbito: visits:read. ?externalRef=EXP-… busca por nº de expediente exacto.

Parameters

NameInTypeDescription
pagequerynumber

Número de página (1-indexado)

limitquerynumber

Elementos por página

searchquerystring

Búsqueda libre (nombre/email según el recurso)

sortByquerystring

Campo de ordenación

sortOrderquerystringASC · DESC—
statusqueryarray<string>

Uno o varios estados

priorityquerystringURGENT · NORMAL · SCHEDULED—
dateFromquerystring

Día de servicio desde (incl.)

dateToquerystring

Día de servicio hasta (incl.)

externalRefquerystring

Nº de expediente exacto

serviceTypeIdquerystring (uuid)—

Responses

  • 200Successobject
    • statusnumberoptional
      Example
      200
    • dataobjectoptional
      Show fields
      • Show fields
        • idstring (uuid)required
        • codestringrequired
          Example
          AV-000123
        • statusstringrequired
          Values
          PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
        • statusLabelstringrequired
          Example
          Unidad en camino
        • prioritystringrequired
          Values
          URGENTNORMALSCHEDULED
        • originstringrequired
          Values
          INTRANETPROVIDER_PORTALPROVIDER_API
        • externalRefstringoptionalnullable
          Example
          EXP-2026-004512
        • serviceTypeProviderVisitServiceTypeDtorequired
          Show fields
          • idstring (uuid)required
          • codestringrequired
            Example
            GENERAL_CONSULTATION
          • namestringrequired
            Example
            Consulta general
        • requiredProfessionalstringrequired
          Values
          DOCTORNURSE
        • insurerobjectoptionalnullable

          Aseguradora final

        • patientNamestringrequired

          Nombre del paciente que envió

          Example
          María García López
        • addressobjectrequired

          Domicilio (sin coordenadas ni indicaciones de acceso)

        • serviceDatestringrequired
          Example
          2026-09-25
        • scheduledFromstring (date-time)optionalnullable
        • scheduledTostring (date-time)optionalnullable

          Fin de la cita, calculado: inicio + tiempo estimado

        • estimatedMinutesnumberrequired

          Tiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)

          Example
          60
        • milestonesProviderVisitMilestonesDtorequired
          Show fields
          • requestedAtstring (date-time)required
          • assignedAtstring (date-time)optionalnullable
          • departedAtstring (date-time)optionalnullable
          • arrivedAtstring (date-time)optionalnullable
          • finishedAtstring (date-time)optionalnullable
          • cancelledAtstring (date-time)optionalnullable
          • invoicedAtstring (date-time)optionalnullable
        • unitProviderVisitUnitDtooptionalnullable

          Solo el tipo de unidad, desde la asignación

          Show fields
          • typestringrequired
            Values
            MEDICALNURSING
          • labelstringrequired

            Nunca nombres ni matrículas

            Example
            Unidad médica
        • outcomestringoptionalnullable
          Values
          ATTENDEDPATIENT_ABSENTREFERRED_HOSPITALREFUSEDCANCELLED
        • cancellationReasonstringoptionalnullable
        • cancelledWithChargebooleanrequired
        • cancellablebooleanrequired

          Si el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)

        • reportAvailablebooleanrequired

          Si hay informe asistencial compartido y descargable

        • invoiceIdstring (uuid)optionalnullable
        • createdAtstring (date-time)required
        • updatedAtstring (date-time)required
      • paginationobjectoptional
        Show fields
        • pagenumberoptional
          Example
          1
        • limitnumberoptional
          Example
          20
        • totalItemsnumberoptional
          Example
          134
        • totalPagesnumberoptional
          Example
          7
    • messagestringoptional
      Example
      Operación realizada correctamente
  • 401API key ausente, inválida, revocada o caducadaProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 429Límite de peticiones de la clave superado (Retry-After)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits" \
  -H "X-Api-Key: $SERAD_API_KEY"
Response 200
{
  "status": 200,
  "data": {
    "items": [
      {
        "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
        "code": "AV-000123",
        "status": "PENDING",
        "statusLabel": "Unidad en camino",
        "priority": "URGENT",
        "origin": "INTRANET",
        "externalRef": "EXP-2026-004512",
        "serviceType": {
          "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
          "code": "GENERAL_CONSULTATION",
          "name": "Consulta general"
        },
        "requiredProfessional": "DOCTOR",
        "insurer": {},
        "patientName": "María García López",
        "address": {},
        "serviceDate": "2026-09-25",
        "scheduledFrom": "2026-09-25T09:30:00.000Z",
        "scheduledTo": "2026-09-25T09:30:00.000Z",
        "estimatedMinutes": 60,
        "milestones": {
          "requestedAt": "2026-09-25T09:30:00.000Z",
          "assignedAt": "2026-09-25T09:30:00.000Z",
          "departedAt": "2026-09-25T09:30:00.000Z",
          "arrivedAt": "2026-09-25T09:30:00.000Z",
          "finishedAt": "2026-09-25T09:30:00.000Z",
          "cancelledAt": "2026-09-25T09:30:00.000Z",
          "invoicedAt": "2026-09-25T09:30:00.000Z"
        },
        "unit": {
          "type": "MEDICAL",
          "label": "Unidad médica"
        },
        "outcome": "ATTENDED",
        "cancellationReason": "string",
        "cancelledWithCharge": true,
        "cancellable": true,
        "reportAvailable": true,
        "invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
        "createdAt": "2026-09-25T09:30:00.000Z",
        "updatedAt": "2026-09-25T09:30:00.000Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "totalItems": 134,
      "totalPages": 7
    }
  },
  "message": "Operación realizada correctamente"
}

POST/visits

Crea un aviso

Ámbito: visits:write. Con Idempotency-Key (recomendado), repetir la petición con la misma clave y el mismo cuerpo durante 24 h devuelve el mismo aviso (200, cabecera Idempotent-Replayed: true); con otro cuerpo, 409. El paciente se identifica por documento y se reutiliza si ya existe. externalRef es obligatorio si el proveedor lo exige.

Parameters

NameInTypeDescription
X-Sandbox-Simulationheaderstring

Solo sandbox. manual: el aviso no avanza solo; muévelo con POST /sandbox/visits/{id}/advance

Idempotency-Keyheaderstring

Identificador único de la operación en tu sistema (máx. 200 caracteres)

Request body ProviderCreateVisitDto

  • patientIdstring (uuid)optional

    Paciente de un aviso anterior de este proveedor (GET /client/patients). Si llega, patient no hace falta

  • Datos del paciente. Obligatorio salvo que se indique patientId

    Show fields
    • firstNamestringrequired
      Example
      María
    • lastNamestringrequired
      Example
      García López
    • documentTypestringoptional
      Values
      DNINIEPASSPORTNONE
      Default
      NONE
    • documentNumberstringoptional

      Obligatorio salvo documentType NONE

      Example
      12345678Z
    • birthDatestringoptional
      Example
      1948-05-17
    • sexstringoptional
      Values
      MALEFEMALEOTHERUNKNOWN
    • phonestringoptional
      Example
      +34600111222
  • addressVisitAddressInputDtorequired

    Domicilio de la visita; se geocodifica si no trae coordenadas

    Show fields
    • line1stringrequired
      Example
      Calle de Alcalá 120
    • line2stringoptional
      Example
      3º B
    • citystringrequired
      Example
      Madrid
    • postalCodestringrequired
      Example
      28009
    • provincestringoptional
      Example
      Madrid
    • accessNotesstringoptional
      Example
      Portal 2, código 1234#
    • latitudenumberoptional

      Si falta, se geocodifica

      Example
      40.4212
    • longitudenumberoptional
      Example
      -3.6765
  • serviceTypeCodestringoptional

    Código del tipo de servicio (GET /catalog). Recomendado: es el mismo en pruebas y en producción, a diferencia del serviceTypeId. Obligatorio si no se indica serviceTypeId

    Example
    URG
  • serviceTypeIdstring (uuid)optional

    Id del tipo de servicio (GET /catalog). Cambia entre entornos: mejor serviceTypeCode. Obligatorio si no se indica serviceTypeCode

  • prioritystringoptional

    Por defecto NORMAL, o SCHEDULED si trae franja

    Values
    URGENTNORMALSCHEDULED
  • scheduledFromstring (date-time)optional
    Example
    2026-09-26T09:00:00+02:00
  • estimatedMinutesnumberoptional

    Tiempo estimado en minutos: bloques de 10 entre 30 y 240. Por defecto 60

    Range
    30 – 240
    Multiple of
    10
    Example
    60
  • scheduledTostring (date-time)optionaldeprecated

    Obsoleto: usar estimatedMinutes. Si llega sin él, la duración de la franja se redondea al bloque de 10 min y se usa como tiempo estimado

    Example
    2026-09-26T11:00:00+02:00
  • reasonstringrequired

    Motivo de la solicitud

    Example
    Fiebre alta desde ayer, 39 ºC
  • externalRefstringoptional

    Obligatorio si el proveedor lo exige

    Example
    EXP-2026-004512
  • insurerIdstring (uuid)optional

    Aseguradora final: solo intermediarios, y entre sus aseguradoras gestionadas

  • callerNamestringoptional
    Example
    Ana García (hija)
  • callerPhonestringoptional
    Example
    +34600111333

Responses

  • 201Successobject
    • statusnumberoptional
      Example
      201
    • Show fields
      • idstring (uuid)required
      • codestringrequired
        Example
        AV-000123
      • statusstringrequired
        Values
        PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
      • statusLabelstringrequired
        Example
        Unidad en camino
      • prioritystringrequired
        Values
        URGENTNORMALSCHEDULED
      • originstringrequired
        Values
        INTRANETPROVIDER_PORTALPROVIDER_API
      • externalRefstringoptionalnullable
        Example
        EXP-2026-004512
      • serviceTypeProviderVisitServiceTypeDtorequired
        Show fields
        • idstring (uuid)required
        • codestringrequired
          Example
          GENERAL_CONSULTATION
        • namestringrequired
          Example
          Consulta general
      • requiredProfessionalstringrequired
        Values
        DOCTORNURSE
      • insurerobjectoptionalnullable

        Aseguradora final

      • patientNamestringrequired

        Nombre del paciente que envió

        Example
        María García López
      • addressobjectrequired

        Domicilio (sin coordenadas ni indicaciones de acceso)

      • serviceDatestringrequired
        Example
        2026-09-25
      • scheduledFromstring (date-time)optionalnullable
      • scheduledTostring (date-time)optionalnullable

        Fin de la cita, calculado: inicio + tiempo estimado

      • estimatedMinutesnumberrequired

        Tiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)

        Example
        60
      • milestonesProviderVisitMilestonesDtorequired
        Show fields
        • requestedAtstring (date-time)required
        • assignedAtstring (date-time)optionalnullable
        • departedAtstring (date-time)optionalnullable
        • arrivedAtstring (date-time)optionalnullable
        • finishedAtstring (date-time)optionalnullable
        • cancelledAtstring (date-time)optionalnullable
        • invoicedAtstring (date-time)optionalnullable
      • unitProviderVisitUnitDtooptionalnullable

        Solo el tipo de unidad, desde la asignación

        Show fields
        • typestringrequired
          Values
          MEDICALNURSING
        • labelstringrequired

          Nunca nombres ni matrículas

          Example
          Unidad médica
      • outcomestringoptionalnullable
        Values
        ATTENDEDPATIENT_ABSENTREFERRED_HOSPITALREFUSEDCANCELLED
      • cancellationReasonstringoptionalnullable
      • cancelledWithChargebooleanrequired
      • cancellablebooleanrequired

        Si el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)

      • reportAvailablebooleanrequired

        Si hay informe asistencial compartido y descargable

      • invoiceIdstring (uuid)optionalnullable
      • createdAtstring (date-time)required
      • updatedAtstring (date-time)required
    • messagestringoptional
      Example
      Operación realizada correctamente
  • 400Datos inválidos, tipo de servicio no permitido o falta el expedienteProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 401API key ausente, inválida, revocada o caducadaProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 403La clave no tiene el ámbito visits:writeProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 409Idempotency-Key reutilizada con otro cuerpo o en cursoProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 429Límite de peticiones de la clave superado (Retry-After)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/visits" \
  -H "X-Api-Key: $SERAD_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "patient": {
    "firstName": "María",
    "lastName": "García López",
    "documentType": "DNI",
    "documentNumber": "12345678Z",
    "birthDate": "1948-05-17",
    "phone": "+34600111222"
  },
  "address": {
    "line1": "Calle de Alcalá 120",
    "line2": "3º B",
    "city": "Madrid",
    "postalCode": "28009"
  },
  "serviceTypeId": "57605fe9-bade-4040-b403-5eeb58e57c9e",
  "priority": "URGENT",
  "reason": "Fiebre alta desde ayer",
  "externalRef": "EXP-2026-004512",
  "insurerId": "fe8faeb8-0051-40d5-b0c1-dce10d5f5ba1"
}'
Response 201
{
  "status": 201,
  "data": {
    "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "code": "AV-000123",
    "status": "PENDING",
    "statusLabel": "Unidad en camino",
    "priority": "URGENT",
    "origin": "INTRANET",
    "externalRef": "EXP-2026-004512",
    "serviceType": {
      "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
      "code": "GENERAL_CONSULTATION",
      "name": "Consulta general"
    },
    "requiredProfessional": "DOCTOR",
    "insurer": {},
    "patientName": "María García López",
    "address": {},
    "serviceDate": "2026-09-25",
    "scheduledFrom": "2026-09-25T09:30:00.000Z",
    "scheduledTo": "2026-09-25T09:30:00.000Z",
    "estimatedMinutes": 60,
    "milestones": {
      "requestedAt": "2026-09-25T09:30:00.000Z",
      "assignedAt": "2026-09-25T09:30:00.000Z",
      "departedAt": "2026-09-25T09:30:00.000Z",
      "arrivedAt": "2026-09-25T09:30:00.000Z",
      "finishedAt": "2026-09-25T09:30:00.000Z",
      "cancelledAt": "2026-09-25T09:30:00.000Z",
      "invoicedAt": "2026-09-25T09:30:00.000Z"
    },
    "unit": {
      "type": "MEDICAL",
      "label": "Unidad médica"
    },
    "outcome": "ATTENDED",
    "cancellationReason": "string",
    "cancelledWithCharge": true,
    "cancellable": true,
    "reportAvailable": true,
    "invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "createdAt": "2026-09-25T09:30:00.000Z",
    "updatedAt": "2026-09-25T09:30:00.000Z"
  },
  "message": "Operación realizada correctamente"
}

GET/visits/{id}

Estado, hitos y línea de tiempo de un aviso

Ámbito: visits:read. Un aviso de otro proveedor responde 404.

Parameters

NameInTypeDescription
idrequiredpathstring—

Responses

  • 200Successobject
    • statusnumberoptional
      Example
      200
    • Show fields
      • idstring (uuid)required
      • codestringrequired
        Example
        AV-000123
      • statusstringrequired
        Values
        PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
      • statusLabelstringrequired
        Example
        Unidad en camino
      • prioritystringrequired
        Values
        URGENTNORMALSCHEDULED
      • originstringrequired
        Values
        INTRANETPROVIDER_PORTALPROVIDER_API
      • externalRefstringoptionalnullable
        Example
        EXP-2026-004512
      • serviceTypeProviderVisitServiceTypeDtorequired
        Show fields
        • idstring (uuid)required
        • codestringrequired
          Example
          GENERAL_CONSULTATION
        • namestringrequired
          Example
          Consulta general
      • requiredProfessionalstringrequired
        Values
        DOCTORNURSE
      • insurerobjectoptionalnullable

        Aseguradora final

      • patientNamestringrequired

        Nombre del paciente que envió

        Example
        María García López
      • addressobjectrequired

        Domicilio (sin coordenadas ni indicaciones de acceso)

      • serviceDatestringrequired
        Example
        2026-09-25
      • scheduledFromstring (date-time)optionalnullable
      • scheduledTostring (date-time)optionalnullable

        Fin de la cita, calculado: inicio + tiempo estimado

      • estimatedMinutesnumberrequired

        Tiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)

        Example
        60
      • milestonesProviderVisitMilestonesDtorequired
        Show fields
        • requestedAtstring (date-time)required
        • assignedAtstring (date-time)optionalnullable
        • departedAtstring (date-time)optionalnullable
        • arrivedAtstring (date-time)optionalnullable
        • finishedAtstring (date-time)optionalnullable
        • cancelledAtstring (date-time)optionalnullable
        • invoicedAtstring (date-time)optionalnullable
      • unitProviderVisitUnitDtooptionalnullable

        Solo el tipo de unidad, desde la asignación

        Show fields
        • typestringrequired
          Values
          MEDICALNURSING
        • labelstringrequired

          Nunca nombres ni matrículas

          Example
          Unidad médica
      • outcomestringoptionalnullable
        Values
        ATTENDEDPATIENT_ABSENTREFERRED_HOSPITALREFUSEDCANCELLED
      • cancellationReasonstringoptionalnullable
      • cancelledWithChargebooleanrequired
      • cancellablebooleanrequired

        Si el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)

      • reportAvailablebooleanrequired

        Si hay informe asistencial compartido y descargable

      • invoiceIdstring (uuid)optionalnullable
      • createdAtstring (date-time)required
      • updatedAtstring (date-time)required
      • Show fields
        • statusstringrequired
          Values
          PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
        • labelstringrequired
          Example
          Unidad asignada
        • atstring (date-time)required
    • messagestringoptional
      Example
      Operación realizada correctamente
  • 401API key ausente, inválida, revocada o caducadaProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 404Aviso no encontradoProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 429Límite de peticiones de la clave superado (Retry-After)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string" \
  -H "X-Api-Key: $SERAD_API_KEY"
Response 200
{
  "status": 200,
  "data": {
    "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "code": "AV-000123",
    "status": "PENDING",
    "statusLabel": "Unidad en camino",
    "priority": "URGENT",
    "origin": "INTRANET",
    "externalRef": "EXP-2026-004512",
    "serviceType": {
      "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
      "code": "GENERAL_CONSULTATION",
      "name": "Consulta general"
    },
    "requiredProfessional": "DOCTOR",
    "insurer": {},
    "patientName": "María García López",
    "address": {},
    "serviceDate": "2026-09-25",
    "scheduledFrom": "2026-09-25T09:30:00.000Z",
    "scheduledTo": "2026-09-25T09:30:00.000Z",
    "estimatedMinutes": 60,
    "milestones": {
      "requestedAt": "2026-09-25T09:30:00.000Z",
      "assignedAt": "2026-09-25T09:30:00.000Z",
      "departedAt": "2026-09-25T09:30:00.000Z",
      "arrivedAt": "2026-09-25T09:30:00.000Z",
      "finishedAt": "2026-09-25T09:30:00.000Z",
      "cancelledAt": "2026-09-25T09:30:00.000Z",
      "invoicedAt": "2026-09-25T09:30:00.000Z"
    },
    "unit": {
      "type": "MEDICAL",
      "label": "Unidad médica"
    },
    "outcome": "ATTENDED",
    "cancellationReason": "string",
    "cancelledWithCharge": true,
    "cancellable": true,
    "reportAvailable": true,
    "invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "createdAt": "2026-09-25T09:30:00.000Z",
    "updatedAt": "2026-09-25T09:30:00.000Z",
    "timeline": [
      {
        "status": "PENDING",
        "label": "Unidad asignada",
        "at": "2026-09-25T09:30:00.000Z"
      }
    ]
  },
  "message": "Operación realizada correctamente"
}

GET/visits/{id}/eta

Hora estimada de llegada de la unidad (con el aviso en camino)

Ámbito: visits:read. Con la unidad en camino, minutos y hora estimada por carretera desde su última posición. En otros estados, etaMinutes es null. No se devuelve la posición de la unidad.

Parameters

NameInTypeDescription
idrequiredpathstring—

Responses

  • 200Successobject
    • statusnumberoptional
      Example
      200
    • Show fields
      • statusstringrequired
        Values
        PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
      • etaMinutesnumberoptionalnullable

        Minutos estimados hasta la llegada; null si no está EN_ROUTE o no hay posición

        Example
        14
      • estimatedArrivalAtstring (date-time)optionalnullable

        Hora estimada de llegada

      • estimatedbooleanrequired

        true si es una estimación en línea recta (sin OSRM)

      • calculatedAtstring (date-time)required
    • messagestringoptional
      Example
      Operación realizada correctamente
  • 401API key ausente, inválida, revocada o caducadaProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 404Aviso no encontradoProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 429Límite de peticiones de la clave superado (Retry-After)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string/eta" \
  -H "X-Api-Key: $SERAD_API_KEY"
Response 200
{
  "status": 200,
  "data": {
    "status": "PENDING",
    "etaMinutes": 14,
    "estimatedArrivalAt": "2026-09-25T09:30:00.000Z",
    "estimated": true,
    "calculatedAt": "2026-09-25T09:30:00.000Z"
  },
  "message": "Operación realizada correctamente"
}

POST/visits/{id}/cancel

Cancela un aviso (solo PENDING/ASSIGNED, sin cargo)

Ámbito: visits:write. Con la unidad en camino, llama a la centralita.

Parameters

NameInTypeDescription
idrequiredpathstring—

Request body ProviderCancelVisitDto

  • reasonstringrequired
    Example
    El paciente ya no necesita la visita

Responses

  • 200Successobject
    • statusnumberoptional
      Example
      200
    • Show fields
      • idstring (uuid)required
      • codestringrequired
        Example
        AV-000123
      • statusstringrequired
        Values
        PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
      • statusLabelstringrequired
        Example
        Unidad en camino
      • prioritystringrequired
        Values
        URGENTNORMALSCHEDULED
      • originstringrequired
        Values
        INTRANETPROVIDER_PORTALPROVIDER_API
      • externalRefstringoptionalnullable
        Example
        EXP-2026-004512
      • serviceTypeProviderVisitServiceTypeDtorequired
        Show fields
        • idstring (uuid)required
        • codestringrequired
          Example
          GENERAL_CONSULTATION
        • namestringrequired
          Example
          Consulta general
      • requiredProfessionalstringrequired
        Values
        DOCTORNURSE
      • insurerobjectoptionalnullable

        Aseguradora final

      • patientNamestringrequired

        Nombre del paciente que envió

        Example
        María García López
      • addressobjectrequired

        Domicilio (sin coordenadas ni indicaciones de acceso)

      • serviceDatestringrequired
        Example
        2026-09-25
      • scheduledFromstring (date-time)optionalnullable
      • scheduledTostring (date-time)optionalnullable

        Fin de la cita, calculado: inicio + tiempo estimado

      • estimatedMinutesnumberrequired

        Tiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)

        Example
        60
      • milestonesProviderVisitMilestonesDtorequired
        Show fields
        • requestedAtstring (date-time)required
        • assignedAtstring (date-time)optionalnullable
        • departedAtstring (date-time)optionalnullable
        • arrivedAtstring (date-time)optionalnullable
        • finishedAtstring (date-time)optionalnullable
        • cancelledAtstring (date-time)optionalnullable
        • invoicedAtstring (date-time)optionalnullable
      • unitProviderVisitUnitDtooptionalnullable

        Solo el tipo de unidad, desde la asignación

        Show fields
        • typestringrequired
          Values
          MEDICALNURSING
        • labelstringrequired

          Nunca nombres ni matrículas

          Example
          Unidad médica
      • outcomestringoptionalnullable
        Values
        ATTENDEDPATIENT_ABSENTREFERRED_HOSPITALREFUSEDCANCELLED
      • cancellationReasonstringoptionalnullable
      • cancelledWithChargebooleanrequired
      • cancellablebooleanrequired

        Si el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)

      • reportAvailablebooleanrequired

        Si hay informe asistencial compartido y descargable

      • invoiceIdstring (uuid)optionalnullable
      • createdAtstring (date-time)required
      • updatedAtstring (date-time)required
    • messagestringoptional
      Example
      Operación realizada correctamente
  • 401API key ausente, inválida, revocada o caducadaProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 409El aviso ya no se puede cancelar desde la integraciónProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 429Límite de peticiones de la clave superado (Retry-After)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string/cancel" \
  -H "X-Api-Key: $SERAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "El paciente ya no necesita la visita"
}'
Response 200
{
  "status": 200,
  "data": {
    "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "code": "AV-000123",
    "status": "PENDING",
    "statusLabel": "Unidad en camino",
    "priority": "URGENT",
    "origin": "INTRANET",
    "externalRef": "EXP-2026-004512",
    "serviceType": {
      "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
      "code": "GENERAL_CONSULTATION",
      "name": "Consulta general"
    },
    "requiredProfessional": "DOCTOR",
    "insurer": {},
    "patientName": "María García López",
    "address": {},
    "serviceDate": "2026-09-25",
    "scheduledFrom": "2026-09-25T09:30:00.000Z",
    "scheduledTo": "2026-09-25T09:30:00.000Z",
    "estimatedMinutes": 60,
    "milestones": {
      "requestedAt": "2026-09-25T09:30:00.000Z",
      "assignedAt": "2026-09-25T09:30:00.000Z",
      "departedAt": "2026-09-25T09:30:00.000Z",
      "arrivedAt": "2026-09-25T09:30:00.000Z",
      "finishedAt": "2026-09-25T09:30:00.000Z",
      "cancelledAt": "2026-09-25T09:30:00.000Z",
      "invoicedAt": "2026-09-25T09:30:00.000Z"
    },
    "unit": {
      "type": "MEDICAL",
      "label": "Unidad médica"
    },
    "outcome": "ATTENDED",
    "cancellationReason": "string",
    "cancelledWithCharge": true,
    "cancellable": true,
    "reportAvailable": true,
    "invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "createdAt": "2026-09-25T09:30:00.000Z",
    "updatedAt": "2026-09-25T09:30:00.000Z"
  },
  "message": "Operación realizada correctamente"
}

GET/visits/{id}/report

Descarga el informe asistencial (PDF) si está compartido y consentido

Ámbito: reports:read. Cada descarga queda registrada (CLINICAL_ACCESS).

Parameters

NameInTypeDescription
idrequiredpathstring—

Responses

  • 401API key ausente, inválida, revocada o caducadaProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 404Sin informe compartido para este aviso

    application/pdf

  • 429Límite de peticiones de la clave superado (Retry-After)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string/report" \
  -H "X-Api-Key: $SERAD_API_KEY"

POST/sandbox/visits/{id}/advance

[Solo sandbox] Avanza un aviso de prueba al siguiente estado o al indicado

Ámbito: visits:write. Dispara los mismos webhooks que en producción para cada estado por el que pasa. Para cancelar, {"to":"CANCELLED"} (desde pendiente, asignado o en camino).

Parameters

NameInTypeDescription
idrequiredpathstring—

Request body SandboxAdvanceVisitDto

  • tostringoptional

    Estado destino. Sin él, el siguiente. Pasa por los intermedios, con su webhook cada uno

    Values
    ASSIGNEDEN_ROUTEON_SITEFINISHEDCANCELLED

Responses

  • 200Successobject
    • statusnumberoptional
      Example
      200
    • Show fields
      • idstring (uuid)required
      • codestringrequired
        Example
        AV-000123
      • statusstringrequired
        Values
        PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
      • statusLabelstringrequired
        Example
        Unidad en camino
      • prioritystringrequired
        Values
        URGENTNORMALSCHEDULED
      • originstringrequired
        Values
        INTRANETPROVIDER_PORTALPROVIDER_API
      • externalRefstringoptionalnullable
        Example
        EXP-2026-004512
      • serviceTypeProviderVisitServiceTypeDtorequired
        Show fields
        • idstring (uuid)required
        • codestringrequired
          Example
          GENERAL_CONSULTATION
        • namestringrequired
          Example
          Consulta general
      • requiredProfessionalstringrequired
        Values
        DOCTORNURSE
      • insurerobjectoptionalnullable

        Aseguradora final

      • patientNamestringrequired

        Nombre del paciente que envió

        Example
        María García López
      • addressobjectrequired

        Domicilio (sin coordenadas ni indicaciones de acceso)

      • serviceDatestringrequired
        Example
        2026-09-25
      • scheduledFromstring (date-time)optionalnullable
      • scheduledTostring (date-time)optionalnullable

        Fin de la cita, calculado: inicio + tiempo estimado

      • estimatedMinutesnumberrequired

        Tiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)

        Example
        60
      • milestonesProviderVisitMilestonesDtorequired
        Show fields
        • requestedAtstring (date-time)required
        • assignedAtstring (date-time)optionalnullable
        • departedAtstring (date-time)optionalnullable
        • arrivedAtstring (date-time)optionalnullable
        • finishedAtstring (date-time)optionalnullable
        • cancelledAtstring (date-time)optionalnullable
        • invoicedAtstring (date-time)optionalnullable
      • unitProviderVisitUnitDtooptionalnullable

        Solo el tipo de unidad, desde la asignación

        Show fields
        • typestringrequired
          Values
          MEDICALNURSING
        • labelstringrequired

          Nunca nombres ni matrículas

          Example
          Unidad médica
      • outcomestringoptionalnullable
        Values
        ATTENDEDPATIENT_ABSENTREFERRED_HOSPITALREFUSEDCANCELLED
      • cancellationReasonstringoptionalnullable
      • cancelledWithChargebooleanrequired
      • cancellablebooleanrequired

        Si el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)

      • reportAvailablebooleanrequired

        Si hay informe asistencial compartido y descargable

      • invoiceIdstring (uuid)optionalnullable
      • createdAtstring (date-time)required
      • updatedAtstring (date-time)required
      • Show fields
        • statusstringrequired
          Values
          PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
        • labelstringrequired
          Example
          Unidad asignada
        • atstring (date-time)required
    • messagestringoptional
      Example
      Operación realizada correctamente
  • 400El aviso no puede pasar a ese estadoProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
  • 404Aviso no encontrado, o la ruta no existe (producción)ProblemDetailDto
    • typestringrequired
      Example
      https://api.dominio.com/errors/validation-error
    • titlestringrequired
      Example
      Error de validación
    • statusnumberrequired
      Example
      400
    • detailstringrequired
      Example
      El campo 'email' no tiene un formato válido
    • instancestringrequired
      Example
      /users/123
    • errorsarray<FieldErrorDto>optional
      Show fields
      • fieldstringrequired
        Example
        email
      • messagestringrequired
        Example
        El campo 'email' no tiene un formato válido
    • timestampstringrequired
      Example
      2026-07-07T10:00:00.000Z
curl
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/sandbox/visits/string/advance" \
  -H "X-Api-Key: $SERAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "ASSIGNED"
}'
Response 200
{
  "status": 200,
  "data": {
    "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "code": "AV-000123",
    "status": "PENDING",
    "statusLabel": "Unidad en camino",
    "priority": "URGENT",
    "origin": "INTRANET",
    "externalRef": "EXP-2026-004512",
    "serviceType": {
      "id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
      "code": "GENERAL_CONSULTATION",
      "name": "Consulta general"
    },
    "requiredProfessional": "DOCTOR",
    "insurer": {},
    "patientName": "María García López",
    "address": {},
    "serviceDate": "2026-09-25",
    "scheduledFrom": "2026-09-25T09:30:00.000Z",
    "scheduledTo": "2026-09-25T09:30:00.000Z",
    "estimatedMinutes": 60,
    "milestones": {
      "requestedAt": "2026-09-25T09:30:00.000Z",
      "assignedAt": "2026-09-25T09:30:00.000Z",
      "departedAt": "2026-09-25T09:30:00.000Z",
      "arrivedAt": "2026-09-25T09:30:00.000Z",
      "finishedAt": "2026-09-25T09:30:00.000Z",
      "cancelledAt": "2026-09-25T09:30:00.000Z",
      "invoicedAt": "2026-09-25T09:30:00.000Z"
    },
    "unit": {
      "type": "MEDICAL",
      "label": "Unidad médica"
    },
    "outcome": "ATTENDED",
    "cancellationReason": "string",
    "cancelledWithCharge": true,
    "cancellable": true,
    "reportAvailable": true,
    "invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
    "createdAt": "2026-09-25T09:30:00.000Z",
    "updatedAt": "2026-09-25T09:30:00.000Z",
    "timeline": [
      {
        "status": "PENDING",
        "label": "Unidad asignada",
        "at": "2026-09-25T09:30:00.000Z"
      }
    ]
  },
  "message": "Operación realizada correctamente"
}

POST/sandbox/reset

[Solo sandbox] Borra todos tus avisos de prueba

Ámbito: visits:write. Deja el entorno limpio para empezar otra batería de pruebas.

Responses

  • 200Successobject
    • statusnumberoptional
      Example
      200
    • Show fields
      • deletedVisitsnumberoptional
        Example
        12
    • messagestringoptional
      Example
      Operación realizada correctamente
curl
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/sandbox/reset" \
  -H "X-Api-Key: $SERAD_API_KEY"
Response 200
{
  "status": 200,
  "data": {
    "deletedVisits": 12
  },
  "message": "Operación realizada correctamente"
}

Webhooks

Requests Salud en Ruta sends to the URL you configure. See the webhooks guide for signatures and retries.

EVENTvisit.created

Evento visit.created

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "visit.created",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

EVENTvisit.assigned

Evento visit.assigned

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "visit.assigned",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

EVENTvisit.en_route

Evento visit.en_route

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "visit.en_route",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

EVENTvisit.on_site

Evento visit.on_site

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "visit.on_site",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

EVENTvisit.finished

Evento visit.finished

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "visit.finished",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

EVENTvisit.cancelled

Evento visit.cancelled

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "visit.cancelled",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

EVENTvisit.invoiced

Evento visit.invoiced

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "visit.invoiced",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

EVENTreport.shared

Evento report.shared

Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.

Parameters

NameInTypeDescription
X-Serad-Signaturerequiredheaderstring—
X-Serad-Timestamprequiredheaderstring—
X-Serad-Eventrequiredheaderstring—
X-Serad-Deliveryrequiredheaderstring (uuid)—

Event payload object

No fields described.

Response we expect

  • 2XXRecibido. Cualquier otra respuesta se reintenta.

    No body

Event payload
{
  "id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
  "type": "report.shared",
  "createdAt": "2026-10-01T09:15:00.000Z",
  "data": {
    "visit": {
      "id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
      "code": "AV-000018",
      "externalRef": "EXP-2026-004512",
      "status": "ASSIGNED",
      "priority": "URGENT",
      "origin": "PROVIDER_API",
      "serviceTypeCode": "URG",
      "unitType": "MEDICAL",
      "milestones": {
        "requestedAt": "2026-10-01T09:10:00.000Z",
        "assignedAt": "2026-10-01T09:15:00.000Z"
      },
      "outcome": null,
      "cancelledWithCharge": false,
      "invoice": null
    }
  }
}

Schemas

FieldErrorDto
  • fieldstringrequired
    Example
    email
  • messagestringrequired
    Example
    El campo 'email' no tiene un formato válido
ProblemDetailDto
  • typestringrequired
    Example
    https://api.dominio.com/errors/validation-error
  • titlestringrequired
    Example
    Error de validación
  • statusnumberrequired
    Example
    400
  • detailstringrequired
    Example
    El campo 'email' no tiene un formato válido
  • instancestringrequired
    Example
    /users/123
  • errorsarray<FieldErrorDto>optional
    Show fields
    • fieldstringrequired
      Example
      email
    • messagestringrequired
      Example
      El campo 'email' no tiene un formato válido
  • timestampstringrequired
    Example
    2026-07-07T10:00:00.000Z
ProviderVisitServiceTypeDto
  • idstring (uuid)required
  • codestringrequired
    Example
    GENERAL_CONSULTATION
  • namestringrequired
    Example
    Consulta general
ProviderVisitMilestonesDto
  • requestedAtstring (date-time)required
  • assignedAtstring (date-time)optionalnullable
  • departedAtstring (date-time)optionalnullable
  • arrivedAtstring (date-time)optionalnullable
  • finishedAtstring (date-time)optionalnullable
  • cancelledAtstring (date-time)optionalnullable
  • invoicedAtstring (date-time)optionalnullable
ProviderVisitUnitDto
  • typestringrequired
    Values
    MEDICALNURSING
  • labelstringrequired

    Nunca nombres ni matrículas

    Example
    Unidad médica
ProviderVisitResponseDto
  • idstring (uuid)required
  • codestringrequired
    Example
    AV-000123
  • statusstringrequired
    Values
    PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
  • statusLabelstringrequired
    Example
    Unidad en camino
  • prioritystringrequired
    Values
    URGENTNORMALSCHEDULED
  • originstringrequired
    Values
    INTRANETPROVIDER_PORTALPROVIDER_API
  • externalRefstringoptionalnullable
    Example
    EXP-2026-004512
  • serviceTypeProviderVisitServiceTypeDtorequired
    Show fields
    • idstring (uuid)required
    • codestringrequired
      Example
      GENERAL_CONSULTATION
    • namestringrequired
      Example
      Consulta general
  • requiredProfessionalstringrequired
    Values
    DOCTORNURSE
  • insurerobjectoptionalnullable

    Aseguradora final

  • patientNamestringrequired

    Nombre del paciente que envió

    Example
    María García López
  • addressobjectrequired

    Domicilio (sin coordenadas ni indicaciones de acceso)

  • serviceDatestringrequired
    Example
    2026-09-25
  • scheduledFromstring (date-time)optionalnullable
  • scheduledTostring (date-time)optionalnullable

    Fin de la cita, calculado: inicio + tiempo estimado

  • estimatedMinutesnumberrequired

    Tiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)

    Example
    60
  • milestonesProviderVisitMilestonesDtorequired
    Show fields
    • requestedAtstring (date-time)required
    • assignedAtstring (date-time)optionalnullable
    • departedAtstring (date-time)optionalnullable
    • arrivedAtstring (date-time)optionalnullable
    • finishedAtstring (date-time)optionalnullable
    • cancelledAtstring (date-time)optionalnullable
    • invoicedAtstring (date-time)optionalnullable
  • unitProviderVisitUnitDtooptionalnullable

    Solo el tipo de unidad, desde la asignación

    Show fields
    • typestringrequired
      Values
      MEDICALNURSING
    • labelstringrequired

      Nunca nombres ni matrículas

      Example
      Unidad médica
  • outcomestringoptionalnullable
    Values
    ATTENDEDPATIENT_ABSENTREFERRED_HOSPITALREFUSEDCANCELLED
  • cancellationReasonstringoptionalnullable
  • cancelledWithChargebooleanrequired
  • cancellablebooleanrequired

    Si el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)

  • reportAvailablebooleanrequired

    Si hay informe asistencial compartido y descargable

  • invoiceIdstring (uuid)optionalnullable
  • createdAtstring (date-time)required
  • updatedAtstring (date-time)required
ProviderCatalogServiceTypeDto
  • idstring (uuid)required
  • codestringrequired
    Example
    GENERAL_CONSULTATION
  • namestringrequired
    Example
    Consulta general
  • requiredProfessionalstringrequired
    Values
    DOCTORNURSE
ProviderCatalogInsurerDto
  • idstring (uuid)required
  • namestringrequired
    Example
    Sanitas
ProviderCatalogResponseDto
  • providerTypestringrequired
    Values
    INSURERINTERMEDIARYPRIVATEOTHER
  • requiresExternalRefbooleanrequired

    Si externalRef es obligatorio

  • Tipos de servicio con línea en su tarifa vigente (o todos los activos sin tarifa)

    Show fields
    • idstring (uuid)required
    • codestringrequired
      Example
      GENERAL_CONSULTATION
    • namestringrequired
      Example
      Consulta general
    • requiredProfessionalstringrequired
      Values
      DOCTORNURSE
  • Aseguradoras finales admitidas (solo intermediarios)

    Show fields
    • idstring (uuid)required
    • namestringrequired
      Example
      Sanitas
ProviderVisitPatientInputDto
  • firstNamestringrequired
    Example
    María
  • lastNamestringrequired
    Example
    García López
  • documentTypestringoptional
    Values
    DNINIEPASSPORTNONE
    Default
    NONE
  • documentNumberstringoptional

    Obligatorio salvo documentType NONE

    Example
    12345678Z
  • birthDatestringoptional
    Example
    1948-05-17
  • sexstringoptional
    Values
    MALEFEMALEOTHERUNKNOWN
  • phonestringoptional
    Example
    +34600111222
VisitAddressInputDto
  • line1stringrequired
    Example
    Calle de Alcalá 120
  • line2stringoptional
    Example
    3º B
  • citystringrequired
    Example
    Madrid
  • postalCodestringrequired
    Example
    28009
  • provincestringoptional
    Example
    Madrid
  • accessNotesstringoptional
    Example
    Portal 2, código 1234#
  • latitudenumberoptional

    Si falta, se geocodifica

    Example
    40.4212
  • longitudenumberoptional
    Example
    -3.6765
ProviderCreateVisitDto
  • patientIdstring (uuid)optional

    Paciente de un aviso anterior de este proveedor (GET /client/patients). Si llega, patient no hace falta

  • Datos del paciente. Obligatorio salvo que se indique patientId

    Show fields
    • firstNamestringrequired
      Example
      María
    • lastNamestringrequired
      Example
      García López
    • documentTypestringoptional
      Values
      DNINIEPASSPORTNONE
      Default
      NONE
    • documentNumberstringoptional

      Obligatorio salvo documentType NONE

      Example
      12345678Z
    • birthDatestringoptional
      Example
      1948-05-17
    • sexstringoptional
      Values
      MALEFEMALEOTHERUNKNOWN
    • phonestringoptional
      Example
      +34600111222
  • addressVisitAddressInputDtorequired

    Domicilio de la visita; se geocodifica si no trae coordenadas

    Show fields
    • line1stringrequired
      Example
      Calle de Alcalá 120
    • line2stringoptional
      Example
      3º B
    • citystringrequired
      Example
      Madrid
    • postalCodestringrequired
      Example
      28009
    • provincestringoptional
      Example
      Madrid
    • accessNotesstringoptional
      Example
      Portal 2, código 1234#
    • latitudenumberoptional

      Si falta, se geocodifica

      Example
      40.4212
    • longitudenumberoptional
      Example
      -3.6765
  • serviceTypeCodestringoptional

    Código del tipo de servicio (GET /catalog). Recomendado: es el mismo en pruebas y en producción, a diferencia del serviceTypeId. Obligatorio si no se indica serviceTypeId

    Example
    URG
  • serviceTypeIdstring (uuid)optional

    Id del tipo de servicio (GET /catalog). Cambia entre entornos: mejor serviceTypeCode. Obligatorio si no se indica serviceTypeCode

  • prioritystringoptional

    Por defecto NORMAL, o SCHEDULED si trae franja

    Values
    URGENTNORMALSCHEDULED
  • scheduledFromstring (date-time)optional
    Example
    2026-09-26T09:00:00+02:00
  • estimatedMinutesnumberoptional

    Tiempo estimado en minutos: bloques de 10 entre 30 y 240. Por defecto 60

    Range
    30 – 240
    Multiple of
    10
    Example
    60
  • scheduledTostring (date-time)optionaldeprecated

    Obsoleto: usar estimatedMinutes. Si llega sin él, la duración de la franja se redondea al bloque de 10 min y se usa como tiempo estimado

    Example
    2026-09-26T11:00:00+02:00
  • reasonstringrequired

    Motivo de la solicitud

    Example
    Fiebre alta desde ayer, 39 ºC
  • externalRefstringoptional

    Obligatorio si el proveedor lo exige

    Example
    EXP-2026-004512
  • insurerIdstring (uuid)optional

    Aseguradora final: solo intermediarios, y entre sus aseguradoras gestionadas

  • callerNamestringoptional
    Example
    Ana García (hija)
  • callerPhonestringoptional
    Example
    +34600111333
ProviderVisitTimelineEntryDto
  • statusstringrequired
    Values
    PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
  • labelstringrequired
    Example
    Unidad asignada
  • atstring (date-time)required
ProviderVisitDetailResponseDto
  • idstring (uuid)required
  • codestringrequired
    Example
    AV-000123
  • statusstringrequired
    Values
    PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
  • statusLabelstringrequired
    Example
    Unidad en camino
  • prioritystringrequired
    Values
    URGENTNORMALSCHEDULED
  • originstringrequired
    Values
    INTRANETPROVIDER_PORTALPROVIDER_API
  • externalRefstringoptionalnullable
    Example
    EXP-2026-004512
  • serviceTypeProviderVisitServiceTypeDtorequired
    Show fields
    • idstring (uuid)required
    • codestringrequired
      Example
      GENERAL_CONSULTATION
    • namestringrequired
      Example
      Consulta general
  • requiredProfessionalstringrequired
    Values
    DOCTORNURSE
  • insurerobjectoptionalnullable

    Aseguradora final

  • patientNamestringrequired

    Nombre del paciente que envió

    Example
    María García López
  • addressobjectrequired

    Domicilio (sin coordenadas ni indicaciones de acceso)

  • serviceDatestringrequired
    Example
    2026-09-25
  • scheduledFromstring (date-time)optionalnullable
  • scheduledTostring (date-time)optionalnullable

    Fin de la cita, calculado: inicio + tiempo estimado

  • estimatedMinutesnumberrequired

    Tiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)

    Example
    60
  • milestonesProviderVisitMilestonesDtorequired
    Show fields
    • requestedAtstring (date-time)required
    • assignedAtstring (date-time)optionalnullable
    • departedAtstring (date-time)optionalnullable
    • arrivedAtstring (date-time)optionalnullable
    • finishedAtstring (date-time)optionalnullable
    • cancelledAtstring (date-time)optionalnullable
    • invoicedAtstring (date-time)optionalnullable
  • unitProviderVisitUnitDtooptionalnullable

    Solo el tipo de unidad, desde la asignación

    Show fields
    • typestringrequired
      Values
      MEDICALNURSING
    • labelstringrequired

      Nunca nombres ni matrículas

      Example
      Unidad médica
  • outcomestringoptionalnullable
    Values
    ATTENDEDPATIENT_ABSENTREFERRED_HOSPITALREFUSEDCANCELLED
  • cancellationReasonstringoptionalnullable
  • cancelledWithChargebooleanrequired
  • cancellablebooleanrequired

    Si el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)

  • reportAvailablebooleanrequired

    Si hay informe asistencial compartido y descargable

  • invoiceIdstring (uuid)optionalnullable
  • createdAtstring (date-time)required
  • updatedAtstring (date-time)required
  • Show fields
    • statusstringrequired
      Values
      PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
    • labelstringrequired
      Example
      Unidad asignada
    • atstring (date-time)required
ProviderVisitEtaResponseDto
  • statusstringrequired
    Values
    PENDINGASSIGNEDEN_ROUTEON_SITEFINISHEDVALIDATEDINVOICEDCANCELLED
  • etaMinutesnumberoptionalnullable

    Minutos estimados hasta la llegada; null si no está EN_ROUTE o no hay posición

    Example
    14
  • estimatedArrivalAtstring (date-time)optionalnullable

    Hora estimada de llegada

  • estimatedbooleanrequired

    true si es una estimación en línea recta (sin OSRM)

  • calculatedAtstring (date-time)required
ProviderCancelVisitDto
  • reasonstringrequired
    Example
    El paciente ya no necesita la visita
SandboxAdvanceVisitDto
  • tostringoptional

    Estado destino. Sin él, el siguiente. Pasa por los intermedios, con su webhook cada uno

    Values
    ASSIGNEDEN_ROUTEON_SITEFINISHEDCANCELLED
SandboxResetResponseDto
  • deletedVisitsnumberoptional
    Example
    12
ProviderApiKeyResponseDto
  • idstring (uuid)required
  • providerIdstring (uuid)required
  • namestringrequired
    Example
    Integración CRM expedientes
  • keyPrefixstringrequired

    Prefijo visible: la clave empieza por srd_live_<prefijo>, srd_test<prefijo>_ o (legacy) srd_<prefijo>_

    Example
    a1b2c3d4
  • keyFormatstringrequired

    Formato con el que se emitió: live (srd_live_), test (srd_test_) o legacy (srd_<prefijo>_)

    Values
    livetestlegacy
    Example
    live
  • scopesarray<string>required
    Values
    visits:writevisits:readreports:read
  • rateLimitPerMinutenumberrequired
    Example
    60
  • expiresAtstring (date-time)optionalnullable
  • lastUsedAtstring (date-time)optionalnullable
  • lastUsedIpstringoptionalnullable
  • revokedAtstring (date-time)optionalnullable
  • rotatedFromIdstring (uuid)optionalnullable
  • createdAtstring (date-time)required
ProviderApiKeyCreatedDto
  • idstring (uuid)required
  • providerIdstring (uuid)required
  • namestringrequired
    Example
    Integración CRM expedientes
  • keyPrefixstringrequired

    Prefijo visible: la clave empieza por srd_live_<prefijo>, srd_test<prefijo>_ o (legacy) srd_<prefijo>_

    Example
    a1b2c3d4
  • keyFormatstringrequired

    Formato con el que se emitió: live (srd_live_), test (srd_test_) o legacy (srd_<prefijo>_)

    Values
    livetestlegacy
    Example
    live
  • scopesarray<string>required
    Values
    visits:writevisits:readreports:read
  • rateLimitPerMinutenumberrequired
    Example
    60
  • expiresAtstring (date-time)optionalnullable
  • lastUsedAtstring (date-time)optionalnullable
  • lastUsedIpstringoptionalnullable
  • revokedAtstring (date-time)optionalnullable
  • rotatedFromIdstring (uuid)optionalnullable
  • createdAtstring (date-time)required
  • keystringrequired

    Clave completa. Solo se muestra en esta respuesta; guárdala en un gestor de secretos

    Example
    srd_a1b2c3d4_Qm9yZ2VzIGVzIHVuIGdlbmlvIGRlIGxhIGxpdGVyYXR1cmE
CreateProviderApiKeyDto
  • namestringrequired
    Example
    Integración CRM expedientes
  • scopesarray<string>required
    Values
    visits:writevisits:readreports:read
  • rateLimitPerMinutenumberoptional

    Peticiones por minuto (por defecto 60)

    Example
    60
  • expiresAtstringoptional

    Sin valor, no caduca

    Example
    2027-12-31T23:59:59Z
ProviderWebhookResponseDto
  • idstring (uuid)required
  • providerIdstring (uuid)required
  • urlstringrequired
  • eventsarray<string>required
    Values
    visit.createdvisit.assignedvisit.en_routevisit.on_sitevisit.finishedvisit.cancelledvisit.invoicedreport.shared
  • activebooleanrequired
  • descriptionstringoptionalnullable
  • secretHintstringrequired

    Solo los últimos caracteres

    Example
    whsec_…3f9a
  • createdAtstring (date-time)required
  • updatedAtstring (date-time)required
ProviderWebhookWithSecretDto
  • idstring (uuid)required
  • providerIdstring (uuid)required
  • urlstringrequired
  • eventsarray<string>required
    Values
    visit.createdvisit.assignedvisit.en_routevisit.on_sitevisit.finishedvisit.cancelledvisit.invoicedreport.shared
  • activebooleanrequired
  • descriptionstringoptionalnullable
  • secretHintstringrequired

    Solo los últimos caracteres

    Example
    whsec_…3f9a
  • createdAtstring (date-time)required
  • updatedAtstring (date-time)required
  • secretstringrequired

    Secreto completo para verificar X-Serad-Signature. Solo en esta respuesta

    Example
    whsec_2Qx…
CreateProviderWebhookDto
  • urlstringrequired
    Example
    https://integraciones.aseguradora.es/serad/webhooks
  • eventsarray<string>required
    Values
    visit.createdvisit.assignedvisit.en_routevisit.on_sitevisit.finishedvisit.cancelledvisit.invoicedreport.shared
  • descriptionstringoptional
    Example
    CRM de expedientes (producción)
  • secretstringoptional

    Secreto de firma. Si no se indica, se genera (whsec_…) y se devuelve una vez

UpdateProviderWebhookDto
  • urlstringoptional
    Example
    https://integraciones.aseguradora.es/serad/webhooks
  • eventsarray<string>optional
    Values
    visit.createdvisit.assignedvisit.en_routevisit.on_sitevisit.finishedvisit.cancelledvisit.invoicedreport.shared
  • descriptionstringoptional
    Example
    CRM de expedientes (producción)
  • secretstringoptional

    Secreto de firma. Si no se indica, se genera (whsec_…) y se devuelve una vez

  • activebooleanoptional

    Desactivado no recibe eventos

ProviderWebhookDeliveryDto
  • idstring (uuid)required
  • endpointIdstring (uuid)required
  • eventstringrequired
    Example
    visit.assigned
  • eventIdstring (uuid)required
  • visitIdstring (uuid)optionalnullable
  • statusstringrequired
    Values
    PENDINGRETRYINGSUCCEEDEDFAILED
  • attemptsnumberrequired
    Example
    2
  • maxAttemptsnumberrequired
    Example
    6
  • lastStatusCodenumberoptionalnullable
    Example
    500
  • lastResponsestringoptionalnullable

    Truncada a 1000 caracteres

  • lastErrorstringoptionalnullable
  • lastAttemptAtstring (date-time)optionalnullable
  • nextAttemptAtstring (date-time)optionalnullable
  • deliveredAtstring (date-time)optionalnullable
  • isTestbooleanrequired
  • redeliveryOfIdstring (uuid)optionalnullable
  • payloadobjectrequired

    Carga enviada (sin datos clínicos)

  • createdAtstring (date-time)required

Something missing or not matching what you see? Email our technical team: info@saludenruta.es.