# How To: Upload Evaluation Key

The Evaluation Key (EVK) enables efficient low-latency interactions with a specific Workload. To upload this key, you’ll need a User Access Token provided by the customer for the specific workload.

This process consists of two parts: generating a key pair (secret and evaluation keys) and publishing the EVK to Lattica’s backend.&#x20;

## Overview of the Process

{% stepper %}
{% step %}

### G**enerate Key Pair**:

* A **Secret Key** is generated and remains securely in the Query Client. Only the end-user has access to this key, which is later used for encrypting and decrypting messages.
* An **Evaluation Key (EVK)** is also generated. This key is used during query processing for validation and secure computations.
  {% endstep %}

{% step %}

### P**ublish Evaluation Key**:

The generated EVK is uploaded to Lattica’s backend. This ensures the backend is configured for processing encrypted queries for the specified workload.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
The Evaluation Key is generated only once per setup and can be used for ongoing encrypted interactions.
{% endhint %}

Use the following code snippet to upload an Evaluation Key.&#x20;

Ensure you have the **User Access Token** ready, as this token specifies the workload for which the secret and evaluation keys will be generated.

{% tabs %}
{% tab title="🧊 Python SDK" %}

```python
import lattica_common.app_api as agent_app
​
# Notice your query token expires in 30 days
query_token = "the_query_token_you_got_using_the_generate_user_token"

# user_data is a tuple of: 
# (serialized_context, serialized_secret_key, serialized_homseq)
# which you need for encrypting the query and querying the model
user_data = agent_app.user.query_offline_phase(query_token)

```

{% endtab %}

{% tab title="📦 TypeScript SDK" %}

```typescript
import { LatticaQueryClient } from 'lattica-query-client';

const client = new LatticaQueryClient('your-jwt-query-token');

// Uploaded the EK
const initialized = await client.init();
if (!initialized) {
  console.error('Initialization failed: The EK was not successfully uploaded.');
  throw new Error('EK upload failed.');
}
console.log('EK uploaded successfully.');
```

{% endtab %}
{% endtabs %}

### Parameters

* **JWT Access Token**: A unique identifier created by the AI Provider.&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://platformdocs.lattica.ai/how-to-guides/secure-query-processing/how-to-upload-evaluation-key.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
