# Verify a Verifiable Credential

Once you have issued your credential and have a JWT as part of the credential proof, you can use the `/credential/verify` API to check that the JWT has not been tampered.

## Step 1: Obtain Credential to Verify

To verify a Credential, you can either pass the full Credential body or the JWT proof. These can be either obtained from a [Credential that has been issued](https://docs.cheqd.io/product/studio/credentials/issue-credential) or from a Verifiable Presentation presented to the user.

## Step 2: Configure Verification Parameters

The user is able to set verification parameters to filter whether they want to verify certain aspects of a Credential, including:

<details>

<summary>verifyStatus</summary>

* true (indicates that the user wants to verify the Credential Status, requiring a credentialStatus property to be present in the Credential)
* false (Default. Indicates that the user does not want to verify the Credential Status.&#x20;

</details>

<details>

<summary>fetchRemoteContexts</summary>

When dealing with JSON-LD type Verifiable Credentials you also MUST provide the proper contexts within a Credential body. Set this to `true` ONLY if you want the `@context` URLs to be fetched in case they are a custom context.

* true
* false (default)

</details>

## Step 3: Pass the Credential to the API

Simply paste the JWT or the full credential body  into the request field of the `/credential/verify` API, and the API will give you a response including the following verification policies:

1. Whether the Credential has been tampered
2. Whether the Credential has a valid issuance date
3. Whether the Credential has expired
4. Whether the Credential Status is valid

## Verify a Verifiable Credential.

> This endpoint verifies a Verifiable Credential passed to it. As input, it can take the VC-JWT as a string or the entire credential itself.

```json
{"openapi":"3.0.0","info":{"title":"cheqd Studio API for cheqd network","version":"2.0.0"},"tags":[{"name":"Verifiable Credentials"}],"servers":[{"url":"https://studio-api.cheqd.net","description":"Main (production) server"},{"url":"https://studio-api-staging.cheqd.net","description":"Staging server for testing"},{"url":"http://localhost:3000","description":"Local server for testing"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"CredentialVerifyRequest":{"type":"object","properties":{"credential":{"description":"Verifiable Credential to be verified as a VC-JWT string or a JSON object.","type":"object"},"policies":{"description":"Custom verification policies to execute when verifying credential.","type":"object","properties":{"issuanceDate":{"description":"Policy to skip the `issuanceDate` (`nbf`) timestamp check when set to `false`.","type":"boolean","default":true},"expirationDate":{"description":"Policy to skip the `expirationDate` (`exp`) timestamp check when set to `false`.","type":"boolean","default":true},"audience":{"description":"Policy to skip the audience check when set to `false`.","type":"boolean","default":false},"checkExternalProvider":{"description":"Policy to also check other providers when set to `true`.","type":"boolean","default":false}}}}},"VerifyCredentialResult":{"type":"object","properties":{"verified":{"type":"boolean"},"issuer":{"type":"string"},"signer":{"type":"object"},"jwt":{"type":"string"},"verifiableCredential":{"type":"object"}}},"InvalidRequest":{"description":"A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.","type":"object","properties":{"error":{"type":"string"}}},"UnauthorizedError":{"description":"Access token is missing or invalid","type":"object","properties":{"error":{"type":"string"}}},"InternalError":{"description":"An internal error has occurred. Additional state information plus metadata may be available in the response body.","type":"object","properties":{"error":{"type":"string"}}}}},"paths":{"/credential/verify":{"post":{"tags":["Verifiable Credentials"],"summary":"Verify a Verifiable Credential.","description":"This endpoint verifies a Verifiable Credential passed to it. As input, it can take the VC-JWT as a string or the entire credential itself.","operationId":"verify","parameters":[{"in":"query","name":"verifyStatus","description":"If set to `true` the verification will also check the status of the credential. Requires the VC to have a `credentialStatus` property.","schema":{"type":"boolean","default":false}},{"in":"query","name":"fetchRemoteContexts","description":"When dealing with JSON-LD you also MUST provide the proper contexts. Set this to `true` ONLY if you want the `@context` URLs to be fetched in case they are a custom context.","schema":{"type":"boolean","default":false}},{"in":"query","name":"allowDeactivatedDid","description":"If set to `true` allow to verify credential which based on deactivated DID.","schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CredentialVerifyRequest"}},"application/json":{"schema":{"$ref":"#/components/schemas/CredentialVerifyRequest"}}}},"responses":{"200":{"description":"The request was successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCredentialResult"}}}},"400":{"$ref":"#/components/schemas/InvalidRequest"},"401":{"$ref":"#/components/schemas/UnauthorizedError"},"500":{"$ref":"#/components/schemas/InternalError"}}}}}}
```


---

# 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/studio/credentials/verify-credential.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.
