Documentation
Sign inGet started

Create the next verification channel attempt

POST
/v1/verify/verifications/next-channel
const verification = await bird.verify.verifications.nextChannel({
  to: { phone_number: "+15551234567" },
});
console.log(verification.last_channel);
Response200
{
  "id": "vrf_01krdgeqcxet5s7t44vh8rt9mg",
  "status": "pending",
  "reason": "attempts_exhausted",
  "to": {
    "email": "user@example.com",
    "phone_number": "+15551234567"
  },
  "channels": [
    {
      "channel": "email"
    }
  ],
  "last_channel": "email",
  "created_at": "2026-05-20T09:14:52Z",
  "updated_at": "2026-05-25T16:42:01Z"
}
Advances an in-progress verification to the next channel in its plan and sends a fresh passcode there. Identify the verification by the same to recipient used to create it; no verification ID is required.
The send bypasses the resend cooldown, and passcodes sent earlier remain valid. The response sets last_channel to the most recent completed send. Concurrent requests each advance the plan by at most one channel and return committed state.
A missing in-progress verification returns 404. A plan with no further channel returns 422 NoNextChannel; create the verification again to resend on the current channel. If every remaining channel fails, the operation returns 422 NoAvailableChannel. Requests that exceed the send rate limit return 429.
Request Payload
to
object
required
The recipient to verify. Provide an email, a phone_number, or both; at least one is required. The addresses also identify the verification: a check must supply exactly the set used on the create call, so a verification created with both addresses is not found by either one alone.
Show child parameters
to.email
string
The recipient's email address. Case does not matter; the address is lowercased before use.
to.phone_number
string
The recipient's phone number in E.164 format, with the leading + and country code (for example +15551234567). A number in any other format is rejected as an invalid recipient (422).
Response Payload
id
string
required
status
string
required
The verification's current state:
  • pending: Awaiting a correct passcode.
  • verified: A correct passcode was submitted.
  • failed: The verification cannot be completed. Either too many incorrect passcodes were submitted, or no planned channel could deliver one. Read reason to tell those apart.
  • expired: The validity window elapsed before a correct passcode.
  • canceled: The verification was canceled before completion.
  • blocked: A fraud or abuse control stopped the verification.
Possible values: pending, verified, failed, expired, canceled, blocked
reason
nullable string
Why the verification reached its final state, or null while pending and once verified. See the enum for the values it can take.
to
object
required
The recipient to verify. Provide an email, a phone_number, or both; at least one is required. The addresses also identify the verification: a check must supply exactly the set used on the create call, so a verification created with both addresses is not found by either one alone.
Show child attributes
to.email
string
The recipient's email address. Case does not matter; the address is lowercased before use.
to.phone_number
string
The recipient's phone number in E.164 format, with the leading + and country code (for example +15551234567). A number in any other format is rejected as an invalid recipient (422).
channels
array of object
required
The channels this verification uses to deliver the passcode, in attempt order: the first entry is tried first and later entries are fallbacks. An email recipient is verified over email; a phone recipient is verified over the phone channels enabled for its destination country, in the order that country's configuration sets.
Show child attributes
channels.channel
string
required
The channel a passcode is delivered over. Open enum: new channels may be added over time, so treat any unrecognized value as a future channel rather than an error.
Possible values (may grow over time): email, sms, whatsapp, telegram
last_channel
nullable string
The channel the most recent passcode was sent on, or null before the first send. Open enum; new channels may be added over time, so treat any unrecognized value as a future channel rather than an error.
Possible values (may grow over time): email, sms, whatsapp, telegram
metadata
object
The key/value pairs attached when the verification was created.
expires_at
string
required
When the verification expires if no correct passcode is submitted first. After this time its status reports expired.
verified_at
nullable string
When the verification was completed, or null if it is not yet verified.
created_at
string
required
updated_at
string
required