A deposit-priced channel for first contact.
Knock prices unsolicited first contact. A sender — human or autonomous agent — posts a refundable deposit to enter a recipient's queue. Reviewed messages release the deposit; abusive or ignored ones do not.
Last updated July 2026
Core concepts
- Handle — a recipient's public identifier. Their attention gate lives at
/u/<handle>. - Pricing rule — a per-category deposit amount (for example sales, recruiting, press, general) set by the recipient.
- Allowlist / blocklist — senders who skip the deposit entirely, and senders who are rejected outright.
- Deposit hold — an authorization against the sender's payment method. Funds are reserved, not charged.
Message lifecycle
Every inbound message moves through the same four states.
- Awaiting deposit — the message exists but no hold has been confirmed. It is not delivered to the queue.
- Pending — the hold is confirmed and the message sits in the recipient's priority queue, ranked by deposit size.
- Released — the recipient replies and releases. The hold is cancelled (or refunded if already captured) and the sender pays nothing.
- Claimed — the recipient claims the deposit as compensation for the interruption. The hold is captured.
Holds that are neither released nor claimed expire on their own, typically within seven days. Expiry returns the money to the sender: refund is the default outcome, so ignoring a queue can never earn a recipient anything.
Contact channels
- Public gate — a hosted page per handle where a person writes a message, picks a category, and authorizes the deposit by card.
- Inbound email — mail sent to a recipient's alias is classified, checked against allow and block rules, priced, and queued.
- Agent API — machine senders negotiate payment over x402 and post directly to the contact endpoint.
Agent API
Two public endpoints and one discovery document. Card settlement is live today; USDC over x402 is in beta, and the challenge shape already carries it.
POST /api/public/contact/{handle}
Open a contact attempt. Unknown senders receive 402 Payment Required — that response is the challenge, so no challenge email is sent for API contacts. Allowlisted senders get 200 { "delivered": true }, blocked senders 403, unknown recipients 404, and callers over the rate limit 429.
POST /api/public/contact/thomas
Content-Type: application/json
{
"subject": "Partnership enquiry",
"body": "…",
"from": {
"name": "Ada",
"email": "agent@example.com",
"agent": { "name": "scout", "operator": "Example Inc", "url": "https://example.com" }
}
}
← 402 Payment Required
{
"protocol": "attention/0.1",
"challenge_id": "…",
"recipient": "thomas@knock.email",
"amount": 2,
"currency": "USD",
"refund_policy": {
"unopened_auto_refund_days": 14,
"reply_auto_refund": false,
"review_required_to_retain": true
},
"guarantees": ["priority_placement", "settlement_status"],
"non_guarantees": ["reply", "outcome", "response_time"],
"expires_at": "…",
"payment_options": {
"hosted_checkout": "https://checkout.stripe.com/…",
"x402": { "status": "beta", "note": "USDC settlement over x402 launching in beta" }
},
"status_url": "https://knock.email/api/public/challenge/…"
}- Unpaid API challenges expire after 72 hours, not 14 days.
- Limits: 5 unpaid attempts per sender per recipient per day, 30 contacts per IP per hour.
- Identical subject + body from the same sender to the same recipient on the same day returns the existing challenge rather than a new one.
GET /api/public/challenge/{id}
Poll settlement state. Public and unauthenticated — the id is an unguessable uuid — and it never returns message content, sender, or recipient internals.
{
"challenge_id": "…",
"state": "awaiting_payment | in_review | refunded | retained | expired",
"paid": false,
"expires_at": "…"
}Attention Manifest
Every handle publishes its terms so an agent can price the contact before spending anything. Served from /u/{handle}/manifest and /.well-known/attention.json?handle={handle}; the bare /.well-known/attention.json returns a directory document. Cached five minutes.
{
"version": "0.1",
"recipient": { "address": "thomas@knock.email", "display_name": "Thomas" },
"pricing": [{ "category": "default", "amount": 2, "currency": "USD" }],
"refund_policy": { "unopened_auto_refund_days": 14, "reply_auto_refund": false, "review_required_to_retain": true },
"guarantees": ["priority_placement", "settlement_status"],
"non_guarantees": ["reply", "outcome", "response_time"],
"payment": {
"contact_endpoint": "https://knock.email/api/public/contact/thomas",
"x402": { "status": "beta" }
}
}Payment-free classes
Certain message classes are designed to reach a recipient without a deposit — legal notice and genuine emergency contact among them. Allowlisted senders are also exempt. The protocol prices unsolicited commercial attention, not access itself.
Read further
The whitepaper covers the economic model and threat analysis in full.