Table of Contents

Interface IVerifyV2Client

Namespace
Vonage.VerifyV2
Assembly
Vonage.dll

Exposes Verify v2 API features for multi-channel user verification using PIN codes sent via SMS, Voice, Email, WhatsApp, or Silent Authentication.

public interface IVerifyV2Client

Methods

CancelAsync(Result<CancelRequest>)

Cancels an in-progress verification request. Cancellation is only possible 30 seconds after the request started and before the second event has taken place.

Task<Result<Unit>> CancelAsync(Result<CancelRequest> request)

Parameters

request Result<CancelRequest>

The cancellation request containing the verification request ID to cancel.

Returns

Task<Result<Unit>>

Success if the verification was cancelled, or Failure with error details if cancellation failed (e.g., request not found, already completed, or outside the cancellation window).

Examples

var request = CancelRequest.Parse(requestId);
var result = await client.CancelAsync(request);
result.Match(
    success => Console.WriteLine("Verification cancelled"),
    failure => Console.WriteLine($"Failed: {failure.GetFailureMessage()}"));
See Also

CreateTemplateAsync(Result<CreateTemplateRequest>)

Creates a new custom verification template. Templates allow customization of the verification message text.

Task<Result<Template>> CreateTemplateAsync(Result<CreateTemplateRequest> request)

Parameters

request Result<CreateTemplateRequest>

The request containing the template name. Names must be unique and match the pattern ^[A-Za-z0-9_-]+$.

Returns

Task<Result<Template>>

The created Template with its assigned ID, or Failure if template creation is not enabled for your account.

Examples

var request = CreateTemplateRequest.Build()
    .WithName("my-custom-template")
    .Create();
var result = await client.CreateTemplateAsync(request);
See Also

CreateTemplateFragmentAsync(Result<CreateTemplateFragmentRequest>)

Creates a new template fragment for a specific channel and locale. Fragments define the actual message text used for verification.

Task<Result<TemplateFragment>> CreateTemplateFragmentAsync(Result<CreateTemplateFragmentRequest> request)

Parameters

request Result<CreateTemplateFragmentRequest>

The request containing the template ID, channel (SMS or Voice), locale, and message text with placeholders.

Returns

Task<Result<TemplateFragment>>

The created TemplateFragment, or Failure if the template is not found or the channel/locale combination already exists.

Examples

var request = CreateTemplateFragmentRequest.Build()
    .WithTemplateId(templateId)
    .WithText("Your ${brand} code is ${code}. Valid for ${time-limit} ${time-limit-unit}.")
    .WithLocale("en-us")
    .WithChannel(VerificationChannel.Sms)
    .Create();
var result = await client.CreateTemplateFragmentAsync(request);
See Also

DeleteTemplateAsync(Result<DeleteTemplateRequest>)

Deletes a template. A template can only be deleted if it has no template fragments attached.

Task<Result<Unit>> DeleteTemplateAsync(Result<DeleteTemplateRequest> request)

Parameters

request Result<DeleteTemplateRequest>

The request containing the template ID to delete.

Returns

Task<Result<Unit>>

Success if the template was deleted, or Failure if the template was not found or still has fragments attached.

Examples

var request = DeleteTemplateRequest.Parse(templateId);
var result = await client.DeleteTemplateAsync(request);
See Also

DeleteTemplateFragmentAsync(Result<DeleteTemplateFragmentRequest>)

Deletes a template fragment from a template.

Task<Result<Unit>> DeleteTemplateFragmentAsync(Result<DeleteTemplateFragmentRequest> request)

Parameters

request Result<DeleteTemplateFragmentRequest>

The request containing both the template ID and template fragment ID to delete.

Returns

Task<Result<Unit>>

Success if the fragment was deleted, or Failure if the template or fragment was not found.

Examples

var request = DeleteTemplateFragmentRequest.Build()
    .WithTemplateId(templateId)
    .WithTemplateFragmentId(fragmentId)
    .Create();
var result = await client.DeleteTemplateFragmentAsync(request);
See Also

GetTemplateAsync(Result<GetTemplateRequest>)

Retrieves a single template by its ID.

Task<Result<Template>> GetTemplateAsync(Result<GetTemplateRequest> request)

Parameters

request Result<GetTemplateRequest>

The request containing the template ID to retrieve.

Returns

Task<Result<Template>>

The Template if found, or Failure if the template does not exist.

Examples

var request = GetTemplateRequest.Parse(templateId);
var result = await client.GetTemplateAsync(request);
result.IfSuccess(template => Console.WriteLine($"Template: {template.Name}"));
See Also

GetTemplateFragmentAsync(Result<GetTemplateFragmentRequest>)

Retrieves a single template fragment by its template ID and fragment ID.

Task<Result<TemplateFragment>> GetTemplateFragmentAsync(Result<GetTemplateFragmentRequest> request)

Parameters

request Result<GetTemplateFragmentRequest>

The request containing the template ID and fragment ID to retrieve.

Returns

Task<Result<TemplateFragment>>

The TemplateFragment if found, or Failure if the template or fragment does not exist.

Examples

var request = GetTemplateFragmentRequest.Parse(templateId, fragmentId);
var result = await client.GetTemplateFragmentAsync(request);
result.IfSuccess(fragment => Console.WriteLine($"Fragment text: {fragment.Text}"));
See Also

GetTemplateFragmentsAsync(Result<GetTemplateFragmentsRequest>)

