8 min de lectura

App Store Connect API key: cómo crearla y usarla (.p8)

fastlane, EAS o Codemagic te piden una API key de App Store Connect. Aprende a crearla, encontrar el Issuer ID y el Key ID, guardar el archivo .p8 (solo se descarga una vez), elegir el rol justo y resolver errores 401 y 403.

Portada: API key de App Store Connect, con tarjeta Claves del equipo que muestra Issuer ID, Key ID, el archivo AuthKey.p8 y el rol App Manager

Si usas fastlane, Expo EAS, Codemagic, GitHub Actions o cualquier servicio que sube builds por ti, tarde o temprano te pedirá una API key de App Store Connect. Es la forma segura de que una herramienta hable con tu cuenta de Apple sin tu contraseña ni códigos de doble factor. En esta guía verás cómo crear la App Store Connect API key paso a paso, dónde encontrar el Issuer ID y el Key ID, qué hacer con el archivo .p8, qué rol elegir y cómo resolver los errores más comunes.

Qué es una API key de App Store Connect

La API de App Store Connect permite automatizar tareas que normalmente harías a mano en la web: subir builds, gestionar testers de TestFlight, leer informes o actualizar metadatos. Según la documentación de Apple, cada petición a esa API necesita un token firmado (un JWT), y ese token se firma con una clave que descargas desde App Store Connect.

Una clave tiene dos mitades: Apple guarda la parte pública y tú descargas la privada, el archivo AuthKey_XXXXXXXXXX.p8. Cualquier herramienta que te pida "credenciales de App Store Connect API" necesita en realidad tres datos:

DatoQué es¿Es secreto?
Issuer ID (ID del emisor)Identificador (UUID) de tu equipo; es el mismo para todas las claves de equipoNo, pero no lo publiques sin motivo
Key ID (ID de la clave)Código corto que identifica cada claveNo
Archivo .p8La clave privada con la que se firman los tokensSí: trátalo como una contraseña

Si todavía no te mueves con soltura por la consola, repasa primero qué es App Store Connect y cómo usarlo.

Clave de equipo o clave individual: cuál necesitas

Apple ofrece dos tipos de clave:

  • Clave de equipo (Team Key): tiene acceso a todas las apps de la cuenta, con los permisos del rol que le asignes. Solo un usuario con rol Admin (o el titular) puede generarla. Es la opción habitual para CI/CD y servicios externos.
  • Clave individual (Individual Key): hereda el acceso y los roles del usuario que la crea. Según Apple, no puede usar los endpoints de aprovisionamiento (certificados y perfiles), ni Ventas y finanzas, ni notarytool. Además, el usuario necesita el permiso "Generate Individual API Keys" que concede un Admin.

Regla práctica: si la herramienta va a firmar y subir builds o a crear certificados, usa una clave de equipo.

Cómo crear la App Store Connect API key paso a paso

Antes de empezar: si es la primera vez que tu cuenta usa la API, puede que veas un botón para solicitar acceso. Solo el titular de la cuenta (Account Holder) puede hacerlo y aceptar los términos. Si no ves la pestaña de integraciones, revisa tu rol en roles de App Store Connect.

  1. Entra a appstoreconnect.apple.com y abre Usuarios y acceso (Users and Access).
  2. Ve a la pestaña Integraciones (Integrations).
  3. En la columna izquierda elige API de App Store Connect.
  4. Asegúrate de estar en Claves del equipo (Team Keys).
  5. Pulsa Generar clave API o el botón +.
  6. Escribe un nombre que te sirva para reconocerla, por ejemplo CI GitHub Actions o Codemagic producción. El nombre es solo para ti.
  7. En Acceso elige el rol de la clave (más abajo te ayudo a escogerlo).
  8. Pulsa Generar.

La clave aparece en la tabla con su nombre, su Key ID y un enlace de descarga.

Descarga el archivo .p8 (solo una vez)

Haz clic en Descargar clave API junto a la clave nueva. Apple lo deja claro en su documentación: el enlace solo aparece mientras no la hayas descargado y Apple no guarda una copia de la clave privada. Si la pierdes, no hay forma de recuperarla; tendrás que revocarla y crear otra.

Guarda el .p8 en un gestor de contraseñas o en los secretos de tu CI desde el primer minuto, no en la carpeta de Descargas.

Copia el Issuer ID y el Key ID

  • El Issuer ID está en la parte superior de la página de claves, encima de la tabla.
  • El Key ID está en la fila de cada clave. También forma parte del nombre del archivo: AuthKey_<KEY_ID>.p8.

Qué rol darle a la API key

Las claves usan los mismos roles que los usuarios del equipo, y una clave de equipo ve todas las apps, sin importar el rol. Por eso conviene aplicar el mínimo privilegio:

