Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.
As an organization admin, it is possible to create API keys that can use env zero without interacting with the UI. For example, you can call the API directly, use the Terraform provider, or use the Private Module Registry.
Deleting an API keyWhen deleting an API key it might take up to 1 hour for it to completely expire.
How to create an API key
From Organization Settings navigate to API Keys tab:Click the + button to see the create API key modal.
By default, the role of the key will be Admin, but you can also assign it to a user role, and provide specific project permission (the same as when inviting a new user to the platform):
Admin API key
With an admin API key, you can perform any request that requires admin permission: changing organization settings, deploying and approving environments, etc.
You can check our full API in the API reference.
Non-Admin API key
With a non-admin (User) API key, you can provide members of your team with the ability to use our API, while maintaining your organization’s RBAC.
When creating a user API key, it can be configured with specific project permissions, assigned to a team, and treated like any other user in the system.
Read-only API key
Select Read-only when you create an admin or user API key, or send "readOnly": true to Create API Key. A read-only key keeps only the view permissions of its role, such as View Environment, View Project, View Audit Logs, and Read State. It can’t create, update, or delete resources, and it can’t run plans or tasks. A request that needs another permission fails with 403.The Read-only column on the API Keys tab marks these keys. You can’t make an existing key read-only, so create a new one. Personal API keys can’t be read-only.
Read access to every project
To give an integration read access to your whole organization, create an Admin API key and select Read-only. You don’t need to select any projects. An organization role covers every project in the organization, so the key can also read projects created after it.A User key can read only the projects that its own project permissions or its teams give it. You can’t edit the key’s own project permissions after you create it.
Allowed IPs
Any API key, including a personal API key, can be limited to a list of IP addresses. Enter them in Allowed IPs when you create the key, or click the edit button next to an existing key. The Allowed IPs column shows each key’s list, and Any IP for a key without one.Your organization’s IP allowlist still applies on top of the key’s list. For the entry format and the API, see Allowed IPs for one API key.
Personal API key
With a personal API key, members of your team can be provided with the ability to use our API with the same permissions they have configured in their env zero account.Every user can generate a personal API key, you can read more about it in our API docs.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"env zero docs","colors":{"primary":"#000000","light":"#D2F740"},"logo":{"light":"https://mintcdn.com/envzero-b61043c8/GWfARhdHeVhvtQPk/logo/logo-light-mode.svg?fit=max\u0026auto=format\u0026n=GWfARhdHeVhvtQPk\u0026q=85\u0026s=6349fff9147169f2120c89694f47cbc0","dark":"https://mintcdn.com/envzero-b61043c8/GWfARhdHeVhvtQPk/logo/logo-dark-mode.svg?fit=max\u0026auto=format\u0026n=GWfARhdHeVhvtQPk\u0026q=85\u0026s=3017a6fc552076ce1aa60a773f7cab5c"},"favicon":"https://mintcdn.com/envzero-b61043c8/tSDpnsOW7stD0Hxu/favicon.svg?fit=max\u0026auto=format\u0026n=tSDpnsOW7stD0Hxu\u0026q=85\u0026s=e7c3f9cd1d8663c44ed8c059f5c4e2cb","icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"envzero-b61043c8","hasAudioNarration":false,"actualSubdomain":"envzero-b61043c8","customDomains":["docs.envzero.com"],"gitSource":{"type":"github","owner":"env0","repo":"env-zero-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af58ddd04140d5ce9d60696","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"API reference","count":385},{"language":"default","tag":"Guides","count":218},{"language":"default","tag":"Changelog","count":122},{"language":"default","tag":"Configuration","count":57},{"language":"default","tag":"Cloud Compass","count":46},{"language":"default","tag":"ACCESS \u0026 IDENTITY","count":43},{"language":"default","tag":"Environments","count":40},{"language":"default","tag":"2023","count":36},{"language":"default","tag":"ENVIRONMENTS \u0026 DEPLOYMENTS","count":32},{"language":"default","tag":"2024","count":28}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"docs-styles.css","content":"#page-context-menu{button {\n\t\tborder-radius: 0px;\n\t\tbackground-color: light-dark(#D2F740, #0C0C0B);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\t:hover {\n\t\tbackground-color: light-dark(#B8E500, #3A3A38);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\t:active {\n\t\tbackground-color: light-dark(#ADDC06, #4D4E4B);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}}.tryit-button{border-radius:0px;background-color:light-dark(#D2F740, #0C0C0B);color:light-dark(#000000, #FFFFFF);:hover {\n\t\tbackground-color: light-dark(#B8E500, #3A3A38);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\t:active {\n\t\tbackground-color: light-dark(#ADDC06, #4D4E4B);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\tsvg {\n\t\tbackground-color: light-dark(#000000, #FFFFFF);\n\t}}.card{border-radius:0px;border-style:dashed}.accordion-group{border-radius:0px;border-style:dashed}#footer{display:none}.link{color:light-dark(black, white)!important;border-bottom-color:light-dark(#ADDC06, #D2F740)}"}],"page":{"pagePath":"guides/admin-guide/user-role-and-team-management/api-keys","slug":"/guides/admin-guide/user-role-and-team-management/api-keys","pageMetadata":{"title":"User API keys","sidebarTitle":"Admin API Keys","slug":"api-keys","description":"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.","keywords":["API keys","personal API keys","authentication","programmatic access","Terraform provider","REST API","automation"],"href":"/guides/admin-guide/user-role-and-team-management/api-keys"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,br:`br`,code:`code`,em:`em`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`As an organization admin, it is possible to create API keys that can use env zero without interacting with the UI. For example, you can call the `,_jsx(_components.a,{href:`/api-reference/credentials/create-api-key`,children:`API`}),` directly, use the `,_jsx(_components.a,{href:`/guides/community-and-resources/support-and-help/terraform-provider`,children:`Terraform provider`}),`, or use the `,_jsx(_components.a,{href:`/guides/admin-guide/private-registry/modules`,children:`Private Module Registry`}),`.`]}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:`Deleting an API key`}),_jsx(_components.p,{children:`When deleting an API key it might take up to 1 hour for it to completely expire.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-create-an-api-key`,children:`How to create an API key`}),`\n`,_jsxs(_components.p,{children:[`From `,_jsx(_components.em,{children:`Organization Settings`}),` navigate to `,_jsx(_components.em,{children:`API Keys`}),` tab:`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png?fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=2e548de9416493175553bd64d5d19f8f`,alt:`Organization Settings API Keys tab showing existing keys and the Add button`,\"data-og-width\":`1695`,width:`1695`,\"data-og-height\":`864`,height:`864`,\"data-path\":`images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png?w=280\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=aa29be72d9189245d080444f8e6e18d8 280w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png?w=560\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=8ed3759d08a811a1e6bf46c651c4bb14 560w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png?w=840\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=0444bc6f66bad2c04bcc7c13ea343042 840w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=e09da54a87fa11899541e0df8f2ceb9a 1100w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=d8a8d139ce35ae5c3c02478035451221 1650w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/55ece3b-screen_shot_2022-05-24_at_12.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=9b5a7861175369ecd4de826db53110e5 2500w`}),`\n`,_jsxs(_components.p,{children:[`Click the + button to see the create API key modal.`,_jsx(_components.br,{}),`\n`,`By default, the role of the key will be Admin, but you can also assign it to a user role, and provide specific project permission (the same as when `,_jsx(_components.a,{href:`/guides/admin-guide/user-role-and-team-management/user-management#invite-users-to-an-organization`,children:`inviting a new user`}),` to the platform):`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png?fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=90da1989fdd6978e5cf46d3974dfa1a3`,alt:`Create API key modal showing role selection and project permission assignment options`,\"data-og-width\":`1028`,width:`1028`,\"data-og-height\":`650`,height:`650`,\"data-path\":`images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png?w=280\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=8cdaea9f9a8eb35a0fbcf6a4b6c1e552 280w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png?w=560\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=a0209a093dbbf070e47ccde1d27516e4 560w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png?w=840\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=a1ce3001e12b032a67d3d4a0ec08827d 840w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=5b226b305e9b3f12f7cf58635a702988 1100w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=a2eefc9331fa09be99457fa7d8e2df7d 1650w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/87bb66d-screen_shot_2022-05-24_at_16.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=3fd12846af3f3b4e7c968d9335d9b79f 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`admin-api-key`,children:`Admin API key`}),`\n`,_jsxs(_components.p,{children:[`With an admin API key, you can perform any request that requires admin permission: changing organization settings, deploying and approving environments, etc.`,_jsx(_components.br,{}),`\n`,`You can check our full API in the `,_jsx(_components.a,{href:`/api-reference`,children:`API reference`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`non-admin-api-key`,children:`Non-Admin API key`}),`\n`,_jsxs(_components.p,{children:[`With a non-admin (User) API key, you can provide members of your team with the ability to use our API, while maintaining your organization’s `,_jsx(_components.a,{href:`/guides/admin-guide/user-role-and-team-management/rbac`,children:`RBAC`}),`.`,_jsx(_components.br,{}),`\n`,`When creating a user API key, it can be configured with specific project permissions, assigned to a team, and treated like any other user in the system.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png?fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=9da1519619c2080840902fe28290fb99`,alt:`Create user API key form showing project permissions and team assignment fields`,\"data-og-width\":`2250`,width:`2250`,\"data-og-height\":`1160`,height:`1160`,\"data-path\":`images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png?w=280\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=68946d0a9ff97b1050a673e1bfc086db 280w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png?w=560\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=8f31560628c05cd4fcc3ed328e778c0b 560w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png?w=840\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=87ed2ddb9f449a19b15e4cd408d70e29 840w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=f4a9521e5740c44deff30d4cf41c72f1 1100w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=73ad70f844cdf389b90484f104bf4a92 1650w, https://mintcdn.com/envzero-b61043c8/ngeLWWxxE3C57X-b/images/guides/admin-guide/user-role-and-team-management/ff6e406-screen_shot_2022-05-24_at_18.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ngeLWWxxE3C57X-b\u0026q=85\u0026s=16b12a9168996092fc2ed36852dd6d1c 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`read-only-api-key`,children:`Read-only API key`}),`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Read-only`}),` when you create an admin or user API key, or send `,_jsx(_components.code,{children:`\"readOnly\": true`}),` to `,_jsx(_components.a,{href:`/api-reference/credentials/create-api-key`,children:`Create API Key`}),`. A read-only key keeps only the view permissions of its role, such as View Environment, View Project, View Audit Logs, and Read State. It can’t create, update, or delete resources, and it can’t run plans or tasks. A request that needs another permission fails with `,_jsx(_components.code,{children:`403`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Read-only`}),` column on the `,_jsx(_components.em,{children:`API Keys`}),` tab marks these keys. You can’t make an existing key read-only, so create a new one. Personal API keys can’t be read-only.`]}),`\n`,_jsx(Heading,{level:`3`,id:`read-access-to-every-project`,children:`Read access to every project`}),`\n`,_jsxs(_components.p,{children:[`To give an integration read access to your whole organization, create an `,_jsx(_components.strong,{children:`Admin`}),` API key and select `,_jsx(_components.strong,{children:`Read-only`}),`. You don’t need to select any projects. An organization role covers every project in the organization, so the key can also read projects created after it.`]}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`User`}),` key can read only the projects that its own project permissions or its teams give it. You can’t edit the key’s own project permissions after you create it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`allowed-ips`,children:`Allowed IPs`}),`\n`,_jsxs(_components.p,{children:[`Any API key, including a personal API key, can be limited to a list of IP addresses. Enter them in `,_jsx(_components.strong,{children:`Allowed IPs`}),` when you create the key, or click the edit button next to an existing key. The `,_jsx(_components.strong,{children:`Allowed IPs`}),` column shows each key’s list, and `,_jsx(_components.strong,{children:`Any IP`}),` for a key without one.`]}),`\n`,_jsxs(_components.p,{children:[`Your organization’s `,_jsx(_components.a,{href:`/guides/overview/security-overview/ip-allowlisting`,children:`IP allowlist`}),` still applies on top of the key’s list. For the entry format and the API, see `,_jsx(_components.a,{href:`/guides/overview/security-overview/ip-allowlisting#allowed-ips-for-one-api-key`,children:`Allowed IPs for one API key`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`personal-api-key`,children:`Personal API key`}),`\n`,_jsx(_components.p,{children:`With a personal API key, members of your team can be provided with the ability to use our API with the same permissions they have configured in their env zero account.`}),`\n`,_jsxs(_components.p,{children:[`Every user can generate a personal API key, you can read more about it in our `,_jsx(_components.a,{href:`/api-reference/credentials/create-api-key`,children:`API docs`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"User API keys","sidebarTitle":"Admin API Keys","slug":"api-keys","description":"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.","keywords":["API keys","personal API keys","authentication","programmatic access","Terraform provider","REST API","automation"],"href":"/guides/admin-guide/user-role-and-team-management/api-keys"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How to create an API key","slug":"how-to-create-an-api-key","depth":2,"children":[]},{"title":"Admin API key","slug":"admin-api-key","depth":2,"children":[]},{"title":"Non-Admin API key","slug":"non-admin-api-key","depth":2,"children":[]},{"title":"Read-only API key","slug":"read-only-api-key","depth":2,"children":[{"title":"Read access to every project","slug":"read-access-to-every-project","depth":3,"children":[]}]},{"title":"Allowed IPs","slug":"allowed-ips","depth":2,"children":[]},{"title":"Personal API key","slug":"personal-api-key","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/envzero-b61043c8/acfe5f113d987bc4/analytics.js","/_mintlify/custom/envzero-b61043c8/6e65effd4fa229eb/page-dates.js","/_mintlify/custom/envzero-b61043c8/05a202bfcfe4d650/schema.js"],"subdomain":"envzero-b61043c8","siteName":"env zero docs","title":"User API keys - env zero docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T13:09:56.872Z","originalFileLocation":"guides/admin-guide/user-role-and-team-management/api-keys.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.\">\u003cmeta data-mint-head name=\"application-name\" content=\"env zero docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"User API keys - env zero docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"env zero docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://envzero-b61043c8.mintlify.site/_mintlify/api/og/v2?division=User%2C+role+%26+team+management\u0026amp;title=User+API+keys\u0026amp;description=Create+and+manage+Admin%2C+User%2C+and+Personal+API+keys+in+env+zero+for+REST+API+access%2C+Terraform+provider+use%2C+and+module+registry+with+RBAC-scoped+permissions.\u0026amp;theme=b92d60cc1454bb7630490ffe\u0026amp;signature=cf35f96d1da67017f1185572fcb4a084d9f8c7f87e92de246b5f4a2f10aff484\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"User API keys - env zero docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://envzero-b61043c8.mintlify.site/_mintlify/api/og/v2?division=User%2C+role+%26+team+management\u0026amp;title=User+API+keys\u0026amp;description=Create+and+manage+Admin%2C+User%2C+and+Personal+API+keys+in+env+zero+for+REST+API+access%2C+Terraform+provider+use%2C+and+module+registry+with+RBAC-scoped+permissions.\u0026amp;theme=b92d60cc1454bb7630490ffe\u0026amp;signature=cf35f96d1da67017f1185572fcb4a084d9f8c7f87e92de246b5f4a2f10aff484\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"env zero docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/admin-guide/user-role-and-team-management/api-keys.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.envzero.com/#organization\",\"name\":\"env zero docs\",\"url\":\"https://docs.envzero.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/envzero-b61043c8/GWfARhdHeVhvtQPk/logo/logo-light-mode.svg?fit=max\u0026auto=format\u0026n=GWfARhdHeVhvtQPk\u0026q=85\u0026s=6349fff9147169f2120c89694f47cbc0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.envzero.com#website\",\"name\":\"env zero docs\",\"url\":\"https://docs.envzero.com\",\"publisher\":{\"@id\":\"https://docs.envzero.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys#webpage\",\"url\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys\",\"name\":\"User API keys\",\"description\":\"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.\",\"dateModified\":\"2026-11-04T13:09:56.872Z\",\"isPartOf\":{\"@id\":\"https://docs.envzero.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"ACCESS \u0026 IDENTITY\",\"item\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/user-management\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"User, role \u0026 team management\",\"item\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/user-management\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"User API keys\",\"item\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys#article\",\"headline\":\"User API keys\",\"name\":\"User API keys\",\"description\":\"Create and manage Admin, User, and Personal API keys in env zero for REST API access, Terraform provider use, and module registry with RBAC-scoped permissions.\",\"url\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys\",\"mainEntityOfPage\":{\"@id\":\"https://docs.envzero.com/guides/admin-guide/user-role-and-team-management/api-keys#webpage\"},\"dateModified\":\"2026-11-04T13:09:56.872Z\",\"keywords\":\"API keys, personal API keys, authentication, programmatic access, Terraform provider, REST API, automation\",\"publisher\":{\"@id\":\"https://docs.envzero.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.envzero.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"env zero docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"env zero docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/guides/admin-guide/user-role-and-team-management/api-keys.md","siteName":"env zero docs","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"group":"GET STARTED","pages":[{"title":"Overview: What is env zero?","href":""},{"title":"Product homepage","href":"/guides/admin-guide/homepage"},{"group":"Quick start","pages":[{"title":"Getting Started with env zero","sidebarTitle":"Overview","href":"/guides/getting-started/getting-started"},{"title":"Create your organization","href":"/guides/getting-started/create-your-organization"},{"title":"Connect your Git repository","sidebarTitle":"Connect your Git repository (optional)","href":"/guides/getting-started/connect-your-vcs"},{"title":"Connect your cloud account","href":"/guides/getting-started/connect-your-cloud-account"},{"title":"Create your first template","href":"/guides/getting-started/create-your-first-template"},{"title":"Deploy your first environment","href":"/guides/getting-started/running-your-first-environment"}]},{"group":"Migrate from Terraform Cloud","pages":[{"title":"Migrate from Terraform Cloud","sidebarTitle":"Overview","href":"/guides/admin-guide/tfc-migration"},{"title":"Connect and scan","href":"/guides/admin-guide/tfc-migration/connect-and-scan"},{"title":"Resolve issues","href":"/guides/admin-guide/tfc-migration/resolve-issues"},{"title":"Review and migrate","href":"/guides/admin-guide/tfc-migration/review-and-migrate"},{"title":"Go live","href":"/guides/admin-guide/tfc-migration/go-live"},{"title":"Troubleshooting","sidebarTitle":"TFC migration troubleshooting","href":"/guides/admin-guide/tfc-migration/troubleshooting"}]},{"group":"Plan your setup","pages":[{"title":"Plan your setup","href":"/guides/getting-started/plan-your-setup"}]},{"group":"Reference","pages":[{"title":"Supported platforms","href":"/guides/getting-started/supported-platforms"},{"title":"Glossary","href":"/guides/getting-started/glossary"}]}]},{"group":"ENVIRONMENTS \u0026 DEPLOYMENTS","pages":[{"group":"Creating \u0026 managing environments","pages":[{"title":"Environment overview","href":"/guides/admin-guide/environments"},{"title":"Creating a new environment","href":"/guides/admin-guide/environments/setting-up-a-new-environment"},{"title":"Environment access","href":"/guides/admin-guide/environments/access"},{"title":"Managing bulk operations","href":"/guides/admin-guide/environments/bulk-operations"},{"title":"Environment Tags","href":"/guides/admin-guide/environments/tags"},{"title":"Using continuous deployment","href":"/guides/admin-guide/environments/continuous-deployment"},{"title":"Locking environments","href":"/guides/admin-guide/environments/environment-locking"},{"title":"Performing targeted deployments","href":"/guides/admin-guide/environments/targeted-deployments"},{"title":"Configure workflow triggers","href":"/guides/admin-guide/environments/workflow-triggers"},{"title":"Additional deployment controls","href":"/guides/admin-guide/additional-controls"},{"title":"AI-powered summarization and error insights","href":"/guides/admin-guide/environments/ai-powered-summarization-and-error-insights"},{"title":"Moving environments","href":"/guides/admin-guide/environments/move-environment"},{"title":"Plan and apply via PR comments","href":"/guides/admin-guide/environments/plan-and-apply-from-pr-comments"},{"title":"Running plan on pull requests","href":"/guides/admin-guide/environments/plan-on-pull-request"}]},{"group":"Workflows","pages":[{"title":"Workflow overview","href":"/guides/admin-guide/workflows"},{"title":"Creating a new workflow","href":"/guides/admin-guide/workflows/create-a-new-workflow"},{"title":"Partial workflow deployment","href":"/guides/admin-guide/workflows/workflow-partial-deployment"},{"title":"Workflow file reference","href":"/guides/admin-guide/workflows/workflow-file-reference"},{"title":"Workflow file JSON schema","href":"/guides/admin-guide/workflows/workflow-file-json-schema"},{"title":"Terraform provider settings for sub-environments","sidebarTitle":"Terraform provider settings","href":"/guides/admin-guide/workflows/terraform-provider-sub-environment-settings"}]},{"group":"Scheduling \u0026 automation","pages":[{"title":"Deployment scheduling","href":"/guides/admin-guide/environments/scheduling"},{"title":"Running ad hoc tasks","href":"/guides/admin-guide/environments/ad-hoc-tasks"}]},{"group":"Environment discovery","pages":[{"title":"Environment discovery overview","href":"/guides/admin-guide/environment-discovery"},{"title":"Discovery by file","href":"/guides/admin-guide/environment-discovery/discovery-by-file"},{"title":"Auto-create environments from pull requests","sidebarTitle":"Auto-creating environments from pull requests","href":"/guides/admin-guide/environment-discovery/automatic-environment-creation-from-pull-request"},{"title":"Import external environments into env zero","sidebarTitle":"Importing external environments into env zero","href":"/guides/admin-guide/environment-discovery/onboarding-import-external-environments-into-env-zero"}]},{"group":"Drift detection \u0026 remediation","pages":[{"title":"Drift Detection","href":"/guides/admin-guide/environments/drift-detection"},{"title":"Analyze drift cause","href":"/guides/admin-guide/environments/drift-detection/drift-cause"},{"title":"Remediate Drift","href":"/guides/admin-guide/environments/drift-detection/automatic-drift-remediation"},{"title":"Drift Actions","href":"/guides/admin-guide/environments/drift-detection/drift-actions"},{"title":"Drift detection policy","href":"/guides/policies-governance/drift-detection-policy"}]},{"group":"Promotion strategies","pages":[{"title":"Environment promotion strategies","href":"/guides/admin-guide/environments/promotion-strategies"}]}]},{"group":"TEMPLATES \u0026 IaC TOOLS","pages":[{"group":"Managing templates","pages":[{"title":"Template overview","href":"/guides/admin-guide/templates"},{"title":"Managing IaC binary versions","href":"/guides/admin-guide/templates/iac-binaries-versions"},{"title":"Using self-hosted VCS","href":"/guides/admin-guide/templates/self-hosted-vcs"}]},{"group":"Version control integration","pages":[{"title":"Git and VCS integration","href":"/guides/admin-guide/manage-vcs"},{"group":"GitHub integration","pages":[{"title":"Standard GitHub integration","href":"/guides/admin-guide/templates/github-templates"},{"title":"GitHub Enterprise integration","href":"/guides/admin-guide/templates/github-enterprise-integration"}]},{"group":"GitLab integration","pages":[{"title":"Standard GitLab integration","href":"/guides/admin-guide/templates/gitlab-integration"},{"title":"GitLab Enterprise integration","href":"/guides/admin-guide/templates/gitlab-enterprise-integration"}]},{"group":"Bitbucket integration","pages":[{"title":"Standard Bitbucket integration","href":"/guides/admin-guide/templates/bitbucket-integration"},{"title":"Bitbucket Server integration","href":"/guides/admin-guide/templates/bitbucket-server-integration"}]},{"title":"Azure DevOps integration","href":"/guides/admin-guide/templates/azure-devops-integration"}]},{"group":"IaC ecosystem","pages":[{"title":"OpenTofu","href":"/guides/admin-guide/templates/opentofu"},{"title":"Terraform","href":"/guides/admin-guide/templates/terraform"},{"title":"Pulumi integration","href":"/guides/admin-guide/templates/pulumi"},{"title":"AWS CloudFormation integration","href":"/guides/admin-guide/templates/cloudformation"},{"title":"Kubernetes (K8s) integration","href":"/guides/admin-guide/templates/k8s"},{"title":"Helm integration","href":"/guides/admin-guide/templates/helm"},{"title":"Ansible integration","href":"/guides/admin-guide/templates/ansible"},{"title":"Terragrunt integration","href":"/guides/admin-guide/templates/terragrunt"}]},{"group":"Open source projects","pages":[{"title":"OpenTofu project","href":"/guides/community-and-resources/community-and-open-source/opentofu"},{"title":"Terratag project","href":"/guides/community-and-resources/community-and-open-source/terratag"}]},{"group":"Repository structure","pages":[{"title":"Repository structure","href":"/guides/admin-guide/templates/repository-structure"}]},{"group":"Module \u0026 provider registries","pages":[{"title":"Private registry","href":"/guides/admin-guide/private-registry"},{"group":"Modules registry","pages":[{"title":"Module overview","href":"/guides/admin-guide/private-registry/modules"},{"title":"Using modules","href":"/guides/admin-guide/private-registry/modules/module-usage"},{"title":"Testing modules in CI","href":"/guides/admin-guide/private-registry/modules/modules-continuous-integration-testing"}]},{"title":"Providers overview","href":"/guides/admin-guide/private-registry/providers"}]}]},{"group":"PLATFORM CONFIGURATION","pages":[{"group":"Variables \u0026 secrets","pages":[{"title":"Managing variables","href":"/guides/admin-guide/variables"},{"title":"Manage access tokens","href":"/guides/admin-guide/variables/access-tokens"},{"title":"Handling common errors","href":"/guides/admin-guide/variables/common-errors"},{"title":"Working with environment outputs","href":"/guides/admin-guide/variables/environment-outputs"},{"title":"Managing SSH keys","href":"/guides/admin-guide/variables/ssh-keys"},{"title":"Using variable sets","href":"/guides/admin-guide/variables/variable-sets"},{"title":"Managing workflow variables","href":"/guides/admin-guide/variables/workflow-variables"}]},{"group":"Custom flows","pages":[{"title":"Custom flows overview","href":"/guides/admin-guide/custom-flows"},{"title":"Project-level custom flow","href":"/guides/admin-guide/custom-flows/project-level-custom-flow"},{"title":"Custom flow schema (v2)","href":"/guides/admin-guide/custom-flows/version-2-schema"}]},{"group":"State management","pages":[{"title":"Remote backend","href":"/guides/admin-guide/remote-backend"},{"title":"Using self-hosted remote state","href":"/guides/admin-guide/remote-backend/self-hosted-remote-state"},{"title":"Authenticate locally","href":"/guides/admin-guide/remote-backend/login"},{"title":"Running remote plan","href":"/guides/admin-guide/remote-backend/remote-plan"},{"title":"Running remote apply","href":"/guides/admin-guide/remote-backend/remote-apply"},{"title":"Integrate with Terraform Cloud Remote Backend","sidebarTitle":"Integrating with Terraform Cloud Remote Backend","href":"/guides/admin-guide/remote-backend/working-with-terraform-cloud-remote-backend"},{"group":"State migration \u0026 backend configuration","pages":[{"title":"Migrating State","href":"/guides/admin-guide/remote-backend/state-migration"},{"title":"Configuring state access control","href":"/guides/admin-guide/remote-backend/state-access-control"},{"title":"Remote state data source","href":"/guides/admin-guide/remote-backend/remote-state-data-source"}]}]},{"group":"Plugins","pages":[{"title":"Plugins overview","href":"/guides/integrations/plugins"},{"title":"Using the Checkov plugin","href":"/guides/integrations/plugins/checkov-plugin"},{"title":"Using the import variable plugin","href":"/guides/integrations/plugins/import-variable-plugin"},{"title":"Using the OPA plugin","href":"/guides/integrations/plugins/opa-plugin"},{"title":"Terragrunt module detection","href":"/guides/integrations/plugins/terragrunt-modules-detection"},{"title":"Using the TFLint plugin","href":"/guides/integrations/plugins/tflint-plugin"},{"title":"Using the TFsec plugin","href":"/guides/integrations/plugins/tfsec-plugin"},{"title":"Using the Trivy plugin","href":"/guides/integrations/plugins/trivy-plugin"}]}]},{"group":"SELF-HOSTED AGENTS","pages":[{"group":"Getting started","pages":[{"title":"Self-hosted agents overview","href":"/guides/admin-guide/self-hosted-kubernetes-agent/overview"},{"title":"Self-hosted Kubernetes agent","href":"/guides/admin-guide/self-hosted-kubernetes-agent/self-hosted-kubernetes-agent"},{"title":"Install the agent with Terraform","href":"/guides/admin-guide/self-hosted-kubernetes-agent/terraform-bootstrap"},{"title":"Running a standalone Docker agent","href":"/guides/admin-guide/self-hosted-kubernetes-agent/standalone-docker-agent"}]},{"group":"Deployment image","pages":[{"title":"Configuring deployment image","href":"/guides/admin-guide/self-hosted-kubernetes-agent/deployment-image"},{"title":"Extending deployment image","href":"/guides/admin-guide/self-hosted-kubernetes-agent/extending-deployment-image"},{"title":"Changing user ID","href":"/guides/admin-guide/self-hosted-kubernetes-agent/using-a-custom-image-in-an-agent/change-user-id"},{"title":"Run Docker in custom flows","href":"/guides/admin-guide/self-hosted-kubernetes-agent/docker-in-custom-flows"}]},{"group":"Authentication","pages":[{"title":"Authenticating the agent on AWS EKS","href":"/guides/admin-guide/self-hosted-kubernetes-agent/authenticating-the-agent-on-aws-eks"},{"title":"Authenticating the agent on Azure AKS","href":"/guides/admin-guide/self-hosted-kubernetes-agent/authenticating-the-agent-on-azure-aks"}]},{"group":"Configuration","pages":[{"title":"Custom/optional configuration","href":"/guides/admin-guide/self-hosted-kubernetes-agent/custom-optional-configuration"},{"title":"Using cache with PVC","href":"/guides/admin-guide/self-hosted-kubernetes-agent/cache-with-pvc"},{"title":"Using custom CA certificates","href":"/guides/admin-guide/self-hosted-kubernetes-agent/custom-ca-certificates"},{"title":"Hosting deployment logs","href":"/guides/admin-guide/self-hosted-kubernetes-agent/hosting-the-deployment-logs"},{"title":"env zero Hosted Encrypted State","href":"/guides/admin-guide/self-hosted-kubernetes-agent/env-zero-hosted-encrypted-state"}]},{"group":"High availability \u0026 scaling","pages":[{"title":"HA/DR strategy for self-hosted agents","href":"/guides/admin-guide/self-hosted-kubernetes-agent/hadr-strategy-for-self-hosted-agents"},{"title":"Running multiple self-hosted agents","href":"/guides/admin-guide/self-hosted-kubernetes-agent/multiple-self-hosted-agents"},{"title":"Autoscaling self-hosted agents on Azure Container Apps","sidebarTitle":"Autoscaling on Azure Container Apps","href":"/guides/admin-guide/self-hosted-kubernetes-agent/autoscaling-on-azure-container-apps"},{"title":"Monitoring Self-Hosted Agents","href":"/guides/admin-guide/self-hosted-kubernetes-agent/self-hosted-agents-monitoring"}]},{"title":"Troubleshooting","sidebarTitle":"Self-hosted agent troubleshooting","href":"/guides/admin-guide/self-hosted-kubernetes-agent/troubleshooting"}]},{"group":"CLOUD MANAGEMENT","pages":[{"group":"Cloud resource management","pages":[{"title":"Cloud Compass","href":"/guides/cloud-compass/cloud-compass"},{"title":"Configure an AWS cloud account","href":"/guides/cloud-compass/cloud-compass/configure-cloud-accounts"},{"title":"Configure an Azure cloud account","href":"/guides/cloud-compass/cloud-compass/configure-an-azure-cloud-account"},{"title":"Configure a GCP cloud account","href":"/guides/cloud-compass/cloud-compass/configure-a-gcp-cloud-account"},{"title":"Link environments to Cloud Compass","sidebarTitle":"Linking environments to Cloud Compass resources","href":"/guides/cloud-compass/cloud-compass/linking-environments-to-cloud-compass-resources"}]},{"group":"Cloud insights","pages":[{"title":"Cloud Analyst","href":"/guides/cloud-analyst/cloud-analyst"},{"title":"AI chat interface","href":"/guides/cloud-analyst/cloud-analyst/ai-chat-interface"},{"title":"Dashboards","href":"/guides/cloud-analyst/cloud-analyst/dashboards"},{"title":"Explorer","href":"/guides/cloud-analyst/cloud-analyst/explorer"},{"title":"Insights","href":"/guides/cloud-analyst/cloud-analyst/insights"},{"title":"env zero model","href":"/guides/cloud-analyst/cloud-analyst/env-zero-model"}]},{"title":"env zero Context Layer","sidebarTitle":"Context Layer (CloudQuery)","href":"/guides/integrations/context-layer"}]},{"group":"GOVERNANCE \u0026 POLICIES","pages":[{"group":"Policies \u0026 safeguards","pages":[{"title":"Manage policies","href":"/guides/policies-governance/policies"},{"title":"Ready-to-use policies","href":"/guides/policies-governance/ready-to-use-policies"},{"title":"Enable env zero secrets","href":"/guides/policies-governance/allow-env0-secrets"},{"title":"Force remote backend","href":"/guides/policies-governance/force-remote-backend"}]},{"group":"Approval \u0026 deployment controls","pages":[{"title":"Manage approval policies","href":"/guides/policies-governance/approval-policies"},{"title":"Pin deployments to an approved revision","sidebarTitle":"Pin deployments to a revision","href":"/guides/policies-governance/pin-deployments-to-an-approved-revision"},{"title":"Enable destroy protection","href":"/guides/policies-governance/destroy-protection"},{"title":"Default auto-approve","href":"/guides/policies-governance/default-auto-approve"},{"title":"Deployment controls","href":"/guides/policies-governance/deployment-controls"}]},{"group":"Environment quotas \u0026 TTL settings","pages":[{"title":"Set environment limits","href":"/guides/policies-governance/environment-limits"},{"title":"Configure policy TTL","href":"/guides/policies-governance/policy-ttl"}]},{"group":"Cost management","pages":[{"title":"Estimate costs","href":"/guides/policies-governance/cost-estimation"},{"title":"Set budget notifications","href":"/guides/cost-monitoring/budget-notifications"},{"title":"Set cost monitoring","href":"/guides/cost-monitoring/cost-monitoring"},{"group":"Cloud provider cost setup","pages":[{"title":"Configure AWS costs","href":"/guides/cost-monitoring/aws-costs"},{"title":"Configure Azure costs","href":"/guides/cost-monitoring/setup-azure-costs"},{"title":"Configure GCP costs","href":"/guides/cost-monitoring/gcp-costs"}]}]},{"group":"Code Optimizer","pages":[{"title":"Code Optimizer overview","href":"/guides/policies-governance/code-optimizer/overview"},{"title":"Setup \u0026 prerequisites","href":"/guides/policies-governance/code-optimizer/setup"},{"title":"Scanning your code","href":"/guides/policies-governance/code-optimizer/scanning"},{"title":"Generating \u0026 applying fixes","href":"/guides/policies-governance/code-optimizer/fixes"}]}]},{"group":"ACCESS \u0026 IDENTITY","pages":[{"group":"User, role \u0026 team management","pages":[{"title":"Manage users","href":"/guides/admin-guide/user-role-and-team-management/user-management"},{"title":"Manage teams","href":"/guides/admin-guide/user-role-and-team-management/teams"},{"title":"Role-based access control (RBAC)","href":"/guides/admin-guide/user-role-and-team-management/rbac"},{"title":"Default roles","href":"/guides/admin-guide/user-role-and-team-management/default-roles"},{"title":"Custom roles","href":"/guides/admin-guide/user-role-and-team-management/custom-roles"},{"title":"Assigning roles","description":"Assign roles to users and teams at organization, project, and environment levels in env zero, with cascading permissions and sub-project inheritance rules.","href":"/guides/admin-guide/user-role-and-team-management/role-assignment"},{"title":"User API keys","sidebarTitle":"Admin API Keys","href":"/guides/admin-guide/user-role-and-team-management/api-keys"}]},{"group":"Organization \u0026 project settings","pages":[{"title":"Manage organizations","description":"Set up and manage organizations as the top-level entity for projects, templates, variables, and policies in env zero, including SSO configuration.","href":"/guides/admin-guide/organizations"},{"title":"Manage projects","href":"/guides/admin-guide/projects"},{"title":"Manage sub-projects","href":"/guides/admin-guide/projects/sub-projects"}]},{"group":"SSO \u0026 identity","pages":[{"title":"Self-service SSO integration","href":"/guides/sso-integrations/self-service-sso"},{"title":"Self-service SAML setup","href":"/guides/sso-integrations/self-service-saml"},{"title":"Sync roles \u0026 groups from your IdP","href":"/guides/sso-integrations/importing-roles-or-groups-from-your-identity-provider"},{"group":"SCIM provisioning","pages":[{"title":"SCIM provisioning","href":"/guides/sso-integrations/scim-provisioning"},{"title":"SCIM provisioning with Okta","href":"/guides/sso-integrations/scim-provisioning-okta"},{"title":"SCIM provisioning with Entra ID","href":"/guides/sso-integrations/scim-provisioning-entra-id"}]},{"group":"Identity provider guides","pages":[{"title":"Azure Active Directory integration","href":"/guides/sso-integrations/self-service-azure-ad"},{"title":"AWS Single Sign-On integration","href":"/guides/sso-integrations/aws-single-sign-on"},{"title":"Google Workspace integration","href":"/guides/sso-integrations/google-workspace"},{"title":"JumpCloud integration","href":"/guides/sso-integrations/jumpcloud"},{"title":"Keycloak integration","href":"/guides/sso-integrations/keycloak"},{"title":"Okta integration","href":"/guides/sso-integrations/okta-integration"},{"title":"OneLogin integration","href":"/guides/sso-integrations/onelogin"},{"title":"VMware Workspace ONE integration","href":"/guides/sso-integrations/vmware-workspace-one"}]}]},{"group":"OIDC integrations","pages":[{"title":"General OIDC integrations","href":"/guides/integrations/oidc-integrations"},{"title":"Retrieve OIDC subject identifier","href":"/guides/integrations/oidc-integrations/oidc-retrieving-your-subject-identifier"},{"title":"OIDC for AWS","href":"/guides/integrations/oidc-integrations/oidc-with-aws"},{"title":"OIDC for Azure","href":"/guides/integrations/oidc-integrations/oidc-with-azure"},{"title":"OIDC for GCP","href":"/guides/integrations/oidc-integrations/oidc-with-google-cloud-platform"},{"title":"OIDC for Vault","href":"/guides/integrations/oidc-integrations/oidc-with-vault"}]},{"group":"Auditing \u0026 transparency","pages":[{"title":"Monitoring dashboards","href":"/guides/admin-guide/dashboards"},{"group":"Forwarding logs","pages":[{"title":"Logs forwarding overview","href":"/guides/integrations/logs-forwarding"},{"title":"Amazon CloudWatch","href":"/guides/integrations/logs-forwarding/cloudwatch"},{"title":"Amazon S3 logs","href":"/guides/integrations/logs-forwarding/s3"},{"title":"Coralogix logs","href":"/guides/integrations/logs-forwarding/coralogix"},{"title":"Datadog logs","href":"/guides/integrations/logs-forwarding/datadog"},{"title":"Dynatrace logs","href":"/guides/integrations/logs-forwarding/dynatrace"},{"title":"Google Cloud Logging","href":"/guides/integrations/logs-forwarding/gcp-logging"},{"title":"Grafana Loki logs","href":"/guides/integrations/logs-forwarding/grafana-loki"},{"title":"Logz.io logs","href":"/guides/integrations/logs-forwarding/logzio"},{"title":"New Relic logs","href":"/guides/integrations/logs-forwarding/new-relic"},{"title":"Splunk logs","href":"/guides/integrations/logs-forwarding/splunk"},{"title":"Sumo Logic logs","href":"/guides/integrations/logs-forwarding/sumologic"}]}]}]},{"group":"SECURITY \u0026 COMPLIANCE","pages":[{"title":"Security overview","href":"/guides/overview/security-overview"},{"title":"IP allowlisting","href":"/guides/overview/security-overview/ip-allowlisting"},{"title":"View audit logs","href":"/guides/admin-guide/audit-logs"},{"title":"IP addresses","href":"/guides/overview/security-overview/ip-addresses"}]},{"group":"INTEGRATIONS \u0026 DEVELOPER TOOLS","pages":[{"group":"Notifications","pages":[{"title":"Manage notifications","href":"/guides/integrations/notifications"},{"title":"Microsoft Teams integration","href":"/guides/integrations/notifications/microsoft-teams"},{"title":"Webhook notifications","href":"/guides/integrations/notifications/webhooks"}]},{"group":"Internal developer platforms","pages":[{"title":"Backstage integration","href":"/guides/integrations/internal-developer-platforms/backstage"}]},{"group":"CLI \u0026 API access","pages":[{"title":"env zero CLI Tool","sidebarTitle":"CLI","href":"/guides/community-and-resources/support-and-help/env-zero-cli"},{"title":"env zero CLI command reference","sidebarTitle":"Command reference","href":"/guides/community-and-resources/support-and-help/env-zero-cli/command-reference"},{"title":"Deploy workflows with the env zero CLI","sidebarTitle":"Deploy workflows","href":"/guides/community-and-resources/support-and-help/env-zero-cli/workflows"},{"title":"Troubleshoot the env zero CLI","sidebarTitle":"Troubleshooting","href":"/guides/community-and-resources/support-and-help/env-zero-cli/troubleshooting"},{"title":"env zero API access","sidebarTitle":"API access","href":"/guides/community-and-resources/support-and-help/api-access"},{"title":"Manage env zero with the Terraform provider","sidebarTitle":"Terraform provider","href":"/guides/community-and-resources/support-and-help/terraform-provider"},{"title":"env zero MCP server","sidebarTitle":"MCP server","href":"/guides/community-and-resources/support-and-help/mcp-server"}]}]},{"group":"BILLING \u0026 SUPPORT","pages":[{"title":"Purchase options","href":"/guides/billing/purchase-options"},{"title":"Subscription tiers","href":"/guides/billing/subscription-tiers"},{"title":"Managing your subscription","href":"/guides/billing/managing-your-subscription"},{"title":"Support","href":"/guides/community-and-resources/support-and-help/support"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/users/list-users-vcs-id-mappings"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelogs"}]},{"tab":"Terraform Provider","icon":"external-link","href":"https://registry.terraform.io/providers/env0/env0/latest"},{"tab":"Status Page","icon":"external-link","href":"https://status.env0.com"},{"tab":"Schedule a Demo","icon":"external-link","href":"https://www.envzero.com/demo-request"},{"tab":"Start Free","icon":"external-link","href":"https://app.env0.com/"}]},"basePath":"","title":"User API keys - env zero docs","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BLUesUNd.js","lightbox-handle-r17bVUz3.js"]}