Retrieves a paginated list of all template fragments for a specific template.

Task<Result<GetTemplateFragmentsResponse>> GetTemplateFragmentsAsync(Result<GetTemplateFragmentsRequest> request)

Parameters

request Result<GetTemplateFragmentsRequest>

The request containing the template ID and optional pagination parameters.

Returns

Task<Result<GetTemplateFragmentsResponse>>

A GetTemplateFragmentsResponse containing the fragments and pagination information.

Examples

var request = GetTemplateFragmentsRequest.Build()
    .WithTemplateId(templateId)
    .WithPageSize(10)
    .Create();
var result = await client.GetTemplateFragmentsAsync(request);
result.IfSuccess(response => {
    foreach (var fragment in response.Embedded.Fragments)
        Console.WriteLine($"Fragment: {fragment.Channel} - {fragment.Locale}");
});
See Also

GetTemplatesAsync(Result<GetTemplatesRequest>)

Retrieves a paginated list of all templates for your account.

Task<Result<GetTemplatesResponse>> GetTemplatesAsync(Result<GetTemplatesRequest> request)

Parameters

request Result<GetTemplatesRequest>

The request containing optional pagination parameters (page, page_size).

Returns

Task<Result<GetTemplatesResponse>>

A GetTemplatesResponse containing the templates and pagination information.

Examples

var request = GetTemplatesRequest.Build()
    .WithPageSize(10)
    .WithPage(1)
    .Create();
var result = await client.GetTemplatesAsync(request);
result.IfSuccess(response => {
    foreach (var template in response.Embedded.Templates)
        Console.WriteLine($"Template: {template.Name}");
});
See Also

NextWorkflowAsync(Result<NextWorkflowRequest>)

Advances the verification to the next workflow step, if available. Use this to skip the current channel and try the next fallback channel immediately.

Task<Result<Unit>> NextWorkflowAsync(Result<NextWorkflowRequest> request)

Parameters

request Result<NextWorkflowRequest>

The request containing the verification request ID to advance.

Returns

Task<Result<Unit>>

Success if the workflow advanced to the next step, or Failure if no more workflows are available or the request was not found.

Examples

var request = NextWorkflowRequest.Parse(requestId);
var result = await client.NextWorkflowAsync(request);
See Also

StartVerificationAsync(Result<StartVerificationRequest>)

Initiates a verification request to send a PIN code to a user through the specified workflow channels.

Task<Result<StartVerificationResponse>> StartVerificationAsync(Result<StartVerificationRequest> request)

Parameters

request Result<StartVerificationRequest>

The verification request containing the brand, workflows, locale, and other configuration options.

Returns

Task<Result<StartVerificationResponse>>

A StartVerificationResponse containing the request ID for subsequent operations. For Silent Auth workflows, also includes a check URL.

Examples

var request = StartVerificationRequest.Build()
    .WithBrand("MyApp")
    .WithWorkflow(SmsWorkflow.Parse("447700900000"))
    .WithFallbackWorkflow(VoiceWorkflow.Parse("447700900000"))
    .Create();
var result = await client.StartVerificationAsync(request);
result.IfSuccess(response => Console.WriteLine($"Request ID: {response.RequestId}"));
See Also

UpdateTemplateAsync(Result<UpdateTemplateRequest>)

Updates a template's name or default status.

Task<Result<Template>> UpdateTemplateAsync(Result<UpdateTemplateRequest> request)

Parameters

request Result<UpdateTemplateRequest>

The request containing the template ID and the properties to update.

Returns

Task<Result<Template>>

The updated Template, or Failure if the template was not found or the new name conflicts with an existing template.

Examples

var request = UpdateTemplateRequest.Build()
    .WithId(templateId)
    .WithName("new-template-name")
    .SetAsDefaultTemplate()
    .Create();
var result = await client.UpdateTemplateAsync(request);
See Also

UpdateTemplateFragmentAsync(Result<UpdateTemplateFragmentRequest>)

Updates the text content of a template fragment.

Task<Result<TemplateFragment>> UpdateTemplateFragmentAsync(Result<UpdateTemplateFragmentRequest> request)

Parameters

request Result<UpdateTemplateFragmentRequest>

The request containing the template ID, fragment ID, and new text content.

Returns

Task<Result<TemplateFragment>>

The updated TemplateFragment, or Failure if the template or fragment was not found.

Examples

var request = UpdateTemplateFragmentRequest.Build()
    .WithId(templateId)
    .WithFragmentId(fragmentId)
    .WithText("Updated: Your ${brand} verification code is ${code}")
    .Create();
var result = await client.UpdateTemplateFragmentAsync(request);
See Also

VerifyCodeAsync(Result<VerifyCodeRequest>)

Validates a PIN code submitted by the user against an existing verification request.

Task<Result<Unit>> VerifyCodeAsync(Result<VerifyCodeRequest> request)

Parameters

request Result<VerifyCodeRequest>

The request containing the verification request ID and the code to validate.

Returns

Task<Result<Unit>>

Success if the code is correct, or Failure if the code is invalid or the maximum number of attempts (3) has been exceeded.

Examples

var request = VerifyCodeRequest.Build()
    .WithRequestId(requestId)
    .WithCode("1234")
    .Create();
var result = await client.VerifyCodeAsync(request);
result.Match(
    success => Console.WriteLine("Code verified successfully"),
    failure => Console.WriteLine($"Invalid code: {failure.GetFailureMessage()}"));
See Also