Autenticación y permisos
Cada llamada a la API de la plataforma Kaleidr incluye una credencial. Hay tres tipos, y la API trata cada uno de forma diferente:
- Una clave publicable identifica a tu organización en el navegador. Por sí sola no puede llamar a la API; se intercambia por una sesión.
- Un token de sesión es la credencial con la que el navegador llama realmente a la API. Tiene una duración limitada y está vinculado a un origen web y a un producto.
- Una clave de servidor es un secreto que tu backend envía directamente en cada solicitud.
Esta página explica cómo se envía cada credencial, cómo funciona el intercambio, qué habilitan los permisos, cómo se concede el permiso vendor y todos los errores de autenticación con sus causas y soluciones. Para saber qué puede hacer alguien con cada credencial si queda expuesta, consulta el modelo de seguridad.
Tipos de credenciales
| Credencial | Prefijo | Dónde se guarda | Cómo se utiliza | Plan |
|---|---|---|---|---|
| Clave publicable | kld_pk_live_… | Código fuente de la página | Se envía una vez al intercambio de sesiones; se rechaza en cualquier otro endpoint | Free, Pro, Enterprise |
| Token de sesión | kld_sess_live_… | Memoria del navegador | Se envía en cada llamada durante la ejecución desde la página para la que se emitió | Se emite a partir de una clave publicable o de un mapa publicado |
| Clave de servidor | kld_sk_live_… | Solo en tu backend | Se envía en cada llamada durante la ejecución; se rechaza si la solicitud incluye un encabezado Origin | Pro, Enterprise |
| Clave heredada | kld_live_… | Tu backend | Funciona como credencial directa, igual que una clave de servidor. Al rotarla, se genera una clave de servidor | Solo claves existentes |
Las claves creadas mediante la API de gestión de claves con environment: "test" llevan test en lugar de live (kld_pk_test_…, kld_sk_test_…). Una clave de prueba no puede cargar teselas del mapa base.
Una clave se muestra completa una sola vez, al crearla o rotarla. Kaleidr solo almacena un hash, por lo que no es posible recuperar una clave perdida: debes rotarla.
Cómo enviar una credencial
Envía la credencial en cualquiera de los dos encabezados. Ambos se aceptan en todos los endpoints.
Authorization: Bearer kld_sk_live_…
X-Api-Key: kld_sk_live_…
Si una solicitud incluye ambos encabezados, se utiliza Authorization cuando su valor comienza con un prefijo de Kaleidr; de lo contrario, se lee X-Api-Key. Nunca pongas una clave de servidor en una URL.
Qué puede hacer cada credencial en un endpoint de ejecución (todos excepto el intercambio de sesiones):
| Credencial | Resultado en un endpoint de ejecución |
|---|---|
| Clave publicable | 401 publishable_requires_session. Intercámbiala primero. |
Clave de servidor sin encabezado Origin | Se acepta y después se comprueban la lista de IP permitidas, los permisos, los productos autorizados, la cuota y el límite de solicitudes. |
Clave de servidor con encabezado Origin | 403 server_key_in_browser. Los navegadores añaden Origin a las solicitudes entre sitios, lo que permite a la API reconocer una clave de servidor utilizada desde una página web. |
| Token de sesión desde el origen para el que se emitió | Se acepta. |
Token de sesión con un Origin diferente | 403 session_origin_mismatch. |
Token de sesión de un mapa publicado sin Origin | 403 session_origin_mismatch. |
El SDK de JavaScript aplica la misma regla antes: Kaleidr.mount rechaza una clave kld_sk_… en el navegador sin realizar ninguna solicitud.
Intercambio de sesiones
Una clave publicable se intercambia por un token de sesión en un único endpoint. El SDK hace esto en cada montaje con clave y mantiene el token actualizado; solo necesitas llamarlo tú mismo cuando desarrolles tu propio cliente para navegador.
POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions
X-Api-Key: kld_pk_live_…
Content-Type: application/json
{ "product": "chat" }
El campo product es obligatorio y debe ser chat, editor, viewer o tile. La solicitud debe incluir un encabezado Origin. El navegador lo añade automáticamente.
{
"session_token": "kld_sess_live_eyJhbGciOi…",
"expires_in": 900,
"product": "chat",
"basemap_style_id": null
}
| Campo | Significado |
|---|---|
session_token | Credencial para las llamadas durante la ejecución. Formato kld_sess_{env}_{token}. |
expires_in | Duración en segundos. Una sesión con clave dura 900 segundos. Lee este campo; no fijes el número directamente en el código. |
product | Producto al que está vinculada la sesión. |
basemap_style_id | Mapa base predeterminado de tu organización, o null si no hay ninguno configurado. |
A qué está vinculada una sesión
- Un origen. El
Originde la solicitud de intercambio. Se rechaza cualquier llamada desde otro origen. - Un producto. Una sesión de
tileno puede llamar a endpoints de chat. - Un conjunto reducido de permisos. La sesión conserva solo el permiso que necesita su producto:
aipara chat,designpara editor,mapspara tile y ninguno para viewer. Una sesión de chat también conservavendorcuando la clave lo tiene y tu plan lo permite (Enterprise). Las sesiones de los demás productos nunca incluyenvendor.
Renovación
Un cliente no puede solicitar una duración mayor. Vuelve a realizar el intercambio antes de que venza expires_in. El SDK renueva la sesión 90 segundos antes de su vencimiento, cuando una pestaña en segundo plano vuelve a estar visible y la sesión vence en 90 segundos o menos (o ya ha vencido), y cada 30 segundos después de un intento de renovación fallido. Si falla el primer intercambio, el montaje falla y no se reintenta.
Cada intercambio con product: "tile" consume una carga de mapa de la asignación de tu organización; intercambiar sesiones de otros productos no tiene coste. El intercambio tiene un límite de frecuencia propio por clave, independiente de las llamadas de ejecución. Consulta Cuotas y límites de frecuencia.
Orden de las comprobaciones
El intercambio se detiene en la primera comprobación que falla:
| Orden | Comprobación | Error |
|---|---|---|
| 1 | La clave es válida | 401 Invalid or missing API key |
| 2 | Límite de frecuencia de intercambios de la clave | 429 rate_limited |
| 3 | La clave es publicable | 403 publishable_key_required |
| 4 | La solicitud incluye un encabezado Origin | 403 origin_required |
| 5 | El origen está en la lista de orígenes permitidos de la clave, si existe tal lista | 403 origin_not_allowed |
| 6 | La clave no excluye este producto mediante sus restricciones | 403 product_not_allowed |
| 7 | Tu plan incluye el producto | 403 tier_capability_not_allowed |
| 8 | La clave tiene el permiso que necesita el producto | 403 insufficient_scope, o tier_capability_not_allowed si la clave tiene el permiso, pero tu plan ya no lo incluye |
| 9 | Para tile: queda una carga de mapa disponible | 429 map_load_quota_exceeded |
Prueba desde una terminal
curl -s https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions \
-H "X-Api-Key: kld_pk_live_…" \
-H "Origin: https://www.example.com" \
-H "Content-Type: application/json" \
-d '{"product":"chat"}'
Esto funciona porque Origin es un encabezado normal que cualquier cliente ajeno al navegador puede establecer. Por eso, la lista de orígenes permitidos se describe como un control para navegadores y no como un secreto: consulta CORS y orígenes permitidos.
Sesiones para un mapa publicado
Un mapa publicado desde Studio cuyo mosaico Kaleidr AI activa Control Tower o Popup Window puede ofrecer chat a los visitantes sin ninguna clave en la página. En su lugar, la página intercambia el identificador público del mapa y la función que abre:
POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/share-sessions
Content-Type: application/json
{ "share_id": "your-map-id", "feature": "control_tower" }
{ "session_token": "kld_sess_live_eyJhbGciOi…", "expires_in": 300, "product": "chat" }
Esta sesión solo permite chat, incluye el permiso ai, dura 300 segundos y se factura a la organización propietaria del mapa. Nunca incluye vendor. Debe utilizarse desde la misma página que la solicitó: se rechaza una llamada sin Origin o con uno diferente. Los motivos de rechazo son:
| Estado | Código | Causa |
|---|---|---|
| 403 | origin_required | La solicitud no incluye el encabezado Origin. |
| 404 | not_found | No existe un mapa publicado ni un enlace compartido con ese identificador, o el mapa del enlace compartido no está publicado. |
| 403 | chat_disabled | La Kaleidr AI del mapa no activa la función solicitada. |
| 403 | origin_not_allowed | La página no está entre los dominios permitidos del mapa. |
| 403 | owner_has_no_organization | El propietario del mapa no tiene una organización a la que cargar el coste. |
| 403 | tier_capability_not_allowed | El plan del propietario no incluye chat. |
| 429 | rate_limited | Demasiados intercambios para este mapa o desde esta dirección. |
La configuración se explica en Kaleidr AI en un mapa publicado.
Permisos
Cada clave tiene permisos. Cada familia de endpoints necesita uno.
| Permiso | Qué habilita | Quién lo necesita |
|---|---|---|
ai | Endpoints /chat/* y /retrieval/* | Chat y cualquier backend que llame a los endpoints de chat o búsqueda |
design | Endpoints /design/* | Sesiones de Editor y cualquier backend que llame a los endpoints de diseño |
maps | Sesiones de mapa base | Tile |
vendor | Por sí solo, nada. Permite que las respuestas de chat utilicen los datos publicados de tu organización. | Chat, cuando has subido datos |
Una clave nueva recibe ai, maps y design, salvo que solicites otra cosa. En el plan Free, la clave siempre incluye todas las capacidades gratuitas: exactamente esos tres permisos y los cuatro productos (chat, editor, viewer, tile), cualquiera que sea el producto solicitado. vendor nunca es predeterminado; solo una organización Enterprise puede crear una clave que lo incluya.
Se rechaza con 403 tier_capability_not_allowed cualquier solicitud de creación de clave que indique un permiso o producto no disponible en tu plan. Nunca se elimina silenciosamente un elemento solicitado. En la práctica, esto ocurre al solicitar vendor con Free o Pro.
Los permisos se fijan cuando se crea la clave. Ningún endpoint ni ajuste permite modificarlos después, y una clave rotada los hereda, salvo los que tu plan actual ya no admite. Para cambiar los permisos de una clave, crea otra y revoca la anterior.
La rotación en Free sigue las reglas de Free. En el plan Free, la clave que reemplaza a una clave publicable rotada incluye todas las capacidades gratuitas (ai, maps, design y los cuatro productos), independientemente de los permisos anteriores. No se pueden rotar claves de servidor ni heredadas en Free: la solicitud se rechaza con 403 free_plan_publishable_only.
Las capacidades de una clave dependen tanto de la clave como del plan
En cada solicitud se comparan los permisos y productos guardados en la clave con lo que incluye el plan de tu organización en ese momento. Cambiar de plan no modifica la clave, pero sí puede cambiar lo que permite hacer:
insufficient_scope: la clave nunca recibió ese permiso. Solución: utilizar una clave que lo tenga.tier_capability_not_allowed: la clave tiene el permiso, pero tu plan actual no lo incluye. Solución: cambiar de plan.
vendor es la excepción al segundo caso porque no habilita ningún endpoint. No se rechaza una clave que conserva vendor en un plan inferior a Enterprise: las solicitudes se procesan correctamente, pero las respuestas se generan sin tus datos.
Una clave con una lista de productos vacía puede utilizar todos los productos incluidos en tu plan. Una clave sin permisos se rechaza en todas partes.
El límite de productos se aplica a todas las claves
allowed_products restringe una clave a algunos de los productos chat, editor, viewer y tile. La restricción se aplica a todos los tipos de clave, en el momento en que se utilizan:
| Clave | Dónde se comprueba el límite | Rechazo |
|---|---|---|
| Clave publicable | En el intercambio de sesiones, según el product solicitado | 403 product_not_allowed |
| Clave de servidor o heredada | En cada solicitud durante la ejecución, según el producto al que pertenece el endpoint | 403 product_not_allowed |
Cada familia de endpoints pertenece al producto cuyo permiso necesita:
| Endpoints | Permiso | Producto que debe permitir una clave restringida |
|---|---|---|
/chat/*, /retrieval/* | ai | chat |
/design/* | design | editor |
Por tanto, una clave de servidor creada con "allowed_products": ["tile"] se rechaza en /chat/control/stream con 403 product_not_allowed, aunque tenga el permiso ai. Una clave de servidor limitada únicamente a viewer no puede llamar a ningún endpoint de ejecución, porque un mapa publicado no necesita clave. Deja la lista vacía si la clave debe acceder a todos los endpoints que permitan sus permisos.
Aquí no se vuelve a comprobar el token de sesión: ya quedó vinculado a un único producto cuando se intercambió.
| Free | Pro | Enterprise | |
|---|---|---|---|
| Claves publicables | Sí | Sí | Sí |
| Claves de servidor | No | Sí | Sí |
ai, maps, design | Sí | Sí | Sí |
vendor | No | No | Sí |
Pro añade claves de servidor y un límite superior de claves activas a las capacidades de Free. La tabla completa de planes está en Obtener una clave de API.
El permiso vendor
vendor no habilita ningún endpoint. Determina si una respuesta de chat realizada con esa clave puede utilizar los datos publicados de tu organización, además del conocimiento general de Kaleidr. El proceso completo, desde la carga hasta la respuesta, se explica en Tus datos: descripción general.
Quién puede utilizarlo:
- Los planes Free y Pro no pueden incluir
vendor. Una solicitud para crear una clave que lo incluya se rechaza con 403tier_capability_not_allowed, independientemente de que se envíevendor_acknowledgedo no. No se crea ninguna clave. - Enterprise puede crear claves con
vendor.
El permiso sirve para leer datos mediante una clave. Subir los datos requiere un permiso diferente, que corresponde a un propietario o administrador de la organización, no a ninguna clave, y también está disponible solo en Enterprise: Free y Pro no pueden subir datos empresariales. Los archivos que un usuario con sesión iniciada añade a un mapa en Kaleidr Studio constituyen otra función, disponible en todos los planes, y ningún permiso de clave permite leerlos: consulta Conjuntos de datos en un mapa.
La página API Keys no puede conceder vendor. Crea la clave mediante la API de gestión de claves:
curl -s https://api.kaleidr.com/shared-api/api-keys \
-H "Authorization: Bearer $KALEIDR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "store-locator-chat",
"key_type": "publishable",
"scopes": ["ai", "vendor"],
"vendor_acknowledged": true,
"allowed_origins": ["https://www.example.com"]
}'
El campo vendor_acknowledged: true es obligatorio para una clave publicable que incluya vendor. Sin él, la solicitud falla con 422 vendor_scope_requires_acknowledgement. Este campo existe porque una clave publicable aparece en el código fuente público de la página: cualquier visitante puede leer los datos a los que la clave da acceso. Una clave de servidor no requiere este reconocimiento.
Antes de incluir vendor en una clave publicable:
- Utiliza una clave por sitio web. Solo el sitio que necesita responder con tus datos debe tener
vendor. - Considera públicos todos los datos que publiques para ese sitio. No publiques precios de coste, tarifas no anunciadas ni nada que no mostrarías en la página.
- Recuerda que las sesiones ya abiertas no adquieren el permiso. Una clave creada con
vendorlo concede únicamente a las sesiones intercambiadas a partir de ese momento.
Para retirar vendor, revoca la clave y crea otra sin ese permiso. La revocación se aplica en la siguiente solicitud, incluso a las sesiones ya emitidas.
Cuando una organización deja Enterprise
Pasar de Enterprise a Pro o Free no modifica las claves ni hace que fallen:
| Elemento | Después del cambio |
|---|---|
Clave que incluye vendor | Sigue funcionando para todo lo demás. Sus respuestas dejan de utilizar tus datos. Ningún error, estado o campo lo indica. |
| Sesiones de navegador emitidas antes del cambio | Finalizan. La siguiente solicitud devuelve 401, y el SDK obtiene una sesión nueva que no incluye vendor. |
Rotar una clave que incluye vendor | En Pro: se realiza correctamente con 201. La clave nueva tiene los mismos permisos, sin vendor; su lista de productos no cambia. En Free: la clave que sustituye a una publicable incluye ai, maps, design y los cuatro productos, independientemente de los permisos previos, y se rechaza rotar una clave de servidor o heredada con 403 free_plan_publishable_only. |
Crear una clave con vendor | Se rechaza con 403 tier_capability_not_allowed. |
| Tus versiones publicadas | Los propietarios y administradores pueden seguir enumerándolas, retirar su publicación y eliminarlas en cualquier plan mediante la API de carga. En Free y Pro, subir y publicar se rechaza con 403 vendor_data_not_on_plan. |
Al volver a Enterprise, una clave que aún conserve vendor vuelve a acceder a los datos. Una clave de sustitución rotada mientras se tenía un plan inferior no recupera el permiso: crea una clave nueva.
Restringir una clave
| Restricción | Se aplica a | Configurable en API Keys | Configurable mediante la API de gestión | Rechazo |
|---|---|---|---|---|
| Orígenes permitidos | Claves publicables | Sí | Sí (allowed_origins) | 403 origin_not_allowed durante el intercambio |
| Productos permitidos | Cualquier clave | No | Sí (allowed_products) | 403 product_not_allowed: durante el intercambio para una clave publicable; en cada solicitud de ejecución para una clave de servidor o heredada. Consulta límites de productos. |
| Lista de IP permitidas | Claves de servidor y heredadas | No | Sí (allowed_ips) | 403 ip_not_allowed |
| Límite mensual | Cualquier clave | No | Sí (monthly_cap_tokens) | 429 quota_exceeded |
| Caducidad | Cualquier clave | No | Sí (expires_at) | 401 después de la fecha |
| Permisos | Cualquier clave | No | Solo al crearla (scopes) | 403 insufficient_scope |
Orígenes permitidos. Hasta 100 entradas, cada una con el formato scheme://host[:port], sin ruta. Una lista vacía en una clave publicable permite cualquier origen. Consulta los detalles y posibles errores en CORS y orígenes permitidos.
Lista de IP permitidas. Hasta 100 direcciones IP o bloques CIDR. Se rechaza un bloque que coincida con todas las direcciones (/0): deja la lista vacía para permitir «cualquier dirección». Cuando una clave tiene una lista y no se puede determinar la dirección del solicitante, la solicitud se rechaza.
Límite mensual. Tope de créditos de IA que esta clave puede consumir de los créditos de tu organización durante un período de facturación. Consulta Cuotas y límites de frecuencia.
Cómo afectan los cambios a una sesión ya emitida
Una sesión vuelve a consultar su clave de origen en cada solicitud, por lo que retirar el acceso surte efecto rápidamente. Para añadir acceso se necesita un nuevo intercambio.
| Cambio en la clave o cuenta | Efecto sobre una sesión ya emitida |
|---|---|
| Clave revocada o rotada sin período de gracia | 401 en la siguiente solicitud. |
| Se elimina el origen de la sesión de los orígenes permitidos de la clave | 401 en la siguiente solicitud. |
| Se elimina el producto de la sesión de los productos permitidos de la clave | 401 en la siguiente solicitud. |
| Se reduce el nivel del plan | Las sesiones emitidas antes del cambio reciben 401. Las intercambiadas después reciben 403 tier_capability_not_allowed para lo que el plan ya no incluye. |
| Se añade o reduce un límite mensual | Se aplica en la siguiente solicitud. |
| Se elimina el límite mensual | Se aplica a partir del siguiente intercambio. |
| Se mejora el plan | Se aplica a partir del siguiente intercambio. |
Como las sesiones duran minutos, «a partir del siguiente intercambio» supone una espera breve. La renovación del SDK incorpora el cambio sin modificar el código.
API de gestión de claves
La página API Keys de kaleidr.com/api-keys permite configurar el nombre de una clave, su tipo y sus orígenes permitidos. Todo lo demás que se explica aquí se configura con la misma API que utiliza esa página.
- URL base:
https://api.kaleidr.com/shared-api/api-keys - Autenticación:
Authorization: Bearercon el token de acceso de una cuenta de Kaleidr con sesión iniciada que sea propietaria o administradora de la organización. Aquí no se acepta una clave de la plataforma. Actualmente no existe una credencial de larga duración independiente para gestionar claves. - Organización: si no se especifica ninguna, se utiliza la organización principal. Para indicar otra, envía
org_iden el cuerpo JSON al crear la clave y como parámetro de consulta?org_id=en las demás rutas. Si envíasorg_idcomo parámetro de consulta en la ruta de creación, se ignora.
| Método y ruta | Finalidad | Respuesta correcta |
|---|---|---|
POST / | Crear una clave | 201, objeto de clave y plaintext_key |
GET / | Enumerar claves activas, de más nuevas a más antiguas | 200 |
GET /{id}/events?limit=1..200 | Eventos de auditoría de una clave | 200 |
PATCH /{id} | Cambiar restricciones | 200, objeto de clave |
POST /{id}/rotate | Sustituir la clave | 201, clave nueva y plaintext_key |
POST /{id}/revoke | Revocar la clave | 200, objeto de clave |
No existe una ruta de eliminación: revoca una clave para retirarla.
Campos admitidos al crear una clave:
| Campo | Tipo | Valor predeterminado | Notas |
|---|---|---|---|
name | cadena de 1 a 200 caracteres | obligatorio | |
org_id | UUID | tu organización principal | Organización en la que se crea la clave. Se envía en el cuerpo; se ignora el parámetro de consulta en esta ruta. |
key_type | "publishable" o "server" | "publishable" | "server" se rechaza en Free con 403 free_plan_publishable_only. |
environment | "live" o "test" | "live" | |
scopes | matriz de cadenas | ["ai", "maps", "design"] | Entre ai, maps, design, vendor. Cualquier otro valor produce 422 unknown_scope. Un permiso que tu plan no incluye (vendor por debajo de Enterprise) produce 403 tier_capability_not_allowed. |
allowed_origins | matriz de cadenas, hasta 100 | [] | En una clave publicable, una lista vacía significa que se permite cualquier origen. |
allowed_products | matriz de cadenas | [] | Entre chat, editor, viewer, tile. Una lista vacía permite todos. Cualquier otro valor produce 422 unknown_product. Se aplica a claves publicables, de servidor y heredadas: consulta límites de productos. |
allowed_ips | matriz de cadenas, hasta 100 | [] | Direcciones IP o bloques CIDR. |
monthly_cap_tokens | entero igual o superior a 0 | ninguno | Un valor de 1 o más limita la clave. 0 o null significa que no hay límite. |
expires_at | fecha y hora futuras | ninguno | |
vendor_acknowledged | booleano | false | Obligatorio para una clave publicable con vendor (Enterprise). |
PATCH acepta name, allowed_origins, allowed_products, allowed_ips, monthly_cap_tokens y expires_at. Envía únicamente los campos que quieras cambiar; un null explícito borra un valor. No acepta scopes.
rotate acepta { "grace_hours": 0 }, entre 0 y 8760. La sustitución hereda los permisos de la clave anterior, salvo aquellos que el plan actual ya no admita, que se excluyen. En Free, la clave nueva siempre incluye todas las capacidades gratuitas y no se pueden rotar claves de servidor o heredadas (403 free_plan_publishable_only). Con 0, la clave antigua y sus sesiones dejan de funcionar inmediatamente. Con un período de gracia, la clave antigua sigue funcionando hasta que finalice ese período, continúa contando para el límite de claves activas de tu plan y ya no se puede volver a rotar. La página API Keys aplica un período de gracia de 24 horas al rotar.
Los errores de estas rutas se enumeran en Errores: gestión de claves.
Errores de autenticación
Un 401 significa que la API no acepta la credencial. Un 403 significa que reconoce la identidad, pero deniega la solicitud. Todos tienen la estructura {"detail": "<code>"}.
En un navegador, una solicitud rechazada por sus credenciales u origen no incluye un encabezado CORS, de modo que la página ve un error CORS y no el cuerpo de la respuesta. Si la solicitud se rechaza más adelante por el permiso o el plan, la respuesta es legible y el SDK informa de kaleidr session exchange failed (403). En ambos casos, abre la solicitud en la pestaña Network del navegador para leer el código. Consulta CORS y orígenes permitidos.
| Estado | Código | Causa | Solución |
|---|---|---|---|
| 401 | Invalid or missing API key | No se proporcionó credencial; clave desconocida, revocada o vencida; sesión vencida; sesión cuya clave se revocó, perdió el origen o producto permitido, o se emitió antes de una reducción de plan; organización suspendida o sin plan. | Comprueba el valor y el estado de la clave en API Keys. Si se trata de una sesión, vuelve a intercambiarla. |
| 401 | publishable_requires_session | Se envió una clave publicable a un endpoint de ejecución. | Intercámbiala por una sesión o llama desde un backend con una clave de servidor. |
| 403 | publishable_key_required | Se llamó al intercambio de sesiones con una clave de servidor o heredada. | Utiliza una clave kld_pk_… durante el intercambio. |
| 403 | origin_required | Intercambio de sesiones sin encabezado Origin. | Llama desde una página del navegador. |
| 403 | origin_not_allowed | El origen de la página no está entre los permitidos de la clave, o no figura entre los dominios autorizados del mapa publicado. | Añade el origen exacto a la clave o el dominio al mapa. |
| 403 | product_not_allowed | Los productos permitidos de la clave excluyen este producto: el product solicitado durante el intercambio o, para una clave de servidor o heredada, el producto al que pertenece el endpoint llamado. | Cambia allowed_products o utiliza otra clave. |
| 403 | insufficient_scope | La clave se creó sin el permiso necesario para este endpoint o producto. | Utiliza una clave que tenga el permiso. Los permisos no se pueden editar. |
| 403 | tier_capability_not_allowed | La clave tiene el permiso o producto, pero tu plan actual no lo incluye. | Cambia de plan en kaleidr.com/billing. |
| 403 | server_key_in_browser | Se envió una clave de servidor con un encabezado Origin. | Traslada la llamada al backend. Si la clave apareció en el código fuente de una página, rótala. |
| 403 | session_origin_mismatch | Se utilizó un token de sesión desde un origen distinto del que lo emitió, o una sesión de mapa publicado sin Origin. | Intercambia una sesión desde la página donde se utilizará. |
| 403 | ip_not_allowed | Se utilizó una clave de servidor o heredada con lista de IP permitidas desde una dirección no incluida. | Llama desde una dirección autorizada o modifica allowed_ips. |
| 403 | chat_disabled | Intercambio de mapa publicado: la Kaleidr AI del mapa no activa la función solicitada. | Activa Control Tower o Popup Window en el mosaico Kaleidr AI del mapa en Studio. |
| 403 | owner_has_no_organization | Intercambio de mapa publicado: el propietario del mapa no tiene organización. | El propietario debe crear una organización o unirse a una. |
| 404 | not_found | Intercambio de mapa publicado: no existe ningún mapa publicado ni enlace compartido con ese identificador. | Comprueba el identificador y que el mapa esté publicado. |
El catálogo completo, incluidas las respuestas 429 y 5xx, figura en Errores.
Páginas relacionadas
- Modelo de seguridad: qué puede hacer cada credencial si queda expuesta.
- CORS y orígenes permitidos: cómo se aplica la lista de orígenes.
- Endpoints: a qué permite llamar cada permiso.
- Obtener una clave de API: cómo crear una clave en la página API Keys.