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

# Load an Existing Encrypted Index

If you've previously created an encrypted index, you can connect to it to add, query or delete data from it. You will need to know the index's name as well as its key to do so:

<CodeGroup>
  ```python Python icon="python" theme={null}
  import cyborgdb_core as cyborgdb

  # Get your API key
  api_key = "your_api_key_here"  # Replace with your CyborgDB API key

  # Create a client (use the same backing store the index was created with)
  client = cyborgdb.Client(api_key, cyborgdb.StorageConfig.disk("/tmp/cyborgdb"))

  # Provide the SAME 32-byte key used when the index was created.
  # Retrieve it from your KMS/secret store — a fresh random key here would fail the load.
  index_key = bytes.fromhex("...")  # the 64-char hex of your existing 32-byte index key

  # Load an encrypted index
  index = client.load_index("my_index", index_key)
  ```

  ```cpp C++ icon="brackets-curly" theme={null}
  #include "cyborgdb_core/client.hpp"
  #include "cyborgdb_core/encrypted_index.hpp"
  #include <array>

  // Get your API key
  std::string api_key = "your_api_key_here";  // Replace with your CyborgDB API key

  // Create a client (use the same backing store the index was created with)
  cyborg::Client client(api_key, cyborg::StorageConfig::Disk("/tmp/cyborgdb"), 0, cyborg::kNone);

  // Provide the index key used when creating the index
  // Example key (32 bytes)
  std::array<uint8_t, 32> index_key;

  // Load an encrypted index (returns std::unique_ptr<cyborg::EncryptedIndex>)
  auto index = client.LoadIndex("my_index", index_key);
  ```
</CodeGroup>

<Note>For role-based access control (RBAC), a per-user load passes the user's 16-byte identifier: `load_index("my_index", user_kek, user_id=user_id)` in Python, or `client.LoadIndex("my_index", user_kek, nullptr, user_id)` in C++. The supplied key then acts as that user's key-encryption key, and per-operation permissions are enforced.</Note>

<Warning>You will need to replace `index_key` with your own index encryption key.
For production use, we recommend that you use an HSM or KMS solution.
For more details, see [Managing Encryption Keys](../advanced/managing-keys).</Warning>

## API Reference

For more information on loading an encrypted index, refer to the API reference:

<CardGroup cols={2}>
  <Card title="Python API Reference" href="../../python/client/load-index" icon="python">
    API reference for `load_index()` in Python
  </Card>

  <Card title="C++ API Reference" href="../../cpp/client/load-index" icon="brackets-curly">
    API reference for `LoadIndex()` in C++
  </Card>
</CardGroup>
