# Create a Verifiable Presentation

This tutorial offers step-by-step guidance on how to create a [Verifiable Presentation](https://w3c-ccg.github.io/vp-request-spec/).

> ⚠️ **Before you begin...** Make sure you've correctly [configured the cheqd plugin's agent settings](https://docs.cheqd.io/product/sdk/veramo/setup) for Veramo CLI

## Background

A Verifiable Presentation is a way a credential holder can generate cryptographicall-verifiable proof that they are in posession of the identity keys (e.g., `did:key`) the credential was issued to.

This is important because [just the Verifiable Credential and its JWT proof](https://docs.cheqd.io/product/sdk/veramo/credentials/verify-jwt-credential), on its own, is susceptible to [*replay attacks*](https://en.wikipedia.org/wiki/Replay_attack) where intercepted Verifiable Credentials could be played back.

The process of creating a *Verifiable Presentation* is one way of addressing these security concerns.

## Instructions

### 1. Start generating Verifiable Presentation

Begin the process of creating a Verifiable Presentation using:

```bash
veramo presentation create
```

### 2. Choose holder/subject identity key to sign the presentation

Specify the subject identity key to be used for signing Verifiable Presentation, e.g., chosen holder `did:key`.

### 3. Specify the `Tag` for the Verifiable Presentation

Hit *Enter* to accept the default at this step

### 4. Specify the number of verifiers

Select how many verifiers will need to be able to verify the presentation.

### 4. Specify presentation type

This can be the same as the Verifiable Credential, or a sub-section of it. Choose *Enter* for default.

### 6. Specify the verifier ID

Select the DID of the verifier from the options presented. In a very simplistic scenario, the verifier could be the same as the issuer, e.g., a scenario where the holder returns a period of time to show they were issued a credential.

### 7. Select the credential(s) to be included in the presentation

You can select one or more Verifiable Credentials to bundle up into the Verifiable Presentation.

### 8. View and save the Verifiable Presentation

After these choices are made, the Verifiable Presentation will be displayed in JSON format along with JWT proof.

Save this output in the folder you have been using throughout, saving as `pres.txt`.

You will need to call on this to verify the presentation in the next step.

## Next steps

In a real-world usage scenario, the Verifiable Presentation output generated above would be electronically (e.g., as API messages) or non-electronically (e.g., encoded to a QR code) shared with the verifier/recipient.

Verifiers/recipients would then be able to [verify the Verifiable Presentation](https://docs.cheqd.io/product/sdk/veramo/credentials/verify-jwt-presentation) to check cryptographically the contents are untampered.


---

# 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://docs.cheqd.io/product/sdk/veramo/credentials/create-jwt-presentation.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.
