Skip to main content

Resend an App Registration Link

Endpoint

POST https://api.verifik.co/v2/app-registrations/{id}/resend-link

Mint a new hosted SmartEnroll continuation URL for an existing, incomplete App Registration. Redirect the end user to data.link so they resume from the current step instead of starting a new sign-up.

This is the partner API behind the Verifik admin Resend link action (copy link or send email). Product walkthrough: Resume an Incomplete Enrollment.

Authenticate with the project owner's client API token. Do not use the enrollee session JWT from create or from a previous link.

Headers

NameValue
Content-Typeapplication/json
AuthorizationBearer <token>

Params

NameTypeRequiredDescription
idstringYesApp Registration _id to resume. Path parameter.
sendEmailbooleanNoIf true (or "true"), email the continuation link to the enrollee. If omitted or false, only return token and link.
recipientEmailstringNoOverride the email recipient. Super-admin only. Client tokens must omit this field; the enrollee email on the registration is used.

The continuation JWT expires in 30 minutes. expiresInMinutes is not a client-facing parameter on this endpoint.

Request

const fetch = require("node-fetch");

async function run() {
const appRegistrationId = "6a98727a47eb5690a7f0b68f";
const res = await fetch(`https://api.verifik.co/v2/app-registrations/${appRegistrationId}/resend-link`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.VERIFIK_TOKEN}`,
},
body: JSON.stringify({
sendEmail: false,
}),
});
console.log(await res.json());
}

run();

Response

{
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"link": "https://access.verifik.co/sign-up/6266193db77ccc8111730c90?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"firstName": "Robert",
"lastName": "Sánchez",
"fullName": "Robert Sánchez",
"email": "robert_196@verifik.co",
"step": "signUpForm",
"steps": {
"signUpForm": "mandatory",
"basicInformation": "skip",
"document": "optional",
"liveness": "optional",
"form": "skip"
},
"appRegistrationId": "6a98727a47eb5690a7f0b68f",
"status": "ONGOING",
"expiresAt": "2026-09-09 22:14:14",
"accessType": "app_registration_initiated",
"issuedAt": 1788990254,
"emailSent": null
}
}

When sendEmail is true and the enrollee has an email, emailSent looks like:

{
"sent": true,
"email": "robert_196@verifik.co",
"mailgunId": "<message-id>"
}

Notes

  • Hosted URL: data.link is {accessAppUrl}/sign-up/{projectId}?token={token}. Production host is https://access.verifik.co.
  • Resume, do not recreate: Do not call POST /v2/app-registrations again with the same email or phone. That returns 409:email_is_registered_already or 409:phone_is_registered_already.
  • Create token window: The JWT from create is valid for 120 minutes. After it expires, mint a new link here instead of reusing the original URL.
  • Not a resume URL: GET /v2/app-registrations/{id} and PUT /{id}/sync do not generate a hosted continuation URL. smartLink on the App Registration object is the OneTimeLink product (link.verifik.co), not this flow.
  • Authorization: Enrollee session tokens cannot call this endpoint. Use the client API token that owns the project.