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

# Email Verification

> Use the Verify API to verify email addresses.

<Info>
  To use the email verification feature, [contact our support team](mailto:support@prelude.so) to enable it on your account.
</Info>

When you send a verification request for an email address, Prelude sends an email with a verification code to that address. The user then enters the code in your application to verify their email address.

The email verification feature follows the same [verification lifecycle](/verify/v2/documentation/lifecycle) as the phone number verification.

The content of the email sent to your users can be customized to your brand in a similar way to the SMS verification messages. For more information, see the [Message Content](/verify/v2/documentation/content) documentation.

You can also specify a custom email address to send the verification email from. For more information, [contact our support team](mailto:support@prelude.so) to set this up on your account.

To verify an email address, you can use the [`POST /v2/verification`](/verify/v2/api-reference/create-or-retry-a-verification) endpoint with the `target.type` parameter set to `email_address` and the `target.value` parameter set to the email address you want to verify.

<RequestExample>
  ```javascript Node.js theme={null}
  import Prelude from "@prelude.so/sdk";

  const client = new Prelude();

  async function main() {
    const verification = await client.verification.create({
      target: {
        type: "email_address",
        value: "john.doe@example.com",
      },
    });

    console.log(verification.id);
  }

  main();
  ```

  ```go Go theme={null}
  package main

  import (
    	"context"
    	"fmt"

    	"github.com/prelude-so/go-sdk"
    	"github.com/prelude-so/go-sdk/option"
  )

  func main() {
  	client := prelude.NewClient()

  	verification, err := client.Verification.New(context.TODO(), prelude.VerificationNewParams{
  		Target: prelude.F(prelude.VerificationNewParamsTarget{
  			Type:  prelude.F(prelude.VerificationNewParamsTargetTypeEmailAddress),
  			Value: prelude.F("john.doe@example.com"),
  		}),
  	})
  	if err != nil {
  		panic(err.Error())
  	}

  	fmt.Printf("%+v\n", verification.ID)
  }
  ```

  ```python Python theme={null}
  import os
  from prelude_python_sdk import Prelude

  client = Prelude()

  verification = client.verification.create(
      target={
          "type": "email_address",
          "value": "john.doe@example.com",
      },
  )

  print(verification.id)
  ```

  ```java Java theme={null}
    import so.prelude.sdk.client.PreludeClient;
    import so.prelude.sdk.client.okhttp.PreludeOkHttpClient;
    import so.prelude.sdk.models.VerificationCreateParams;
    import so.prelude.sdk.models.VerificationCreateResponse;

    // Configures using the `API_TOKEN` environment variable
    PreludeClient client = PreludeOkHttpClient.fromEnv();

    VerificationCreateParams params = VerificationCreateParams.builder()
        .target(VerificationCreateParams.Target.builder()
            .type(VerificationCreateParams.Target.Type.EMAIL_ADDRESS)
            .value("john.doe@example.com")
            .build())
        .build();
    VerificationCreateResponse verification = client.verification().create(params);
  ```

  ```ruby Ruby theme={null}
  require "bundler/setup"
  require "prelude_sdk"

  prelude = PreludeSDK::Client.new(
    api_token: ENV["API_TOKEN"] # This is the default and can be omitted
  )

  verification = prelude.verification
    .create(target: {type: "email_address", value: "john.doe@example.com"})

  puts(verification.id)
  ```
</RequestExample>
