App Store Connect API-nyckel (.p8): skapa och använda
Av Mehdi Azizi
Publicerad , 10 min
App Store Connect API-nyckeln (.p8) kan bara laddas ner en gång. Roll, Issuer ID, Key ID, återkallande och användning med Expo, fastlane eller ett skript.
En API-nyckel för App Store Connect låter ett verktyg, som EAS, fastlane, RevenueCat eller ditt eget skript, agera på ditt konto utan ditt lösenord och utan tvåfaktorsautentisering. Apple behåller den publika halvan av nyckeln, och du laddar ner den privata halvan, en .p8-fil, en enda gång. Med den filen, Issuer ID och Key ID signerar du tokens som gäller i högst 20 minuter för de flesta anrop.
Jag publicerar mina iOS-appar, bland annat TradaZen och Nolera, med Expo. En teamnyckel med rollen App Manager används av RevenueCat, mina Expo-byggen och ett kommandoradsverktyg som redigerar mina App Store-sidor. Den här guiden följer Apples, Expos och fastlanes sidor, genomlästa den 3 november 2026. Blanda inte ihop den med nycklar till tjänster som ligger i en apps kod: de tas upp i hemlig API-nyckel i en Expo-app.
Vad en API-nyckel för App Store Connect gör
Enligt Apples dokumentation kräver App Store Connect API en JWT-token för varje anrop. Du genererar och signerar den med din privata nyckel. Nyckeln fungerar bara för detta API: du kan inte använda den för andra Apple-tjänster.
Poängen går att säga i en mening: ingen människa behöver godkänna inloggningen. Ditt Apple-ID stoppas av tvåfaktorsautentiseringen, vilket blockerar all automatisering. Guiden EAS Submit för iOS visar vad det betyder när du skickar in en Expo-app.
Först: begär åtkomst till API:et
Den första nyckeln kan inte skapas direkt. App Store Connects hjälp är tydlig: Account Holder måste först begära åtkomst till API:et. Hen öppnar Users and Access, klickar på Integrations och sedan på Request Access. Apple granskar varje ansökan för sig.
Account Holder är personen som registrerade kontot. Om du är nybörjare är det du: guiden Apple-utvecklarkonto går igenom registreringen.
Teamnyckel eller individuell nyckel
Apple erbjuder två typer av nycklar. Här är skillnaderna, hämtade från dokumentationen och App Store Connects hjälp:
| Kriterium | Teamnyckel | Individuell nyckel |
|---|---|---|
| Vem kan skapa den | Account Holder eller Admin | Nästan alla användare |
| Åtkomliga appar | Alla, utan undantag | Användarens appar |
| Behörigheter | Den valda rollen | Användarens behörigheter |
| Antal nycklar | Flera | En aktiv per person |
| Certifikat och profiler | Ja, beroende på roll | Nej |
| Försäljning, ekonomi, notaryTool | Beroende på roll | Nej |
| Fält i token | iss = Issuer ID | sub = user |
"Nästan alla användare" betyder enligt Apple: Account Holder, Admin, App Manager, Customer Support, Developer och Marketing, om inte en Admin eller Account Holder har tagit bort deras rätt att skapa en individuell nyckel.
För Expo eller fastlane, välj en teamnyckel. En individuell nyckel har inte åtkomst till provisioneringsändpunkterna, de som skapar certifikat och profiler. fastlanes dokumentation bekräftar det: teamnycklar krävs för all åtkomst som rör provisionering.
Vilken roll du ska ge nyckeln
En teamnyckel har åtkomst till alla appar på kontot, oavsett roll. Rollen avgör vad den får göra. Apple varnar för att en Admin-nyckel kan skapa och ta bort användare: ge den minsta roll som täcker ditt behov. Behörigheterna nedan kommer från Apples rolltabell.
| Användning av nyckeln | Roller som tillåter det |
|---|---|
| Skicka in byggen | Admin, App Manager, Developer |
| Hantera TestFlight-byggen | Admin, App Manager |
| Skapa certifikat och profiler | Admin, App Manager |
| Skicka in en app för granskning | Admin, App Manager |
| Importera produkter och priser (RevenueCat) | Minst App Manager |
| Skapa andra teamnycklar | Admin |
RevenueCat-raden kommer från deras dokumentation. Expos guide ger nyckeln rollen Admin. För mina appar räcker App Manager: EAS skapar distributionsprofilerna med den, och RevenueCat importerar produkterna.
När nyckeln väl är skapad kan du inte ändra varken namn eller roll. Vill du ändra något måste du återkalla den och skapa en ny.
Skapa en teamnyckel steg för steg
Du behöver ett Admin- eller Account Holder-konto. Enligt Apple:
- Öppna Users and Access, sedan fliken Integrations.
- Välj App Store Connect API i vänsterspalten, sedan fliken Team Keys.
- Klicka på Generate API Key, eller på knappen +.
- Ge nyckeln ett namn. Det är bara för dig och ingår inte i nyckeln. Döp den efter verktyget som ska använda den.
- Välj roll under Access och klicka på Generate.
- Ladda ner den privata nyckeln med länken Download API Key.
Nedladdningslänken försvinner så fort du har laddat ner filen, och Apple sparar ingen kopia. Lägg undan
.p8-filen innan du stänger sidan.
Anteckna sedan de två id:na. Enligt Apples sida om tokens visas Issuer ID högst upp på sidan Integrations, med en Copy-knapp. Key ID syns i listan över aktiva nycklar: håll muspekaren över det så dyker Copy Key ID upp. Issuer ID är detsamma för alla teamnycklar på kontot. Key ID är unikt för varje nyckel.
För en individuell nyckel går det snabbare: öppna din användarprofil, scrolla ner till Individual API Key och klicka på Generate API Key. Även här kan du bara ladda ner den en gång.
Förvara .p8-filen
Apple ber dig behandla nyckeln som ett lösenord: dela den inte, lägg den inte i ett kodrepo och bygg aldrig in den i en apps kod. Min rutin:
- En mapp utanför projektet, eller CI-verktygets hemlighetshanterare.
- Nyckelmappen i din
.gitignore, om filen måste ligga i projektet medan du skickar in. - Strikta behörigheter. Ett kommandoradsverktyg för App Store Connect vägrade min
.p8så länge filen gick att läsa för andra konton. Ettchmod 600löste problemet. - En nyckel per verktyg. Apple låter dig skapa flera nycklar, med de roller du vill.
Den sista punkten följde jag inte från början. Min App Manager-nyckel används av både RevenueCat, mina byggen och mitt verktyg för App Store-sidorna. Om jag måste återkalla den slutar tre verktyg fungera samtidigt. Om jag fick göra om det skulle jag skapa en nyckel per verktyg, så att jag kan stänga av en utan att påverka de andra.
Använda den med Expo
Tre sätt att ge nyckeln till EAS:
- Låt EAS hantera den.
eas credentials --platform ioskan skapa en nyckel och spara den på Expos servrar. Det är den enklaste vägen. - Ange den i
eas.json. ProfilensubmittarascApiKeyPath,ascApiKeyIssuerIdochascApiKeyId. Enligt referensen för eas.json accepterar fälten miljövariabler, som$ASC_API_KEY_PATH. - Skicka den via miljön. EAS CLI-repot dokumenterar
EXPO_ASC_API_KEY_PATH,EXPO_ASC_KEY_IDochEXPO_ASC_ISSUER_ID. För en individuell nyckel utelämnar du Issuer ID.
En begränsning att känna till för byggen: Expo skriver att det officiella API:et inte kan koppla en App Group, ett Merchant ID eller en CloudKit-container. Då behöver du logga in med ditt Apple-ID, lokalt. Jag råkade ut för det med Nolera och app-gruppen för dess widget: nyckeln aktiverade funktionen men kopplade inte gruppen. Jag gjorde kopplingen i Apples utvecklarportal. Om synkningen av funktioner fastnar stänger EXPO_NO_CAPABILITY_SYNC=1 av den, och du aktiverar funktionen själv på app-id:t. Signering av byggen går jag igenom i certifikat och provisioning profile för iOS.
Använda den med fastlane
fastlane läser nyckeln från en JSON-fil. Fälten key_id, issuer_id och key, alltså innehållet i .p8-filen, är obligatoriska. duration och in_house är valfria. Påhittade värden:
{
"key_id": "XXXXXXXXXX",
"issuer_id": "your-issuer-id",
"key": "-----BEGIN PRIVATE KEY-----\nMIGT...\n-----END PRIVATE KEY-----",
"duration": 1200,
"in_house": false
}
Sedan skickar du filen till en action, till exempel fastlane pilot distribute --api_key_path fastlane/cle.json. I en Fastfile tar action app_store_connect_api_key emot key_id, issuer_id och key_filepath. Sessionstiden får vara högst 1 200 sekunder, alltså 20 minuter. Alla actions stöder inte nyckeln: fastlane anger till exempel att produce och pem inte fungerar med en API-nyckel.
Använda den i ditt eget skript
Utan verktyg bygger du token själv. Apple bestämmer receptet:
- Header:
algärES256,kidär ditt Key ID,typärJWT. - Payload, teamnyckel:
iss, ditt Issuer ID;iat, tidpunkten då den skapades;exp, tidpunkten då den går ut;aud, som ärappstoreconnect-v1. - Payload, individuell nyckel:
subäruseri stället föriss. - Giltighetstid: längre än 20 minuter, så avvisar Apple token för de flesta anrop.
I Python, med biblioteket PyJWT och dess kryptografiberoende, installerat med pip install pyjwt[crypto] enligt dess dokumentation. I Macens terminal behöver du citattecken: pip install "pyjwt[crypto]", annars vägrar zsh hakparenteserna.
import time
import jwt
KEY_ID = "XXXXXXXXXX"
ISSUER_ID = "your-issuer-id"
with open("AuthKey_XXXXXXXXXX.p8") as f:
private_key = f.read()
now = int(time.time())
token = jwt.encode(
{"iss": ISSUER_ID, "iat": now, "exp": now + 20 * 60, "aud": "appstoreconnect-v1"},
private_key,
algorithm="ES256",
headers={"kid": KEY_ID, "typ": "JWT"},
)
print(token)
Sedan skickar du den i headern Authorization, som i Apples exempel:
curl -H "Authorization: Bearer $TOKEN" "https://api.appstoreconnect.apple.com/v1/apps"
Jag körde skriptet den 3 november 2026 med en engångsnyckel skapad på min dator: tokenens header och payload stämmer med Apples sida, och ES256-signaturen går att verifiera. Jag skickade den inte till Apples API med den testnyckeln, som inte finns hos Apple. Återanvänd samma token så länge den är giltig: Apple rekommenderar det för bättre prestanda.
Återkalla en nyckel
Återkalla en nyckel så fort den har tappats bort, komprometterats eller inte längre används av något verktyg. Enligt App Store Connects hjälp, med ett Account Holder- eller Admin-konto:
- Öppna Users and Access, sedan Integrations.
- Välj Team Keys, eller Individual Keys, och klicka på Edit.
- Markera nycklarna som ska återkallas och klicka på Revoke Key.
- Bekräfta med Revoke.
En återkallad nyckel kan aldrig aktiveras igen. Apple visar den i 30 dagar under Revoked. Alla verktyg som använde den misslyckas då med autentiseringen. Med Expo blir meddelandet "App Store Connect rejected the API authentication credentials". Det meddelandet och andra misslyckade inskickningar förklaras i felen vid inskickning med EAS och hur du åtgärdar dem. Om nyckeln inte är komprometterad, förbered den nya innan du stänger av den gamla. Om den är det ber Apple dig återkalla den omedelbart.
För din egen individuella nyckel: din profil, Individual API Key och sedan Revoke.
Min checklista för .p8-nyckeln
- Account Holder har begärt åtkomst till API:et.
- Nyckeln är en teamnyckel om den används för byggen eller profiler.
- Rollen är den minsta som täcker behovet, och namnet säger vilket verktyg som använder den.
.p8-filen ligger utanför repot, med strikta behörigheter och en krypterad säkerhetskopia.- Issuer ID och Key ID är antecknade separat, utan filen.
- Varje verktyg har sin egen nyckel, så att du kan återkalla bara en.
Automatisera publiceringen utan att lämna ut nyckeln
Nyckeln är bara en del av resan. iOS & Android Kit utgår från startkoden för mina appar, prenumerationer inräknade, och följer fyra steg ända fram till App Store, i din egen takt. Om du kopplar RevenueCat med den här nyckeln hittar du hela uppsättningen i RevenueCat och in-app-prenumerationer på iOS.
Om du förbereder din första lansering, gör din gratis diagnos: den visar vad som faktiskt hindrar dig och skickar min checklista mot avslag från Apple. Sidan publicera en app på App Store går igenom varje steg, från App Store-sidan till godkännandet.
Vanliga frågor
Hur skapar man en API-nyckel för App Store Connect?
Account Holder begär först åtkomst till API:et. Sedan öppnar en Admin Users and Access, fliken Integrations, App Store Connect API, Team Keys. Hen klickar på Generate API Key, väljer namn och roll, skapar nyckeln och laddar ner .p8-filen.
Kan man ladda ner en borttappad .p8-nyckel igen?
Nej. Filen kan bara laddas ner en gång, och Apple sparar ingen kopia. Återkalla den borttappade nyckeln, skapa en ny och uppdatera alla verktyg som använde den.
Var hittar jag Issuer ID och Key ID?
I App Store Connect, menyn Users and Access, fliken Integrations. Issuer ID visas högst upp på sidan. Key ID finns i listan över aktiva nycklar. En individuell nyckel använder inget Issuer ID.
Vilken roll ska en nyckel som används av Expo ha?
Expos guide anger rollen Admin. Enligt Apples rolltabell räcker App Manager för att skicka in byggen och skapa certifikat och profiler. Det är rollen på min nyckel, som jag använder för mina Expo-byggen.
Kan man ändra rollen på en API-nyckel?
Nej. Apple låter dig inte ändra varken namn eller roll på en nyckel efter att den skapats. Återkalla den och skapa en ny med rätt roll.
Går en API-nyckel för App Store Connect ut?
Apples sidor nämner inget utgångsdatum för nyckeln, bara återkallande. Det är tokens som signeras med den som går ut, efter högst 20 minuter för de flesta anrop.

