[{"data":1,"prerenderedAt":459},["ShallowReactive",2],{"help-article-settings-api-keys":3,"help-siblings-settings":407},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"category":5,"order":10,"difficulty":11,"time_to_complete":12,"related":13,"body":17,"_type":401,"_id":402,"_source":403,"_file":404,"_stem":405,"_extension":406},"\u002Fhelp\u002Fsettings\u002Fapi-keys","settings",false,"","Setting up API keys for programmatic access","How to create, manage, and revoke API keys for integrating AIsoule with your systems.",9,"intermediate","3 minutes",[14,15,16],"\u002Fhelp\u002Fintegrations\u002Fapi-overview","\u002Fhelp\u002Fintegrations\u002Fwebhooks-receiving","\u002Fhelp\u002Fsettings\u002Froles-permissions",{"type":18,"children":19,"toc":387},"root",[20,29,35,42,116,122,136,148,154,161,166,193,199,204,226,232,237,260,266,337,343,348,376,382],{"type":21,"tag":22,"props":23,"children":25},"element","h1",{"id":24},"setting-up-api-keys",[26],{"type":27,"value":28},"text","Setting up API keys",{"type":21,"tag":30,"props":31,"children":32},"p",{},[33],{"type":27,"value":34},"API keys let external systems (your CRM, website, apps) communicate with AIsoule programmatically.",{"type":21,"tag":36,"props":37,"children":39},"h2",{"id":38},"creating-an-api-key",[40],{"type":27,"value":41},"Creating an API key",{"type":21,"tag":43,"props":44,"children":45},"ol",{},[46,58,68,97,106],{"type":21,"tag":47,"props":48,"children":49},"li",{},[50,52],{"type":27,"value":51},"Go to ",{"type":21,"tag":53,"props":54,"children":55},"strong",{},[56],{"type":27,"value":57},"Settings → API Keys",{"type":21,"tag":47,"props":59,"children":60},{},[61,63],{"type":27,"value":62},"Click ",{"type":21,"tag":53,"props":64,"children":65},{},[66],{"type":27,"value":67},"\"New API Key\"",{"type":21,"tag":47,"props":69,"children":70},{},[71,73],{"type":27,"value":72},"Configure:\n",{"type":21,"tag":74,"props":75,"children":76},"ul",{},[77,87],{"type":21,"tag":47,"props":78,"children":79},{},[80,85],{"type":21,"tag":53,"props":81,"children":82},{},[83],{"type":27,"value":84},"Name",{"type":27,"value":86}," — Descriptive name (e.g., \"CRM Integration\", \"Website Widget\")",{"type":21,"tag":47,"props":88,"children":89},{},[90,95],{"type":21,"tag":53,"props":91,"children":92},{},[93],{"type":27,"value":94},"Expiry",{"type":27,"value":96}," — When the key expires (optional, recommended for security)",{"type":21,"tag":47,"props":98,"children":99},{},[100,101],{"type":27,"value":62},{"type":21,"tag":53,"props":102,"children":103},{},[104],{"type":27,"value":105},"Create",{"type":21,"tag":47,"props":107,"children":108},{},[109,114],{"type":21,"tag":53,"props":110,"children":111},{},[112],{"type":27,"value":113},"Copy the key immediately",{"type":27,"value":115}," — it's only shown once!",{"type":21,"tag":36,"props":117,"children":119},{"id":118},"using-the-api-key",[120],{"type":27,"value":121},"Using the API key",{"type":21,"tag":30,"props":123,"children":124},{},[125,127,134],{"type":27,"value":126},"Include the key in the ",{"type":21,"tag":128,"props":129,"children":131},"code",{"className":130},[],[132],{"type":27,"value":133},"X-API-Key",{"type":27,"value":135}," header of every request:",{"type":21,"tag":137,"props":138,"children":143},"pre",{"className":139,"code":141,"language":142,"meta":7},[140],"language-bash","curl -H \"X-API-Key: ak_live_xxxxxxxxxxxx\" \\\n  https:\u002F\u002Fapp.aisoule.com\u002Fapi\u002Fcontacts\n","bash",[144],{"type":21,"tag":128,"props":145,"children":146},{"__ignoreMap":7},[147],{"type":27,"value":141},{"type":21,"tag":36,"props":149,"children":151},{"id":150},"managing-keys",[152],{"type":27,"value":153},"Managing keys",{"type":21,"tag":155,"props":156,"children":158},"h3",{"id":157},"viewing-active-keys",[159],{"type":27,"value":160},"Viewing active keys",{"type":21,"tag":30,"props":162,"children":163},{},[164],{"type":27,"value":165},"Go to Settings → API Keys to see all keys with:",{"type":21,"tag":74,"props":167,"children":168},{},[169,173,178,183,188],{"type":21,"tag":47,"props":170,"children":171},{},[172],{"type":27,"value":84},{"type":21,"tag":47,"props":174,"children":175},{},[176],{"type":27,"value":177},"Created date",{"type":21,"tag":47,"props":179,"children":180},{},[181],{"type":27,"value":182},"Last used date",{"type":21,"tag":47,"props":184,"children":185},{},[186],{"type":27,"value":187},"Expiry date",{"type":21,"tag":47,"props":189,"children":190},{},[191],{"type":27,"value":192},"Status (active\u002Fexpired\u002Frevoked)",{"type":21,"tag":155,"props":194,"children":196},{"id":195},"revoking-a-key",[197],{"type":27,"value":198},"Revoking a key",{"type":21,"tag":30,"props":200,"children":201},{},[202],{"type":27,"value":203},"If a key is compromised or no longer needed:",{"type":21,"tag":43,"props":205,"children":206},{},[207,212,221],{"type":21,"tag":47,"props":208,"children":209},{},[210],{"type":27,"value":211},"Find the key in the list",{"type":21,"tag":47,"props":213,"children":214},{},[215,216],{"type":27,"value":62},{"type":21,"tag":53,"props":217,"children":218},{},[219],{"type":27,"value":220},"\"Revoke\"",{"type":21,"tag":47,"props":222,"children":223},{},[224],{"type":27,"value":225},"The key stops working immediately",{"type":21,"tag":155,"props":227,"children":229},{"id":228},"rotating-keys",[230],{"type":27,"value":231},"Rotating keys",{"type":21,"tag":30,"props":233,"children":234},{},[235],{"type":27,"value":236},"Best practice — rotate keys every 90 days:",{"type":21,"tag":43,"props":238,"children":239},{},[240,245,250,255],{"type":21,"tag":47,"props":241,"children":242},{},[243],{"type":27,"value":244},"Create a new key",{"type":21,"tag":47,"props":246,"children":247},{},[248],{"type":27,"value":249},"Update your integration to use the new key",{"type":21,"tag":47,"props":251,"children":252},{},[253],{"type":27,"value":254},"Verify it works",{"type":21,"tag":47,"props":256,"children":257},{},[258],{"type":27,"value":259},"Revoke the old key",{"type":21,"tag":36,"props":261,"children":263},{"id":262},"security-best-practices",[264],{"type":27,"value":265},"Security best practices",{"type":21,"tag":43,"props":267,"children":268},{},[269,279,297,307,317,327],{"type":21,"tag":47,"props":270,"children":271},{},[272,277],{"type":21,"tag":53,"props":273,"children":274},{},[275],{"type":27,"value":276},"Never share keys publicly",{"type":27,"value":278}," — Don't put them in frontend code, GitHub, or emails",{"type":21,"tag":47,"props":280,"children":281},{},[282,287,289,295],{"type":21,"tag":53,"props":283,"children":284},{},[285],{"type":27,"value":286},"Use environment variables",{"type":27,"value":288}," — Store keys in ",{"type":21,"tag":128,"props":290,"children":292},{"className":291},[],[293],{"type":27,"value":294},".env",{"type":27,"value":296}," files, not source code",{"type":21,"tag":47,"props":298,"children":299},{},[300,305],{"type":21,"tag":53,"props":301,"children":302},{},[303],{"type":27,"value":304},"Set expiry dates",{"type":27,"value":306}," — Keys without expiry are a security risk",{"type":21,"tag":47,"props":308,"children":309},{},[310,315],{"type":21,"tag":53,"props":311,"children":312},{},[313],{"type":27,"value":314},"One key per integration",{"type":27,"value":316}," — If one is compromised, only that integration is affected",{"type":21,"tag":47,"props":318,"children":319},{},[320,325],{"type":21,"tag":53,"props":321,"children":322},{},[323],{"type":27,"value":324},"Monitor usage",{"type":27,"value":326}," — Check \"Last used\" to detect unauthorized access",{"type":21,"tag":47,"props":328,"children":329},{},[330,335],{"type":21,"tag":53,"props":331,"children":332},{},[333],{"type":27,"value":334},"Revoke unused keys",{"type":27,"value":336}," — If an integration is decommissioned, revoke its key",{"type":21,"tag":36,"props":338,"children":340},{"id":339},"rate-limits",[341],{"type":27,"value":342},"Rate limits",{"type":21,"tag":30,"props":344,"children":345},{},[346],{"type":27,"value":347},"API keys are subject to rate limiting:",{"type":21,"tag":74,"props":349,"children":350},{},[351,361,371],{"type":21,"tag":47,"props":352,"children":353},{},[354,359],{"type":21,"tag":53,"props":355,"children":356},{},[357],{"type":27,"value":358},"100 requests per minute",{"type":27,"value":360}," per key",{"type":21,"tag":47,"props":362,"children":363},{},[364,369],{"type":21,"tag":53,"props":365,"children":366},{},[367],{"type":27,"value":368},"10 requests per second",{"type":27,"value":370}," burst",{"type":21,"tag":47,"props":372,"children":373},{},[374],{"type":27,"value":375},"Exceeding limits returns HTTP 429 (Too Many Requests)",{"type":21,"tag":36,"props":377,"children":379},{"id":378},"permissions",[380],{"type":27,"value":381},"Permissions",{"type":21,"tag":30,"props":383,"children":384},{},[385],{"type":27,"value":386},"API keys inherit the permissions of the user who created them. If you need restricted access, create a user with a limited role and generate the key from that account.",{"title":7,"searchDepth":388,"depth":388,"links":389},2,[390,391,392,398,399,400],{"id":38,"depth":388,"text":41},{"id":118,"depth":388,"text":121},{"id":150,"depth":388,"text":153,"children":393},[394,396,397],{"id":157,"depth":395,"text":160},3,{"id":195,"depth":395,"text":198},{"id":228,"depth":395,"text":231},{"id":262,"depth":388,"text":265},{"id":339,"depth":388,"text":342},{"id":378,"depth":388,"text":381},"markdown","content:help:settings:api-keys.md","content","help\u002Fsettings\u002Fapi-keys.md","help\u002Fsettings\u002Fapi-keys","md",[408,409,412,415,418,421,424,427,430,433,436,439,442,444,447,450,453,456],{"_path":4,"title":8},{"_path":410,"title":411},"\u002Fhelp\u002Fsettings\u002Faudit-logs","Understanding audit logs",{"_path":413,"title":414},"\u002Fhelp\u002Fsettings\u002Fbusiness-profile","Business profile settings",{"_path":416,"title":417},"\u002Fhelp\u002Fsettings\u002Fcanned-responses-management","Managing canned responses",{"_path":419,"title":420},"\u002Fhelp\u002Fsettings\u002Fcreating-templates","Creating and managing message templates",{"_path":422,"title":423},"\u002Fhelp\u002Fsettings\u002Fcustom-actions","Custom actions (webhook, URL, JavaScript)",{"_path":425,"title":426},"\u002Fhelp\u002Fsettings\u002Fdark-mode","Dark mode and theme settings",{"_path":428,"title":429},"\u002Fhelp\u002Fsettings\u002Flanguage-settings","Language settings (i18n)",{"_path":431,"title":432},"\u002Fhelp\u002Fsettings\u002Fmanaging-accounts","Managing WhatsApp Business accounts",{"_path":434,"title":435},"\u002Fhelp\u002Fsettings\u002Fmanaging-users","Managing users (invite, deactivate, roles)",{"_path":437,"title":438},"\u002Fhelp\u002Fsettings\u002Fnotification-preferences","Notification preferences",{"_path":440,"title":441},"\u002Fhelp\u002Fsettings\u002Frate-limiting","Rate limiting and API quotas",{"_path":16,"title":443},"Creating custom roles and permissions",{"_path":445,"title":446},"\u002Fhelp\u002Fsettings\u002Fsso-configuration","Configuring SSO (Google, Microsoft, GitHub)",{"_path":448,"title":449},"\u002Fhelp\u002Fsettings\u002Fteams-assignment","Setting up teams and assignment strategies",{"_path":451,"title":452},"\u002Fhelp\u002Fsettings\u002Ftemplate-approval-tips","Template approval process and best practices",{"_path":454,"title":455},"\u002Fhelp\u002Fsettings\u002Fwebhook-configuration","Configuring outbound webhooks",{"_path":457,"title":458},"\u002Fhelp\u002Fsettings\u002Fwhatsapp-flows","WhatsApp Flows (Meta Flows) management",1780423185310]