---
title: "Resume email loop"
method: POST
path: "/verification/{verificationId}/step/emailLoop/resume"
tags: ["verification"]
---

# Resume email loop

`POST /verification/{verificationId}/step/emailLoop/resume`

Resumes a paused email loop. If provided, the given email address will be used for the Email Loop. Otherwise, the one already submitted for the Verification will be used. In either case, the domain of the email address will be validated prior to sending the email message. If the domain is valid for the organization associated with the request, then the user will have been sent an email message containing a link that will complete the email loop, unless the program is configured to bypass sending the email. In that case, no email message was sent, and the email loop token is included in the response.

## Path parameters

- `verificationId` string, required

## Request body

- ResumeEmailLoopRequest — The request body to submit to the email loop resume call. The optional emailAddress property can be used to override the email address used for the email loop. The domain of the email address will be validated prior to sending the email message.
  - `emailAddress` string — The email address of the person being verified

## Response `200`

The result of resuming the email loop

- ResumeEmailLoopResponse — The response returned when a call to resume a paused email loop is successful. The token property will be null unless the program is configured to bypass sending email messages for email loop.
  - `verificationId` string, required — The unique ID for the [VerificationRequest](#!/components/schemas/VerificationRequest) associated with this response
  - `currentStep` 'collectStudentPersonalInfo' | 'collectActiveMilitaryPersonalInfo' | 'collectInactiveMilitaryPersonalInfo' | 'collectTeacherPersonalInfo' | 'collectSeniorPersonalInfo' | 'collectAgePersonalInfo' | 'collectFirstResponderPersonalInfo' | 'collectMedicalProfessionalPersonalInfo' | 'collectEmployeePersonalInfo' | 'collectMemberPersonalInfo' | 'collectLicensedProfessionalPersonalInfo' | 'collectMoverPersonalInfo' | 'collectLowIncomePersonalInfo' | 'collectDriverLicensePersonalInfo' | 'collectGeneralIdentityPersonalInfo' | 'collectHybridIdentityPersonalInfo' | 'collectPersonalInfo' | 'collectMilitaryStatus' | 'collectMarketplaceToken' | 'collectSocialSecurityNumber' | 'collectIdentifier' | 'completeAuthentication' | 'docUpload' | 'sso' | 'success' | 'error' | 'pending' | 'emailLoop' | 'idCheckLoop' | 'smsLoop' | 'thirdPartyLoop' | 'consolation' | 'override', required — The step that the verification is at. Each step tells you what to do next. One value is deprecated: `collectHybridIdentityPersonalInfo`. The API can still return it, so your client must accept it. The endpoint that submits this step is not part of the public API. Do not build a new integration on it.
  - `errorIds` ErrorId[] — The list of errors that occurred, if any
  - `segment` 'student' | 'teacher' | 'military' | 'senior' | 'age' | 'firstResponder' | 'medical' | 'employment' | 'marketplace' | 'member' | 'licensedProfessional' | 'recentMover' | 'other' | 'lowIncome' | 'identity', nullable — The market segment for the verification. The value can be `null` if the server did not determine the segment. For example, the server sends an error before a verification exists.
  - `subSegment` 'activeDuty' | 'veteran' | 'retiree' | 'reservist' | 'militaryFamily' | 'goldStarFamily' | 'police' | 'fireFighter' | 'searchAndRescue' | 'emt' | 'employee' | 'homeBuyer' | 'otherMover' | 'facultyHighSchool' | 'facultyUniversity' | 'facultyPostSecondary' | 'facultyK12' | 'fullAndPartTimeUniversity' | 'collegeBound' | 'highSchool' | 'graduate' | 'postSecondary' | 'nurse' | 'doctor' | 'otherHealthWorker' | 'dentist' | 'pharmacist' | 'generalContractor' | 'snapBenefits' | 'otherGovernmentAssistance' | 'communityEligibilityProvision' | 'architect' | 'interiorDesigner' | 'librarian' | 'childCareWorker' | 'veterinarian' | 'licensedRealEstateAgent' | 'licensedCosmetologist' | 'generalIdentity' | 'driverLicense' | 'hybridIdentity' | 'k12' | 'nutritionProfessional', nullable — The subsegment being verified. May be `null` when the verification has no applicable subsegment.
  - `locale` string — The locale chosen by the user
  - `country` string, nullable — The ISO 3166-1 alpha-2 country code of the person being verified. In a response, the value can be `null` if the verification has no country.
  - `created` integer
  - `updated` integer
  - `currentState` 'collectOrganizationEmail' | 'pending'
  - `submissionUrl` string, required — The url to use for submitting the email loop token
  - `cancelUrl` string — The url to send a DELETE request to in order to cancel an ongoing email loop verification and move to the the docUpload step. Program must have an "Email Loop with Domain Validation" verification type to use this feature.
  - `canResendEmailLoop` boolean
  - `token` string — The email loop token for the requested verification

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Verification not found
- `429` — Too many requests. A `429` can mean one of two things — inspect the response body's `errorIds` before retrying: - A transient rate limit applied at the platform edge. If a `Retry-After` header is present, wait that many seconds (using exponential backoff) and retry. - A program/consumer limit such as `verificationLimitExceeded`, `reverificationDailyLimitExceeded`, or `docReviewLimitExceeded` — the consumer has exhausted an allowance defined by the program's limiting policy. This is a permanent rejection (`currentStep: error`, no `Retry-After`); do not retry.
- `500` — Internal server error.
- `503` — Service temporarily unavailable. The request can be safely retried after the interval given in the `Retry-After` header.

---

[API](https://skmtc.dev/sheerid/apis/sheerid-api.md) · [All operations](https://skmtc.dev/sheerid/apis/sheerid-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sheerid/sheerid-api/revisions/dc7f4e84f543/schema)
