---
title: "Confirm the authorizer's code"
method: POST
path: "/v1/branded-calling/identities/{id}/verify-email/confirm"
tags: ["Branded Calling"]
---

# Confirm the authorizer's code

`POST /v1/branded-calling/identities/{id}/verify-email/confirm`

The last customer step. On success the stored references are filed and the
identity is submitted to carrier vetting in the same call (`in_review`). If a
later step fails the identity stays `pending_email_verification` with the email
already verified; calling again resumes from that step.

## Path parameters

- `id` string, required

## Request body

- object
  - `code` string, required

## Response `200`

The identity, now in carrier vetting.

- BrandedCallingIdentity
  - `id` string
  - `enterpriseId` string
  - `displayName` string
  - `callReasons` string[]
  - `callReasonsPreApproved` boolean — Every call reason matches the carrier catalogue (GET /v1/branded-calling/call-reasons); anything else is vetted by hand and takes longer.
  - `logoUrl` string, nullable — The image you sent. Zernio hosts the 256x256 BMP the carriers require.
  - `authorizer` object
    - `name` string
    - `email` string, email
  - `references` BrandedCallingReferences
    - `business` BrandedCallingReference[], required
      - `fullName` string, required
      - `jobTitle` string
      - `organization` string
      - `relationshipToRegistrant` string
      - `phoneNumber` string, required — E.164 with a leading +.
      - `email` string, email, required
      - `timezone` string, required — IANA timezone id, e.g. America/New_York.
    - `financial` BrandedCallingReference, required — A person the carrier vetting team phones to confirm the business. Business references are senior contacts at a vendor, partner or client; the financial reference is a CPA or a bank contact. Calls are placed in the reference's local 8am-9pm window.
      - `fullName` string, required
      - `jobTitle` string
      - `organization` string
      - `relationshipToRegistrant` string
      - `phoneNumber` string, required — E.164 with a leading +.
      - `email` string, email, required
      - `timezone` string, required — IANA timezone id, e.g. America/New_York.
  - `status` 'requested' | 'changes_requested' | 'rejected' | 'pending_email_verification' | 'in_review' | 'verified' | 'suspended' | 'expired' | 'permanently_rejected' — requested = in Zernio review; changes_requested = answer the review (PATCH); pending_email_verification = confirm the code emailed to the authorizer; in_review = with the carrier vetting team; verified = attach numbers; rejected = fix and PATCH to resubmit; suspended = an infringement claim is open; expired = the yearly verification lapsed; permanently_rejected = terminal.
  - `rejectionReasons` object[]
    - `code` string
    - `title` string
    - `detail` string
    - `message` string, nullable — Free-text note from the vetting team, on the first entry only.
  - `reviewNote` string, nullable — The open change request, as text.
  - `reviewRequest` object, nullable — The open change request as points; answer each by id in reviewAnswers on PATCH.
    - `id` string
    - `intro` string
    - `points` object[]
      - `id` string
      - `title` string
      - `detail` string
      - `answer` 'text' | 'link' | 'file' | 'link_or_file'
  - `emailVerifiedAt` string, date-time, nullable
  - `submittedAt` string, date-time, nullable
  - `verifiedAt` string, date-time, nullable
  - `expiringAt` string, date-time, nullable — Verification lasts one year; Zernio resubmits 30 days before this date.
  - `numbers` BrandedCallingIdentityNumber[]
    - `phoneNumberId` string
    - `phoneNumber` string
    - `status` 'submitted' | 'in_review' | 'verified' | 'unsuccessful' | 'suspended' | 'expired' | 'permanently_rejected' — verified = the identity shows on calls from this number. permanently_rejected cannot be attached again anywhere.
    - `rejectionReason` object, nullable
      - `code` string
      - `title` string
      - `detail` string
      - `message` string, nullable
    - `verifiedAt` string, date-time, nullable
    - `addedAt` string, date-time, nullable
  - `createdAt` string, date-time, nullable
  - `updatedAt` string, date-time, nullable

## Other responses

- `400` — The code is wrong or expired (param code), or the body is invalid.
- `401` — Unauthorized
- `404` — Identity not found
- `409` — The identity is not waiting for a code (code invalid_resource_state).

## Changes

- **2026-09-29** `698a0d89ab62` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/branded-calling/identities/:id/verify-email/confirm/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/f92af0e169c1?raw)
