> ## Documentation Index
> Fetch the complete documentation index at: https://developers.pleo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Generate Standalone API Keys

export const WhatComesNext = ({children, href}) => <div className="mt-4">
    <a href={href} className="btn-primary">
      {children} →
    </a>
  </div>;

export const NoteCallout = ({title, children}) => <div className="callout-box callout-note">
    <div className="callout-row">
      <span className="callout-icon">
        <svg width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M208,104a79.86,79.86,0,0,1-30.59,62.92A24.29,24.29,0,0,0,168,186v6a8,8,0,0,1-8,8H96a8,8,0,0,1-8-8v-6a24.11,24.11,0,0,0-9.3-19A79.87,79.87,0,0,1,48,104.45C47.76,61.09,82.72,25,126.07,24A80,80,0,0,1,208,104Z" opacity="0.2" /><path d="M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z" /></svg>
      </span>
      <div>
        {title && <div className="callout-title">
            {title}
          </div>}
        <div className="callout-body">
          {children}
        </div>
      </div>
    </div>
  </div>;

export const RememberCallout = ({title, children}) => <div className="callout-box callout-remember">
    <div className="callout-row">
      <span className="callout-icon">
        <svg width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M229.66,98.34,172.39,155.8c11.46,22.93-1.72,45.86-10.11,57a8,8,0,0,1-12,.83L42.34,105.76A8,8,0,0,1,43,93.85c29.65-23.92,57.4-10,57.4-10l57.27-57.46a8,8,0,0,1,11.31,0L229.66,87A8,8,0,0,1,229.66,98.34Z" opacity="0.2" /><path d="M235.32,81.37,174.63,20.69a16,16,0,0,0-22.63,0L98.37,74.49c-10.66-3.34-35-7.37-60.4,13.14a16,16,0,0,0-1.29,23.78L85,159.71,42.34,202.34a8,8,0,0,0,11.32,11.32L96.29,171l48.29,48.29A16,16,0,0,0,155.9,224c.38,0,.75,0,1.13,0a15.93,15.93,0,0,0,11.64-6.33c19.64-26.1,17.75-47.32,13.19-60L235.33,104A16,16,0,0,0,235.32,81.37ZM224,92.69h0l-57.27,57.46a8,8,0,0,0-1.49,9.22c9.46,18.93-1.8,38.59-9.34,48.62L48,100.08c12.08-9.74,23.64-12.31,32.48-12.31A40.13,40.13,0,0,1,96.81,91a8,8,0,0,0,9.25-1.51L163.32,32,224,92.68Z" /></svg>
      </span>
      <div>
        {title && <div className="callout-title">
            {title}
          </div>}
        <div className="callout-body">
          {children}
        </div>
      </div>
    </div>
  </div>;

export const ExplorativeCallout = ({title, children}) => <div className="callout-box callout-explorative">
    <div className="callout-row">
      <span className="callout-icon">
        <svg width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M167.18,140.82,94.77,213.23a36.77,36.77,0,0,1-52,0h0a36.77,36.77,0,0,1,0-52l30-30c9.37-3.65,25.78-6.36,47.18,4.82S157.81,144.47,167.18,140.82Z" opacity="0.2" /><path d="M237.66,86.34l-60-60a8,8,0,0,0-11.32,0L37.11,155.57a44.77,44.77,0,0,0,63.32,63.32L212.32,107l22.21-7.4a8,8,0,0,0,3.13-13.25ZM89.11,207.57a28.77,28.77,0,0,1-40.68-40.68l28.8-28.8c8.47-2.9,21.75-4,39.07,5,10.6,5.54,20.18,8,28.56,8.73ZM205.47,92.41a8,8,0,0,0-3.13,1.93l-39.57,39.57c-8.47,2.9-21.75,4-39.07-5-10.6-5.54-20.18-8-28.56-8.73L172,43.31,217.19,88.5Z" /></svg>
      </span>
      <div>
        {title && <div className="callout-title">
            {title}
          </div>}
        <div className="callout-body">
          {children}
        </div>
      </div>
    </div>
  </div>;

