vevee.guard.outcome()POST /api/v1/guard/outcomesk_live_
Optional. Tell Vevee how a guarded signup turned out. Outcomes feed per-domain counters that help surface new throwaway domains for review. Requires a secret key (sk_*) and SDK 1.15.0 or later.
Signature
vevee.guard.outcome(p: {
userId: string; // the id you passed to guard.signup()
email: string;
outcome: 'verified' | 'never_verified' | 'abuse';
}): Promise<void>Example
// When the user confirms their email
await vevee.guard.outcome({ userId, email, outcome: 'verified' });
// From a daily job: accounts that never confirmed within 7 days
for (const u of await usersNeverVerified({ olderThanDays: 7 })) {
await vevee.guard.outcome({ userId: u.id, email: u.email, outcome: 'never_verified' });
}
// When you ban an account for farming free credits
await vevee.guard.outcome({ userId, email, outcome: 'abuse' });What it does
- Only the email domain is counted, with the outcome. Nothing about the person is stored.
- A domain is proposed for review only with at least 20 signups, outcomes from at least 3 different apps, and more than 80%
never_verifiedorabuse. Big consumer domains are never proposed, and nothing is added without a human approving it. - Outcome calls do not count against the guard allowance.
- Calls made with a test key (
sk_test_) are accepted and ignored.
Never throws
outcome() resolves to undefined whatever happens; failures go to onGuardError if you set it. Raw HTTP errors: invalid_key (401), requires_secret_key (403), invalid_request (400, for example an unknown outcome value).