> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linahealthcareplatform.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introducción a la API

> Referencia completa de la API REST de LINA. Gestiona pacientes, formularios, llamadas IA y más de forma programática.

## URL base

Todas las peticiones se realizan sobre HTTPS a:

```
https://api.linahealthcareplatform.com/api/v1
```

## Versionado

La API usa versionado en la URL. La versión actual es `v1`. Las versiones anteriores se mantienen durante un mínimo de 12 meses tras la publicación de una nueva versión.

## Autenticación

Todas las peticiones requieren un token Bearer en el header `Authorization`:

```
Authorization: Bearer YOUR_TOKEN
```

Consulta la guía de [autenticación](/authentication) para obtener tu token.

## Formato de peticiones

* **Content-Type:** `application/json`
* **Accept:** `application/json`
* Todos los cuerpos de petición y respuesta usan JSON.
* Las fechas siguen el formato ISO 8601 (`2026-05-14T10:30:00Z`).
* Los IDs usan prefijos descriptivos (`pat_`, `form_`, `call_`, `sch_`, `conv_`, `wh_`).

## Formato de respuesta

Todas las respuestas exitosas siguen esta estructura:

```json Recurso individual theme={null}
{
  "id": "pat_xyz789",
  "firstName": "María",
  "lastName": "García",
  "email": "maria.garcia@email.com",
  "createdAt": "2026-05-14T10:00:00Z"
}
```

```json Lista paginada theme={null}
{
  "data": [
    { "id": "pat_xyz789", "firstName": "María", ... },
    { "id": "pat_abc123", "firstName": "Carlos", ... }
  ],
  "pagination": {
    "cursor": "eyJpZCI6InBhdF9hYmMxMjMifQ==",
    "hasMore": true,
    "limit": 20
  }
}
```

## Paginación

Los endpoints que devuelven listas usan **paginación basada en cursor**:

| Parámetro | Tipo    | Descripción                                                                     |
| --------- | ------- | ------------------------------------------------------------------------------- |
| `limit`   | integer | Número de resultados por página (máx. 100, por defecto 20)                      |
| `cursor`  | string  | Cursor opaco devuelto en la respuesta anterior para obtener la siguiente página |

Para recorrer todas las páginas, repite la petición usando el `cursor` de la respuesta hasta que `hasMore` sea `false`.

## Códigos de error

| Código | Significado           | Descripción                                                         |
| ------ | --------------------- | ------------------------------------------------------------------- |
| `400`  | Bad Request           | La petición tiene parámetros inválidos o falta un campo obligatorio |
| `401`  | Unauthorized          | Token no proporcionado o inválido                                   |
| `403`  | Forbidden             | No tienes permisos para acceder a este recurso                      |
| `404`  | Not Found             | El recurso solicitado no existe                                     |
| `429`  | Too Many Requests     | Has superado el [límite de peticiones](/guides/rate-limits)         |
| `500`  | Internal Server Error | Error interno del servidor. Contacta con soporte si persiste        |

**Formato de error:**

```json theme={null}
{
  "error": {
    "code": "validation_error",
    "message": "El campo 'email' es obligatorio.",
    "details": [
      {
        "field": "email",
        "message": "Este campo es obligatorio"
      }
    ]
  }
}
```

## Clientes HTTP recomendados

La API es REST estándar. Puedes usar cualquier cliente HTTP:

<CardGroup cols={3}>
  <Card title="cURL" icon="terminal">
    Ideal para testing rápido y scripts
  </Card>

  <Card title="fetch / axios (Node.js)" icon="js">
    Clientes nativos de JavaScript
  </Card>

  <Card title="requests / httpx (Python)" icon="python">
    Librerías estándar de Python
  </Card>
</CardGroup>