<ExplorativeCallout title="Explorative Workflow">
  **Pleo Partners** must use **OAuth 2.0** as their production authentication method, [unless exempt](/docs/current/getting-started/developer-partnership-programme#authentication-requirements).
  Standalone API Keys are intended for safe exploration or internal tooling in Staging or Production.
</ExplorativeCallout>

Generating a Standalone API Key allows you to explore and test Pleo APIs securely in Staging or Production environments.

## Prerequisites

* You have access to [**Staging** or **Production**](/docs/current/how-tos/environment-access/how-to-get-access-to-all-env-standalone-api-keys) environments
* You understand that Standalone API Keys are [**restricted and not available to all customers or partners**](/docs/current/authentication/standalone-api-keys-overview)
* You understand the [permission and scope](/docs/current/authentication/standalone-api-keys-overview#how-standalone-api-keys-work-conceptually) requirements for creating Standalone API Keys
* You understand [OAuth 2.0](/docs/current/authentication/oauth/oauth-overview) is the recommended method for multi-customer integrations

## Steps

### 1. Create an API Key

1. Log into your **Pleo Web App** for [Staging](https://app.staging.pleo.io/access) or [Production](https://app.pleo.io/access)
2. Click **Settings** from the main left-hand menu
3. Scroll down and click **API Keys**
4. Click **Create API Key**

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/_rkxCoO48Dr_L3ku/images/current/standalone-api-keys/standalone-api-keys-new.png?fit=max&auto=format&n=_rkxCoO48Dr_L3ku&q=85&s=03e376c4cc6bb6ba38a7aa84d0ed7b48" alt="Standalone API Keys - New" width="100%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/standalone-api-keys/standalone-api-keys-new.png" />
</div>

5. Enter a descriptive **Name**
6. Select an appropriate **Expiration**
7. Select the entity **Access level** the key should access
8. Tick the **Permissions** [(API Scopes)](/docs/current/authentication/api-scopes) that should apply to the key
9. Click **Create API Key**

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/_rkxCoO48Dr_L3ku/images/current/standalone-api-keys/standalone-api-keys-create.png?fit=max&auto=format&n=_rkxCoO48Dr_L3ku&q=85&s=9cf5cb6e17a938c04e235b1d000d13f5" alt="Standalone API Keys - Create" width="100%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/standalone-api-keys/standalone-api-keys-create.png" />
</div>

<br />

<RememberCallout title="Remember">
  * Follow the [Integration Design](/docs/current/integration-design/auth/api-keys/integration-design-security-for-standalone-api-keys) guidance for managing and safeguarding your API Keys.
  * Integrations are always **1-to-1 connections**. Even if you only use one API Key in a [multi-entity setup](/docs/current/integration-design/auth/multi-entity/integration-design-auth-multi-entity-overview), each API call must include the correct `company_id`.
  * When an API Key expires, it becomes [**disabled for all integrations**](/docs/current/integration-design/auth/api-keys/integration-design-user-exp-guidelines-for-standalone-api-keys#expiry-and-failure-recovery) using that key.
</RememberCallout>

### 2. Securely Store Your API Key

1. Copy the API Key to your clipboard
2. [Store the API Key securely](/docs/current/integration-design/auth/api-keys/integration-design-security-for-standalone-api-keys)

<NoteCallout title="Important">
  * Once you close the modal, you **cannot view the API Key again**.
  * There is **no regenerate option**. If the key is lost, you must create a new one.
</NoteCallout>

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/_rkxCoO48Dr_L3ku/images/current/standalone-api-keys/standalone-api-keys-clipboard.png?fit=max&auto=format&n=_rkxCoO48Dr_L3ku&q=85&s=a2656c10a467927bed77fad5ff904bf7" alt="Standalone API Keys - Save" width="70%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/standalone-api-keys/standalone-api-keys-clipboard.png" />
</div>

## Result

* You have generated an **API Key** with the correct configuration and API scope
* You have securely stored your API Key

***

## What Comes Next?

<WhatComesNext href="/docs/current/how-tos/api-keys/how-to-make-an-api-call-using-standalone-api-keys">
  Make your first API call using your API Key
</WhatComesNext>

***

<div className="text-xs uppercase" style={{ fontVariant: 'small-caps' }}>
  this how-to is part of:
</div>

<div className="mt-4 flex flex-wrap gap-2">
  <a
    href="/docs/current/guides/standalone-api-keys-workflow-guide"
    className="inline-flex items-center rounded-full border border-gray-300 dark:border-gray-600 
px-3 py-1 text-xs font-medium 
bg-white dark:bg-[#1f262b] text-black dark:text-white
hover:bg-gray-100 dark:hover:bg-[#2b2f33]
transition-colors"
  >
    Standalone API Key Workflow Guide
  </a>
</div>

***

## Related Reading

* [OAuth 2.0 Setup Workflow Guide](/docs/current/guides/oauth-workflow-guide): Step-by-step instructions on how to configure OAuth 2.0 for multi-customer integrations.

***
