Verfi — Consent Verification for Lead Gen
Verfi captures verifiable proof of consumer consent. Publishers add a script tag to capture sessions; buyers verify consent via API before contacting leads.
When to Use This Skill
- - Adding consent capture to a web form
- Checking if a lead has valid TCPA consent
- Claiming sessions for long-term retention
- Pulling machine-readable proof for disputes
- Integrating Verfi into an existing lead gen pipeline
Quick Start
1. Capture Consent (Publisher)
Add the SDK to any page with a form:
CODEBLOCK0
The SDK auto-detects forms, records interactions (mouse, clicks, keystrokes, scroll), and generates a Verfi ID (VF-xxxxxxxx) on form submission.
2. Verify Consent (Buyer)
CODEBLOCK1
Returns consent status, interaction metrics, form data, device info, and tamper verification. All PII is SHA-256 hashed.
3. Claim Session
CODEBLOCK2
Starts 3-year retention. Unclaimed sessions expire in 72 hours.
Authentication
Two key types:
| Key | Format | Use |
|---|
| Public | INLINECODE1 | SDK script tag (client-side) |
| Secret |
sk_... | API calls (server-side, Bearer token) |
Secret keys have scopes: sessions:claim, sessions:unclaim, sessions:search, sessions:proof, sessions:expiration.
Generate keys in the Verfi dashboard under Integration > API Keys.
API Endpoints
Base URL: INLINECODE8
All endpoints require Authorization: Bearer sk_... header.
| Method | Path | Scope | Description |
|---|
| GET | INLINECODE10 | — | List claimed sessions (paginated) |
| GET |
/sessions/{verfiID} |
sessions:search | Look up session, verify PII hashes |
| GET |
/sessions/{verfiID}/proof |
sessions:proof | Machine-readable proof data |
| POST |
/sessions/{verfiID}/claim |
sessions:claim | Claim session (3-year retention) |
| POST |
/sessions/{verfiID}/unclaim |
sessions:unclaim | Release session (30-day retention) |
| PUT |
/sessions/{verfiID}/expiration |
sessions:expiration | Update expiration date |
Full API reference: see references/api-reference.md
Common Workflows
Publisher: Add Consent Capture to a Form
- 1. Get a public API key from the Verfi dashboard
- Add the SDK script tag to the page (before
</body>) - The SDK auto-records sessions — no form modifications needed
- Each form submission creates a session with a unique Verfi ID
- Pass the Verfi ID alongside the lead data to buyers
Buyer: Verify and Claim a Lead
- 1. Receive lead with Verfi ID from publisher
- Call
GET /sessions/{verfiID}/proof to check consent - Verify
consent.given === true and INLINECODE24 - Optionally verify PII binding with INLINECODE25
- Call
POST /sessions/{verfiID}/claim to start retention - Contact the consumer with documented consent proof
Dispute: Pull Proof for a Challenged Lead
- 1. Look up the Verfi ID associated with the disputed lead
- Call
GET /sessions/{verfiID}/proof for machine-readable proof - Proof includes: consent language, interaction timeline, form data, device info, tamper detection
- Share the
proof_url for a human-readable proof page - Integrity hash verifies the proof hasn't been tampered with
Audit: Bulk Verify Consent Across a Lead List
- 1. Call
GET /sessions to list all claimed sessions - For each session, call INLINECODE30
- Flag sessions where
consent.given === false or INLINECODE32 - Unclaim any sessions that don't meet compliance requirements
MCP Server
For MCP-compatible agents (Claude Desktop, Cursor, Windsurf):
CODEBLOCK3
OpenAPI Spec
Auto-discoverable at: INLINECODE33
Compatible with OpenAI GPT Actions, LangChain, CrewAI, and any framework that generates tools from OpenAPI specs.
Troubleshooting
| Problem | Fix |
|---|
| SDK not recording sessions | Check public key is correct, script loads without errors |
| 401 Unauthorized |
Verify secret key, check
Authorization: Bearer sk_... format |
| 403 Insufficient permissions | API key missing required scope — update in dashboard |
| Session not claimable (409) | Session already claimed or status isn't "recorded" |
| Proof shows
consent.given: false | Form may not have consent language/checkbox detected by SDK |
Verfi — 潜在客户生成的同意验证
Verfi捕获消费者同意的可验证证明。发布商添加脚本标签来捕获会话;买家在联系潜在客户前通过API验证同意。
何时使用此技能
- - 在网页表单中添加同意捕获
- 检查潜在客户是否具有有效的TCPA同意
- 声明会话以进行长期保留
- 提取机器可读的证明以处理争议
- 将Verfi集成到现有的潜在客户生成流程中
快速入门
1. 捕获同意(发布商)
将SDK添加到任何包含表单的页面:
html
SDK自动检测表单,记录交互(鼠标、点击、按键、滚动),并在表单提交时生成Verfi ID(VF-xxxxxxxx)。
2. 验证同意(买家)
bash
curl -H Authorization: Bearer sk_你的密钥 \
https://api.verfi.io/tenant/v1/sessions/VF-a1b2c3d4/proof
返回同意状态、交互指标、表单数据、设备信息和防篡改验证。所有个人身份信息均经过SHA-256哈希处理。
3. 声明会话
bash
curl -X POST -H Authorization: Bearer sk_你的密钥 \
https://api.verfi.io/tenant/v1/sessions/VF-a1b2c3d4/claim
开始3年保留期。未声明的会话将在72小时后过期。
身份验证
两种密钥类型:
| 密钥 | 格式 | 用途 |
|---|
| 公钥 | pk... | SDK脚本标签(客户端) |
| 密钥 |
sk... | API调用(服务端,Bearer令牌) |
密钥具有作用域:sessions:claim、sessions:unclaim、sessions:search、sessions:proof、sessions:expiration。
在Verfi控制台的集成 > API密钥下生成密钥。
API端点
基础URL:https://api.verfi.io/tenant/v1
所有端点都需要Authorization: Bearer sk_...标头。
| 方法 | 路径 | 作用域 | 描述 |
|---|
| GET | /sessions | — | 列出已声明的会话(分页) |
| GET |
/sessions/{verfiID} | sessions:search | 查找会话,验证个人身份信息哈希 |
| GET | /sessions/{verfiID}/proof | sessions:proof | 机器可读的证明数据 |
| POST | /sessions/{verfiID}/claim | sessions:claim | 声明会话(3年保留期) |
| POST | /sessions/{verfiID}/unclaim | sessions:unclaim | 释放会话(30天保留期) |
| PUT | /sessions/{verfiID}/expiration | sessions:expiration | 更新过期日期 |
完整API参考:参见references/api-reference.md
常见工作流程
发布商:在表单中添加同意捕获
- 1. 从Verfi控制台获取公钥
- 将SDK脚本标签添加到页面(在