> ## Índice de la documentación
> Consulta el índice completo de la documentación en: https://developer.rhombus.com/llms.txt
> Úsalo para descubrir todas las páginas disponibles antes de seguir explorando.

# Autenticación

> Cómo autenticar cada tipo de solicitud a Rhombus: qué credencial usar para REST, medios y video, el WebSocket de eventos y las cámaras de tu red, dónde va cada una, las credenciales de partner y cómo interpretar las respuestas 401, 403 y 429.

> **Note**: Esta página se tradujo automáticamente. Si encuentras errores o tienes sugerencias, [escríbenos](mailto:support@rhombus.com).

Cada solicitud a Rhombus lleva una credencial. Qué credenciales puede usar una solicitud, y dónde van, depende de **adónde va la solicitud**: la API REST, los hosts de medios y video, el WebSocket de eventos o una cámara de tu red local. Esta página relaciona cada credencial con cada destino y explica los errores de autenticación; las páginas siguientes cubren cada credencial en detalle.

## Elige una credencial

| Lo que estás construyendo                                                                                                | Usa                                                      | Detalles                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Un servicio de backend, un script o una tarea programada en una organización                                             | **Clave de API**                                         | [Claves de API y certificados](https://developer.rhombus.com/es/authentication/api-keys)                            |
| Un backend cuya política de seguridad exige TLS mutuo                                                                    | **Clave de API de certificado** (mTLS)                   | [Claves de API y certificados](https://developer.rhombus.com/es/authentication/api-keys#claves-de-certificado-mtls) |
| Una app en la que otros clientes de Rhombus inician sesión y a la que dan autorización                                   | **Access token de OAuth** ("Iniciar sesión con Rhombus") | [Iniciar sesión con Rhombus](https://developer.rhombus.com/es/oauth-authentication)                                 |
| Una herramienta para un MSP o revendedor que gestiona muchas organizaciones cliente                                      | **Clave de API de partner** o token de OAuth de partner  | [API para partners](https://developer.rhombus.com/es/partner-api-calls)                                             |
| Video, imágenes, audio o eventos en vivo en un navegador o una app móvil, o cualquier cosa en la red local de una cámara | **Token federado**, generado por tu backend              | [Tokens federados](https://developer.rhombus.com/es/authentication/federated-tokens)                                |
| Un enlace que cualquiera puede abrir para ver una cámara                                                                 | **Enlace de transmisión compartida**                     | [Medios y transmisiones](https://developer.rhombus.com/es/authentication/media#enlaces-de-transmisión-compartida)   |

> **Warning**: Las claves de API y las claves de partner son credenciales del lado del servidor. Nunca pongas una en una página web, una app móvil ni en ningún código que un usuario pueda leer. Todo lo que se ejecuta en el dispositivo de un usuario recibe en su lugar un [token federado](https://developer.rhombus.com/es/authentication/federated-tokens) de corta duración desde tu backend.

## Dónde funciona cada credencial

| Credencial                                         | API REST (`api2`)                                          | Medios y video                                         | WebSocket de eventos (`ws`)           | Cámaras en tu LAN                    |
| -------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------- | ------------------------------------ |
| **Clave de API**                                   | Encabezados                                                | Encabezados                                            | Encabezados del handshake             | No se acepta                         |
| **Clave de API de certificado**                    | Certificado de cliente más encabezados (solo hosts `api2`) | No se acepta; usa una clave de API o un token federado | No se acepta                          | No se acepta                         |
| **Access token de OAuth**                          | Encabezados                                                | Encabezados                                            | Encabezados del handshake             | No se acepta                         |
| **Clave, certificado o token de OAuth de partner** | Igual que la credencial de organización, más `x-auth-org`  | Igual, más `x-auth-org`                                | Igual, más `x-auth-org` (obligatorio) | No se acepta                         |
| **Token federado**                                 | Encabezados o parámetros de consulta                       | Encabezados o parámetros de consulta                   | Encabezados o parámetros de consulta  | Encabezados o parámetros de consulta |

Las cámaras de tu red local aceptan **solo tokens federados**. Es una decisión deliberada: en la red local, cada solicitud lleva un token de corta duración que puedes limitar a la cámara que necesita, nunca una clave de larga duración. Consulta [Streaming por LAN](https://developer.rhombus.com/es/implementations/lan-streaming).

Hosts por destino ([Regiones de EE. UU. y UE](https://developer.rhombus.com/es/api-regions) indica las variantes de la UE):

| Destino              | Host de EE. UU.                                                                                                                                                                              |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| API REST             | `https://api2.rhombussystems.com`                                                                                                                                                            |
| Medios y video       | `https://media.rhombussystems.com`, más los hosts de streaming por cámara que devuelve [`getMediaUris`](https://developer.rhombus.com/api-reference/camera-webservice/get-camera-media-uris) |
| WebSocket de eventos | `wss://ws.rhombussystems.com:8443/websocket`                                                                                                                                                 |
| Cámaras en tu LAN    | `https://<camera>.lan.rhombussystems.com:8000`, que devuelve `getMediaUris`                                                                                                                  |

## Encabezados de la solicitud

Una solicitud indica su **esquema** en `x-auth-scheme` y lleva la credencial en el encabezado que ese esquema lee:

| Credencial                                     | `x-auth-scheme`                                                                                                | Encabezado de la credencial                              | Adicional                                                                                                                                     |
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Clave de API                                   | `api-token`                                                                                                    | `x-auth-apikey`                                          | —                                                                                                                                             |
| Clave de API de certificado                    | `api`                                                                                                          | `x-auth-apikey`                                          | Certificado de cliente TLS                                                                                                                    |
| Access token de OAuth                          | `api-oauth-token`, u omítelo                                                                                   | `x-auth-access-token`, o `Authorization: Bearer <token>` | —                                                                                                                                             |
| Token federado                                 | `federated-token`                                                                                              | `x-auth-ft`                                              | Ambos pueden ir como parámetros de consulta: `?x-auth-scheme=federated-token&x-auth-ft=<token>`                                               |
| Clave, certificado o token de OAuth de partner | Los mismos tres esquemas; `partner-api-token`, `partner-api` y `partner-api-oauth-token` se aceptan como alias | Los mismos encabezados                                   | `x-auth-org: <client org UUID>` (consulta [Credenciales de partner](https://developer.rhombus.com/es/authentication#credenciales-de-partner)) |

```bash Clave de API
curl -X POST "https://api2.rhombussystems.com/api/camera/getMinimalCameraStateList" \
  -H "x-auth-scheme: api-token" \
  -H "x-auth-apikey: $RHOMBUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

```bash Access token de OAuth
curl -X POST "https://api2.rhombussystems.com/api/camera/getMinimalCameraStateList" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

Reglas que se aplican en todas partes:

- **Los nombres de los encabezados y el valor del esquema son exactos.** `x-auth-scheme: api-token` funciona; `Api-Token` no.
- **`Authorization: Bearer` lleva solo un access token de OAuth**, en la API REST, los hosts de medios y el WebSocket de eventos. Un encabezado Bearer sin `x-auth-scheme` se interpreta como un access token de OAuth. Las claves de API nunca van en `Authorization`.
- **Solo los tokens federados van en una URL.** `x-auth-scheme` y `x-auth-ft` pueden ser parámetros de consulta; las claves de API, los access tokens de OAuth y `x-auth-org` se leen solo de los encabezados.
- **Las credenciales están vinculadas a una región.** Una clave o un token de una organización de EE. UU. no funciona en los hosts de la UE, ni al revés. El error no menciona la región. Consulta [Regiones de EE. UU. y UE](https://developer.rhombus.com/es/api-regions).
- **Vigencias:** una clave de API funciona hasta que la eliminas o hasta su vencimiento (`expiresAtMs`), si lo tiene. Los access tokens de OAuth duran una hora. Los tokens federados duran el `durationSec` que pidas al generarlos: una hora de forma predeterminada, 24 horas como máximo.
- **La revocación surte efecto en un máximo de 60 segundos en todos los hosts.** Eliminar una clave, cambiar su rol o revocar una autorización de OAuth termina su acceso, y las conexiones WebSocket abiertas que la usaban se cierran.
- **Envía `Content-Type: application/json`** en cada POST a la API REST, incluso con un cuerpo vacío (`{}`).

## Credenciales de partner

Las claves de partner, las claves de certificado de partner y los tokens de OAuth de partner usan los mismos esquemas que las credenciales de organización. Para actuar en una organización cliente, envía el UUID de esa organización en `x-auth-org`:

- `x-auth-org` es **solo un encabezado**; nunca se lee de un parámetro de consulta. Significa lo mismo para claves, certificados y tokens de OAuth de partner, y un valor vacío cuenta como ausente.
- Fuera de los endpoints `/api/partner/`, **envía siempre `x-auth-org`**. Una solicitud de partner sin él sigue funcionando, pero la respuesta lleva `Deprecation: true` y `Sunset: Tue, 05 Jan 2027 00:00:00 GMT`, y después de esa fecha la solicitud falla. El WebSocket de eventos rechaza un handshake de partner sin `x-auth-org` con 403 `PERMISSION_REQUIRED`.
- Un valor mal formado devuelve 400 `INVALID_AUTH_ORG`; una organización cliente que tu cuenta de partner no gestiona devuelve 403 `PARTNER_CLIENT_ACCESS_DENIED`.

Consulta [API para partners](https://developer.rhombus.com/es/partner-api-calls) para listar clientes y hacer llamadas en su nombre.

## Cómo interpretar los errores de autenticación

Toda respuesta de error de la API REST, los hosts de medios y los handshakes de WebSocket tiene el mismo cuerpo JSON, y también lleva el ID de la solicitud en el encabezado `x-rhombus-txid`:

```json
{
  "msg": "Unauthorized",
  "error": true,
  "errorCode": "CREDENTIAL_EXPIRED",
  "errorMsg": "The supplied credential has expired.",
  "status": 401,
  "timestamp": 1792371600000,
  "txid": "yJ2kQw8LTaO1xX4hVd7mPA"
}
```

Decide según el estado y `errorCode`, muestra o registra `errorMsg`, e indica `txid` cuando contactes al soporte. El estado te dice qué parte de la solicitud corregir:

- **401**: Rhombus no pudo establecer quién llama. La credencial falta, está mal formada, es desconocida, venció o fue revocada. Corrige o reemplaza la credencial.
- **403**: la credencial es válida, pero no tiene permitido hacer esto. Cambia el rol, los scopes de OAuth, la organización o los límites del token; una credencial nueva del mismo tipo no sirve.

| Estado  | `errorCode`                    | Qué revisar                                                                                                                                                                                                                                                                                |
| ------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **401** | `UNAUTHENTICATED`              | No se presentó ninguna credencial: `x-auth-scheme` o el encabezado de la credencial falta o está mal escrito, o se envió una clave de API como parámetro de consulta                                                                                                                       |
| **401** | `INVALID_CREDENTIAL`           | El valor está dañado (al copiar y pegar, espacios en blanco), pertenece a la otra región o se envió con el esquema equivocado; o ya no existe: una clave eliminada, un token federado revocado o cuya credencial de origen ya no existe, un access token ya reemplazado por una renovación |
| **401** | `CREDENTIAL_EXPIRED`           | Renueva el access token de OAuth, genera un token federado nuevo o [rota](https://developer.rhombus.com/es/authentication/permissions#rotar-una-clave-de-api) una clave que llegó a su `expiresAtMs`                                                                                       |
| **401** | `CREDENTIAL_REVOKED`           | Se revocó la autorización de OAuth: el usuario, un administrador, o automáticamente al reutilizarse un refresh token ya reemplazado. Inicia sesión de nuevo                                                                                                                                |
| **401** | `CERTIFICATE_MISMATCH`         | `Client certificate does not match the api key`: presenta el certificado emitido para esta clave, con el esquema `api` (las claves con certificado funcionan solo en api2)                                                                                                                 |
| **403** | `PERMISSION_REQUIRED`          | El rol de la clave ([Permisos](https://developer.rhombus.com/es/authentication/permissions)). Para un token de OAuth, también sus scopes: un scope faltante agrega `WWW-Authenticate: Bearer error="insufficient_scope", scope="<required>"`                                               |
| **403** | `PARTNER_CLIENT_ACCESS_DENIED` | Tu cuenta de partner no gestiona la organización de `x-auth-org`                                                                                                                                                                                                                           |
| **403** | `DOMAIN_NOT_ALLOWED`           | Un token federado generado con un `domain` se usó desde otro origen, o desde un cliente que no envía `Origin` ni `Referer` ([El campo domain](https://developer.rhombus.com/es/authentication/federated-tokens#el-campo-domain))                                                           |
| **403** | `DEVICE_SCOPE_MISMATCH`        | Se usó un token federado limitado a un dispositivo para otro dispositivo                                                                                                                                                                                                                   |
| **400** | `INVALID_AUTH_ORG`             | `x-auth-org` no es un UUID de organización válido                                                                                                                                                                                                                                          |
| **404** | `NOT_FOUND`                    | La ruta `/api` no existe. Las rutas distinguen mayúsculas de minúsculas, así que una mayúscula equivocada también recibe 404                                                                                                                                                               |
| **429** | `RATE_LIMITED`                 | El límite de solicitudes de tu organización, o un límite por cámara para clips y fotogramas. Espera `Retry-After` segundos ([Límites de solicitudes](https://developer.rhombus.com/es/rate-limits))                                                                                        |
| **503** | `SERVICE_UNAVAILABLE`          | No se pudo verificar la autenticación. Reintenta con espera exponencial                                                                                                                                                                                                                    |

Algunas operaciones informan una acción rechazada con HTTP `200` y `"error": true` en el cuerpo, así que revisa el cuerpo además del estado. La página [Errores](https://developer.rhombus.com/es/errors) tiene el catálogo completo de códigos y las reglas de reintento.

Los hosts de medios y el WebSocket de eventos tienen sus propios casos de error; consulta [Medios y transmisiones](https://developer.rhombus.com/es/authentication/media#solución-de-problemas) y [Autenticación de WebSocket](https://developer.rhombus.com/es/websocket/authentication#solución-de-problemas).

## Próximos pasos

- **[Claves de API y certificados](https://developer.rhombus.com/es/authentication/api-keys)**: Crea una clave, elige su rol, usa mTLS, rota, renueva y revoca
- **[Tokens federados](https://developer.rhombus.com/es/authentication/federated-tokens)**: Tokens de corta duración para navegadores, apps móviles y cámaras en tu LAN
- **[Medios y transmisiones](https://developer.rhombus.com/es/authentication/media)**: Instantáneas, video en vivo y grabado, clips, audio y enlaces compartidos
- **[Permisos y rotación de claves](https://developer.rhombus.com/es/authentication/permissions)**: Roles, scopes de OAuth, rotación sin tiempo de inactividad y el registro de auditoría