Necesitas que la herramienta…Rol sugerido
Suba builds y gestione TestFlightDeveloper o App Manager
Además edite la ficha, precios o envíe a revisiónApp Manager
Cree usuarios o gestione todo el equipoAdmin (solo si de verdad hace falta)
Lea ventas e informes financierosFinance o Sales, según el informe

Algunos servicios piden Admin para configurar firmas automáticas. Si es así, crea una clave exclusiva para ese servicio, así podrás revocarla sin afectar al resto.

Cómo usar la clave en tus herramientas

fastlane

La acción app_store_connect_api_key recibe los tres datos:

app_store_connect_api_key(
  key_id: "TU_KEY_ID",
  issuer_id: "TU_ISSUER_ID",
  key_filepath: "./AuthKey_TU_KEY_ID.p8"
)

En CI es mejor pasar el contenido con key_content (y is_key_content_base64: true si lo guardaste en Base64) desde una variable secreta. Según la documentación de fastlane, con una clave individual no se envía issuer_id.

Expo EAS Submit

En eas.json, dentro del perfil de submit para iOS, se usan los campos ascApiKeyPath, ascApiKeyIssuerId y ascApiKeyId. Si no los pones, EAS puede pedírtelos o generarlos de forma interactiva.

Codemagic, Bitrise y GitHub Actions

Estos servicios piden los mismos tres valores en su panel de integraciones o como variables secretas. Pega el contenido completo del .p8, incluidas las líneas -----BEGIN PRIVATE KEY----- y -----END PRIVATE KEY-----.

Desde la terminal con altool

Si generas el archivo como explicamos en cómo generar el IPA en Xcode, puedes subirlo con xcrun altool usando --apiKey y --apiIssuer. La herramienta busca el .p8 en carpetas como ~/.appstoreconnect/private_keys/.

Una vez subido, la build aparece en TestFlight; aquí tienes cómo funciona TestFlight y cómo invitar testers.

Errores comunes y cómo solucionarlos

  • No ves la pestaña Integraciones o el botón Generar: tu usuario no es Admin o la cuenta aún no tiene acceso a la API. Pídele al titular que solicite el acceso o que te cambie el rol.
  • "The API Keys tab is missing" o no aparece Claves del equipo: mismo caso; además, revisa que estés en el equipo correcto si perteneces a varios.
  • Perdiste el .p8: revoca la clave, crea otra con el mismo rol y actualiza el Key ID en tus herramientas. El Issuer ID no cambia.
  • Error 401 (NOT_AUTHORIZED): suele ser un Key ID o Issuer ID mal copiado (espacios de más), un .p8 incompleto o un token con caducidad demasiado larga. Apple rechaza tokens que caducan más de 20 minutos en el futuro (con algunas excepciones), y fastlane y EAS generan esos tokens por ti.
  • Error 403 (FORBIDDEN): la clave existe, pero su rol no permite esa acción. Crea una clave con el rol adecuado.

Buenas prácticas de seguridad

  • Una clave por herramienta o servicio, con un nombre descriptivo.
  • Nunca subas el .p8 a un repositorio ni lo envíes por correo o chat.
  • Revoca de inmediato cualquier clave que creas comprometida, desde la misma página de Claves del equipo.
  • Revisa la lista cada cierto tiempo y elimina las que ya no uses: las claves no caducan solas.

Preguntas frecuentes

¿Dónde encuentro el Issuer ID de App Store Connect?

En Usuarios y acceso › Integraciones › API de App Store Connect, en la parte superior de la lista de claves del equipo.

¿Puedo volver a descargar el archivo .p8?

No. Solo se descarga una vez y Apple no guarda copia. Si lo pierdes, revoca la clave y genera una nueva.

¿Quién puede crear una API key?

Las claves de equipo las crea un usuario con rol Admin. El primer acceso a la API lo solicita el titular de la cuenta. Las claves individuales requieren un permiso específico.

¿La API key caduca?

Apple no indica una fecha de caducidad para la clave; los tokens que firmas con ella duran como máximo unos 20 minutos. La clave deja de funcionar cuando la revocas.

¿Sirve la misma clave para fastlane y para EAS?

Sí, técnicamente funciona, pero es mejor crear una por servicio para poder revocarlas por separado.

Automatiza la subida y deja lista la ficha

Con la API key configurada, tus builds llegan solas a App Store Connect. Lo que no se automatiza es la ficha: capturas, icono y política de privacidad. Para eso, AppConsol te ayuda gratis con el generador de screenshots para iOS, el generador de iconos para iOS y el generador de política de privacidad. Pruébalo hoy y envía tu app a revisión con todo listo.

Sigue aprendiendo