Reissue a wallet signer's enrollment invite
Returns a working verification link + expiry for a signer still completing enrollment — recovery for a lost wallet_signer.invited delivery. Idempotent: a live pending invite is returned unchanged; otherwise a fresh link is minted (carrying the signer’s email so the verify portal is not blocked) and a wallet_signer.invited webhook fires. Returns the signer’s own enrollment link (urlAudience: "signer"). 409 SIGNER_PENDING_ADMIN_APPROVAL when the signer has already enrolled a passkey on a live roster and is parked for an admin co-stamp — the blocker is an admin approval, so use reissue-admin-approval to recover the admin link instead. 409 SIGNER_NOT_ENROLLABLE if the signer is already active / being removed / errored; 404 if the signer is not on this customer.
Authorizations
Headers
Caller-generated unique key that lets the server safely replay this request. The original response is returned for 30 days on any retry with the same key from the same organization. Required on every state-changing money-moving or resource-creating POST.
1 - 128^[A-Za-z0-9_.:-]{1,128}$"01J7B3K2X9M8N5P6Q7R8S9T0V1"
Path Parameters
"cus_1A2b3C4d5E6f7G8h9I0jKl"
"wsg_1A2b3C4d5E6f7G8h9I0jKl"
Response
Unique wallet signer identifier
^wsg_[0-9A-Za-z]{22}$Signer's email address
"signer@example.com"
Signer's display name
"Jane Doe"
admin = root-quorum member + signing-quorum member; signer = signing-quorum only
admin, signer How this signer stamps requests
passkey, api_key Number of passkeys enrolled for this signer
0 <= x <= 90071992547409910
Current signer status
pending_activation, activating, active, pending_removal, removed, error Timestamp when the signer was created
"2026-01-15T09:30:00.000Z"
Timestamp when the signer was last updated
"2026-01-15T09:30:00.000Z"
Synchronous URL for this add, or null when none applies. Read urlAudience to know who it is for before delivering it — a passkey add returns the signer's enrollment link, an api_key add pending approval returns a customer admin's co-stamp link. On a live roster a "signer" link is the FIRST of two links, not full self-service: after the signer enrolls their passkey the add parks a roster-add ceremony for an admin co-stamp, whose link arrives only on the wallet_ceremony.awaiting_admin_approval webhook (carrying the ceremony's ceremonyId).
"https://app.conduit.financial/verify/mtQzSU2hdy0DuZ6za2IHIoVDgXzshrFtN38kMULRDFw"
Audience of verificationUrl: signer = the new signer's credential-enrollment link (deliver to the signer) — on a live roster this is only the first of two links, the second being an admin co-stamp delivered on the wallet_ceremony.awaiting_admin_approval webhook; admin = a customer admin's approval link (deliver to an admin; also delivered via the wallet_ceremony.awaiting_admin_approval webhook); null when there is no URL.
signer, admin When the reissued verification link expires (hard TTL).
"2026-01-15T09:30:00.000Z"