---
title: "Cómo compartir claves de API de forma segura | Blog de LinkPilot"
url: https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely
description: "No pegues una clave de API en un chat ni en un correo. Envía un enlace secreto de un solo uso, cifrado en tu navegador, y rota la clave que ya pegaste."
lang: es
---

Seguridad (https://uselinkpilot.com/es/blog/category/security)

# Cómo compartir claves de API de forma segura

No pegues una clave de API en un chat ni en un correo. Envía un enlace secreto de un solo uso, cifrado en tu navegador, y rota la clave que ya pegaste.

W. Miller (https://uselinkpilot.com/es/author/w-miller)26 de mayo de 2026 · Actualizado el 22 de octubre de 2026 · Sobre LinkPilot (https://uselinkpilot.com/es/about)

No pegues una clave de API en un chat ni en un correo. Envíala como enlace secreto de un solo uso (https://uselinkpilot.com/es/tools/free-secret-link-generator): la clave se cifra en tu navegador, la clave de descifrado se queda en la parte del enlace que va después del #, y la copia almacenada se destruye la primera vez que se abre. Después, rota cualquier clave que ya se haya pegado como texto sin cifrar.

El resto de esta guía entra en detalle: por qué fallan los canales habituales, el procedimiento exacto de entrega, qué hacer si una clave se filtra de todos modos y los casos en los que un enlace de un solo uso no es la herramienta adecuada.

## ¿Por qué no es seguro enviar una clave de API por Slack o por correo?

Porque los dos guardan el mensaje mientras cualquier sistema lo retenga, y por el camino lo copian en cada dispositivo y en cada exportación.

- **En los dos se puede buscar para siempre.** Una clave compartida en 2023 puede ser el origen de tu próximo incidente. Los atacantes que entran en el chat o el buzón de una empresa buscan de forma rutinaria justo las cadenas que tienen las claves de API: `sk_live`, `AKIA`, `ghp_`, `Bearer`.
- **Los dos se sincronizan en todas partes.** Teléfonos, portátiles personales, tabletas: dispositivos que quedan fuera de tus controles de seguridad y fuera del alcance de tu política de borrado remoto.
- **Los dos se exportan.** Las revisiones de cumplimiento, los procesos judiciales y las exportaciones del espacio de trabajo generan copias del historial. Cada exportación es otro lugar donde vive la clave.
- **Los dos sobreviven a la baja de una persona.** El contrato del colaborador externo termina; el hilo de mensajes directos con tu clave de Stripe, no.

Poner un secreto en cualquiera de las dos herramientas significa aceptar que vivirá allí donde acabe el mensaje, mientras algo lo conserve. Ninguno de los dos sistemas se diseñó para olvidar.

## Antes de compartir: reduce el alcance de la clave

La mejor entrega es aquella en la que la clave entregada apenas importa. Antes de generar nada, aplica el mínimo privilegio en el origen:

- **Limita sus permisos.** Claves restringidas de Stripe (https://docs.stripe.com/keys), tokens de acceso personal con permisos detallados de GitHub (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens), políticas de AWS IAM limitadas a acciones y recursos concretos: la mayoría de los proveedores serios te dejan crear una clave que solo hace lo único que necesita el destinatario.
- **Elige solo lectura**, salvo que de verdad haga falta escribir.
- **Configura la expiración en el proveedor** donde la plataforma lo permita (los PAT con permisos detallados de GitHub, las credenciales temporales de AWS mediante STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)). Así, incluso una clave filtrada tiene fecha de expiración, pase lo que pase después.
- **Ponle el nombre del destinatario** (`vendor-x-readonly`) para que, dentro de seis meses, revocarla sea una decisión de un vistazo y no un trabajo de arqueología.

Con una clave limitada, que expira y de solo lectura, la peor filtración pasa de incidente a simple molestia.

## El procedimiento de entrega

1. **Genera la clave en el sistema de origen** (AWS, Stripe, tu propia API) con los permisos mínimos, como se explica arriba.
2. **Pégala en un enlace secreto de un solo uso** con «Destruir tras la lectura» activado y la expiración más corta que sirva: 1 hora es la opción predefinida más corta, después vienen 24 horas y 7 días, y el plan Pro permite elegir fecha y hora. Lo justo para la entrega real, ni un minuto más.
3. **Añade una frase de contraseña y envíala por otro canal**: el enlace por correo y la frase de contraseña por SMS o por mensaje directo de Slack. En LinkPilot, la frase de contraseña, la expiración personalizada y el historial de auditoría son funciones del plan Pro, por 29 USD al mes. Si uno de los dos canales se filtra, el atacante solo tiene la mitad del rompecabezas. (LinkPilot calcula el hash de la frase de contraseña en el navegador con SHA-256 antes de enviarla; la frase original nunca llega a la base de datos ni a los registros del servidor, y los intentos están limitados a 5 por IP y minuto).
4. **Envía el enlace.**
5. **Confirma por otro canal que el destinatario lo ha recibido** y revisa el historial de auditoría: una visualización, a la hora y desde el lugar esperados. Ese es tu acuse de recibo.

Si nadie abre el enlace antes de que expire, revócalo y envía uno nuevo. No amplíes la expiración ni lo reutilices.

## Ejemplo: entregar una clave restringida de Stripe

```bash
# generate a restricted key with the minimum needed scopes
stripe api_keys create \
  --restricted \
  --display-name "vendor-x-readonly"

# pipe the resulting key into a LinkPilot secret
curl -X POST https://api.uselinkpilot.com/v1/secrets \
  -H "Authorization: Bearer $LP_KEY" \
  -d 'payload=sk_restricted_…' \
  -d 'expires_in=3600' \
  -d 'burn_after_read=true'
```

Lo que ve el destinatario: al abrir el enlace aparece una página con el botón «Mostrar», no la clave. Las vistas previas de los chats y los escáneres de correo que cargan la URL por adelantado solo obtienen metadatos, porque una visualización se registra únicamente con la acción explícita de mostrar, nunca con el `GET`. Cuando el destinatario hace clic en «Mostrar» (y escribe la frase de contraseña, si la hay), ve la clave exactamente una vez. Después, el contenido almacenado se sobrescribe y el enlace devuelve HTTP 410. Aunque el correo se reenvíe por toda la empresa, solo la primera persona que lo abrió pudo leerlo, y el historial de auditoría te dice quién fue.

## Qué canal usar en cada entrega

| Situación | Método recomendado | Notas |
| --- | --- | --- |
| Compañero en la misma sala o en una llamada | Enlace de un solo uso, expiración de 1 hora (la opción predefinida más corta) | Frase de contraseña opcional: puedes confirmar la recepción en directo |
| Compañero en remoto | Enlace de un solo uso + frase de contraseña por un segundo canal | Expiración de 1 hora |
| Colaborador externo o agencia | Clave con permisos limitados + enlace de un solo uso + frase de contraseña | Ponle a la clave su nombre; anota en el calendario la revocación para el fin del contrato |
| Cliente que recibe su propia clave | Enlace de un solo uso desde tu aplicación o tu proceso de soporte | Expiración de 24 horas; pídele que la guarde de inmediato |
| Pipeline de CI/CD o servicio | Almacén de secretos de la plataforma (Actions secrets, Vault, ASM) | Nunca un enlace: las máquinas no hacen entregas |
| Todo el equipo, acceso continuo | Bóveda de un gestor de contraseñas | Esto es almacenamiento y control de acceso, no una entrega |

## ¿Qué hacer si se filtra una clave de API?

Dala por comprometida y rótala en el proveedor; eliminar el mensaje no sirve de nada. Esto vale para cualquier clave que haya pasado por un mensaje de chat, el cuerpo de un correo, una captura de pantalla, un commit de git o un pegado público. Por este orden:

1. **Emite primero la clave de sustitución**, si el proveedor permite dos claves activas a la vez. Así evitas cortes para quienes la usan legítimamente.
2. **Revoca la clave filtrada en el proveedor.** Es el único paso que de verdad pone fin a la exposición; eliminar el mensaje de Slack no lo hace.
3. **Entrega la clave nueva como corresponde**: enlace de un solo uso, frase de contraseña y expiración corta, según el procedimiento de arriba.
4. **Revisa los registros de uso del proveedor** para la clave filtrada entre la exposición y la revocación. Si hay llamadas inesperadas, ya no es una limpieza, es un incidente.
5. **Corrige el origen del pegado**: lleva el secreto a tus herramientas de variables de entorno incluidas en `.gitignore`, activa el escaneo de secretos en tu servicio de repositorios o actualiza el procedimiento que le dijo a alguien que lo enviara por mensaje directo.

Todo el ciclo debería llevar minutos. Si rotar una clave da tanto miedo que la gente lo evita, esa fragilidad es la verdadera vulnerabilidad: corrígela primero.

## Qué evitar

- **Volver a enviar el mismo secreto.** Rótalo. Reenviarlo borra la garantía de auditoría de «una sola exposición», que es lo que hacía valioso el enlace de un solo uso.
- **Plazos de expiración largos.** Que sean cortos por defecto. La mayoría de las entregas se completan en minutos; un plazo de 8 horas solo es una filtración más larga.
- **Prescindir de la frase de contraseña.** Apenas cuesta nada y protege frente a filtraciones accidentales de la URL: correos reenviados, pantallas compartidas en una reunión, miradas indiscretas a una pantalla compartida.
- **Capturas de pantalla de claves.** Acaban en el carrete de fotos, en la sincronización de fotos en la nube y en la búsqueda de imágenes. Una captura tiene la misma permanencia que pegar en un chat, con peor búsqueda para _ti_ y una búsqueda perfecta para el OCR.
- **Usar la herramienta de enlaces como almacén.** El enlace es el mensajero, no la bóveda. El destinatario debe guardar la clave en un gestor de contraseñas o en sus herramientas de variables de entorno en cuanto la reciba.

## Cuándo un enlace de un solo uso no es la herramienta adecuada

Sección de sinceridad: este método tiene límites.

- **Las credenciales entre máquinas** van en un gestor de secretos o en el almacén nativo de la plataforma, inyectadas en el despliegue o en tiempo de ejecución. Que una persona haga clic en un enlace no es un paso de despliegue.
- **Las credenciales compartidas de larga duración** van en un gestor de contraseñas con control de acceso real y revocación por persona.
- **La rotación de alta frecuencia** (claves que cambian cada hora) debe automatizarse de principio a fin; ni personas ni enlaces deberían formar parte de ese ciclo.
- **Secretos que no puedes permitir que toque ningún tercero**: haz la entrega fuera de internet. _Actualización del 29 de septiembre de 2026: este punto decía al principio que LinkPilot no ofrecía cifrado de extremo a extremo y que había que usar una herramienta con cifrado de extremo a extremo. LinkPilot ahora cifra el texto en el navegador, así que solo almacena texto cifrado, y también los archivos adjuntos. La página de arquitectura de seguridad (https://uselinkpilot.com/es/security-architecture) explica exactamente qué está protegido y qué no._

Para el caso habitual, una persona que entrega una credencial a otra persona una sola vez, el enlace de un solo uso con frase de contraseña y expiración corta es el método sencillo más sólido que existe.

## Lecturas relacionadas

- Por qué las URL filtran información confidencial: https://uselinkpilot.com/es/blog/why-urls-leak-sensitive-information
- Compartir contraseñas de forma segura: 5 métodos comparados: https://uselinkpilot.com/es/secure-password-sharing
- Arquitectura de seguridad de LinkPilot: https://uselinkpilot.com/es/security-architecture
- Comparativa de API de acortadores de URL: https://uselinkpilot.com/es/blog/url-shortener-api-comparison
- Generador gratis de enlaces secretos: https://uselinkpilot.com/es/tools/free-secret-link-generator

## Referencias

- Stripe Docs, API keys: limit access with restricted keys (https://docs.stripe.com/keys).
- GitHub Docs, Managing your personal access tokens (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).
- AWS IAM User Guide, Temporary security credentials in IAM (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html).

## Herramientas para este artículo

Generador de enlaces secretos de un solo uso

Comparte una contraseña o una nota con un enlace que solo se abre una vez.
https://uselinkpilot.com/es/tools/free-secret-link-generator

Mensaje que se autodestruye

Envía una nota que desaparece después de leerse una vez.
https://uselinkpilot.com/es/tools/burn-after-read-secret

Generador de enlaces que expiran

Crea enlaces que dejan de funcionar en el momento que fijes.
https://uselinkpilot.com/es/tools/temporary-link

## Preguntas frecuentes

### ¿De verdad es tan grave enviar una clave de API por Slack?

### ¿No basta con usar un gestor de contraseñas?

### ¿Y si el destinatario necesita la clave otra vez más adelante?

### ¿Cómo llevo una clave de API a CI/CD?

### ¿Puede LinkPilot leer la clave de API que comparto?

## LinkPilot envía un enlace secreto que desaparece en cuanto se abre.

Cifrado en tu navegador, se muestra una vez y después se destruye. Sin cuenta.

Crear un enlace secreto (https://uselinkpilot.com/es/tools/free-secret-link-generator)

## Sigue leyendo

Seguridad

### Cómo funcionan los enlaces secretos de un solo uso

Un enlace secreto de un solo uso muestra el secreto una vez: el navegador lo cifra, el servidor solo guarda texto cifrado y la primera lectura lo destruye.
https://uselinkpilot.com/es/blog/how-one-time-secret-links-work

Seguridad

### Enlaces que expiran: destruir el secreto, no solo redirigir

Al expirar, un enlace secreto destruye el secreto; un enlace corto expirado solo deja de redirigir. Cómo elegir el plazo y los casos límite.
https://uselinkpilot.com/es/blog/expiring-links-security

Seguridad

### Cifrado en el cliente para compartir secretos: qué protege y qué no

El cifrado en el cliente protege del operador y de una fuga de la base de datos, nada más: JavaScript malicioso, extensiones o un enlace filtrado lo anulan.
https://uselinkpilot.com/es/blog/client-side-encryption-for-secret-sharing

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Inicio",
        "item": "https://uselinkpilot.com/es"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://uselinkpilot.com/es/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Cómo compartir claves de API de forma segura",
        "item": "https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely#article",
    "headline": "Cómo compartir claves de API de forma segura",
    "description": "No pegues una clave de API en un chat ni en un correo. Envía un enlace secreto de un solo uso, cifrado en tu navegador, y rota la clave que ya pegaste.",
    "inLanguage": "es",
    "datePublished": "2026-05-26",
    "dateModified": "2026-10-22",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Person",
      "@id": "https://uselinkpilot.com/author/w-miller#person",
      "name": "W. Miller",
      "url": "https://uselinkpilot.com/es/author/w-miller",
      "worksFor": {
        "@type": "Organization",
        "name": "LinkPilot",
        "url": "https://uselinkpilot.com"
      }
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "¿De verdad es tan grave enviar una clave de API por Slack?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "El problema no es enviarla, sino que se queda para siempre. El historial del chat se puede buscar, se sincroniza en el teléfono, se exporta en las revisiones de cumplimiento y sobrevive a la baja de las personas. Un enlace de un solo uso saca el secreto del canal después de una sola lectura."
        }
      },
      {
        "@type": "Question",
        "name": "¿No basta con usar un gestor de contraseñas?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sí, para credenciales de larga duración. Usa el gestor como registro oficial y el enlace de un solo uso solo para la entrega. Muchos equipos usan los dos: el enlace mueve la clave y la bóveda la guarda."
        }
      },
      {
        "@type": "Question",
        "name": "¿Y si el destinatario necesita la clave otra vez más adelante?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "No vuelvas a enviar la original: emite una clave nueva o pídele que la guarde en un gestor en cuanto la reciba. Volver a compartirla rompe la lógica de la rotación y enturbia el historial de auditoría."
        }
      },
      {
        "@type": "Question",
        "name": "¿Cómo llevo una clave de API a CI/CD?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Con un enlace, no. Las máquinas deben leerla del almacén de secretos de tu plataforma: GitHub Actions secrets, variables de GitLab CI, AWS Secrets Manager, Vault. Los enlaces de un solo uso son solo para entregas entre personas."
        }
      },
      {
        "@type": "Question",
        "name": "¿Puede LinkPilot leer la clave de API que comparto?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "No. Desde el 29 de septiembre de 2026, el contenido se cifra en tu navegador y la clave de descifrado viaja en la parte del enlace que va después del #, que los navegadores nunca envían, así que un operador con acceso completo a la base de datos solo ve texto cifrado. El contenido destruido se sobrescribe y no se puede recuperar. La contrapartida es que cualquiera que tenga el enlace completo tiene la clave, así que una expiración corta y «Destruir tras la lectura» siguen siendo importantes. Los archivos adjuntos se cifran de la misma forma. La página de arquitectura de seguridad explica el modelo completo, incluidos los metadatos que aún podemos ver: el nombre, el tamaño y el tipo de un archivo."
        }
      }
    ],
    "inLanguage": "es"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```