Mail — MPP Grade B
On-chain Activity
Compliance Checks
1 issue
- Multiple recipient addresses detected across endpoints (2 unique)
Paid Operations (9)
GET /inboxes dynamic
Free (identity-only) list of every inbox owned by the paying wallet, across all TTL tiers (random + vanity). Sign the $0 challenge to prove wallet ownership; no charge.
- Amount
- map[amount:0.000000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.000000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:0 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:0 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| inboxes | array[object] | - |
POST /inboxes dynamic
Create a disposable email inbox. Returns an address you can publish anywhere and read messages from via this API. TTL tier (1 / 7 / 30 / 90 days, default 30) drives both price ($0.002–$0.020 USDC) and inbox lifetime — R2 lifecycle deletes the inbox and its messages at expiry. Optional `local_part` reserves a globally-unique vanity address (`<local_part>@<EMAIL_DOMAIN>`, 30/90-day TTL, flat $0.10) — call the free `GET /inboxes/available?local_part=…` first to confirm it is free (if taken, create refunds and returns 409). Optional `webhook_url` fires HMAC-signed POSTs on every new inbound message. The returned `webhook_secret` is shown exactly once; store it to verify webhook signatures.
- Amount
- map[amount:0.002000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.002000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:2000 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:2000 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| local_part | string | No | |
| ttl_days | number | No |
enum: 1, 7, 30, 90 |
| webhook_url | string (uri) | No |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| address | string (email) | Disposable email address. Receive mail here. |
| expires_at | string | ISO-8601. R2 lifecycle deletes the inbox and its messages at this time. |
| slug | string | Inbox slug. Use in list/get/send route paths. |
| ttl_days | integer | TTL tier: 1, 7, 30, or 90. |
| webhook_secret | string | Returned only when a webhook is configured. Save it now — used to verify HMAC on incoming webhook POSTs. Never returned again. |
| webhook_url | string (uri) | - |
POST /inboxes/:slug/extend dynamic
Renew an inbox for another full TTL period, keeping the same address and tier. Resets the expiry to now + ttl_days and keeps existing messages alive. Wallet must own the inbox.
- Amount
- map[amount:0.002000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.002000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:2000 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:2000 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Input Schema
{
"anyOf": [
{
"not": {}
},
{
"additionalProperties": false,
"properties": {},
"type": "object"
}
]
}
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| expires_at | string | New expiry after renewal (now + ttl_days). |
| slug | string | - |
| ttl_days | integer | - |
GET /inboxes/:slug/messages dynamic
List the messages received by one of your inboxes. Wallet-scoped: 404 if the inbox is not owned by the paying wallet.
- Amount
- map[amount:0.001000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.001000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:1000 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:1000 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| cursor | [string null] | - |
| messages | array[object] | - |
GET /inboxes/:slug/messages/:id dynamic
Read a single message — parsed headers, text, html, and signed-once URLs to attachment bodies. Wallet-scoped: 404 if the inbox is not owned by the paying wallet.
- Amount
- map[amount:0.001000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.001000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:1000 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:1000 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| attachments | array[object] | - |
| cc | array[string] | - |
| date | [string null] | - |
| from | [string null] | - |
| headers | object | - |
| html | [string null] | - |
| id | string | - |
| message_id | [string null] | - |
| received_at | string | - |
| slug | string | - |
| subject | [string null] | - |
| text | [string null] | - |
| to | array[string] | - |
POST /inboxes/:slug/messages/:id/delete dynamic
Free (identity-only) delete of a single message and its attachments. Sign the $0 challenge to prove wallet ownership; no charge. 404 if the inbox/message is not owned by the caller.
- Amount
- map[amount:0.000000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.000000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:0 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:0 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Input Schema
{
"anyOf": [
{
"not": {}
},
{
"additionalProperties": false,
"properties": {},
"type": "object"
}
]
}
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| deleted | boolean | - |
POST /inboxes/:slug/send dynamic
Send an email from one of your inboxes via Cloudflare Email Service. The `from` is locked to the inbox's own address (`<slug>@<EMAIL_DOMAIN>`); the wallet must own the slug. Upstream cost: $0.00035 per send (5.7× margin at $0.002). Requires the sender domain to be verified in the Cloudflare dashboard.
- Amount
- map[amount:0.002000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.002000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:2000 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:2000 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| bcc | array | No | |
| cc | array | No | |
| headers | object | No | |
| html | string | No | |
| reply_to | string (email) | No | |
| subject | string | Yes | |
| text | string | No | |
| to | Yes |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| accepted_at | string | - |
| message_id | string | - |
GET /inboxes/:slug/status dynamic
Free (identity-only) inbox status: existence, expiry, message count, and whether a webhook is configured. Sign the $0 challenge to prove wallet ownership; no charge. Use this to poll cheaply instead of paying per list.
- Amount
- map[amount:0.000000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.000000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:0 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:0 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| address | string | - |
| exists | boolean | - |
| expires_at | string | - |
| message_count | integer | - |
| slug | string | - |
| ttl_days | integer | - |
| webhook_configured | boolean | - |
POST /inboxes/:slug/update dynamic
Free (identity-only) inbox config update. Set/replace `webhook_url` (a fresh `webhook_secret` is returned once), or pass null to remove it; omit to leave unchanged. Sign the $0 challenge to prove wallet ownership; no charge.
- Amount
- map[amount:0.000000 currency:USD mode:fixed]
- Currency
- -
- Method
- Intent
- -
- 402 Declared
- Yes
price: map[amount:0.000000 currency:USD mode:fixed] protocols: [map[mpp:map[amount:0 currency:0x20c000000000000000000000b9537d11c60e8b50 intent:charge method:tempo network:eip155:4217]] map[mpp:map[amount:0 currency:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v intent:charge method:solana network:solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp]]]
Input Schema
| Field | Type | Required | Description |
|---|---|---|---|
| webhook_url | No |
Response Schema (200)
| Field | Type | Description |
|---|---|---|
| slug | string | - |
| webhook_secret | string | Returned once when a new webhook URL is set. Save it to verify HMAC signatures. |
| webhook_url | - |
Payment Methods
- Methods
- solana, tempo (from challenge)
- Intents
- charge (from challenge)
- Currencies (discovery)
- -
- Currency (challenge)
- USDC
- Multiple Challenges
- Yes
Recipients (Multi-Recipient)
- 0x19491164262c8963b11E1BcB1E4351c101B420FF
- 2SbhPjHwijJExLcjjDuk6hAgxHCbBqs7xu45cXz5DCEb
Per-endpoint breakdown
- GET /inboxes
- 2SbhPjHwijJExLcjjDuk6hAgxHCbBqs7xu45cXz5DCEb
- GET /inboxes/:slug/messages
- 2SbhPjHwijJExLcjjDuk6hAgxHCbBqs7xu45cXz5DCEb
- GET /inboxes/:slug/messages/:id
- 2SbhPjHwijJExLcjjDuk6hAgxHCbBqs7xu45cXz5DCEb
- POST /inboxes
- 2SbhPjHwijJExLcjjDuk6hAgxHCbBqs7xu45cXz5DCEb
- POST /inboxes/:slug/extend
- 2SbhPjHwijJExLcjjDuk6hAgxHCbBqs7xu45cXz5DCEb
- POST /inboxes/:slug/messages/:id/delete
- 2SbhPjHwijJExLcjjDuk6hAgxHCbBqs7xu45cXz5DCEb
Security
- TLS Version
- TLSv1.3
- Challenge ID Unique
- Yes
- Challenge ID Length
- 43
- Digest Binding
- -
Uptime
- Discovery
- Reachable (302ms)
- Challenge
- Reachable (258ms)
- Last Checked
Schema Completeness
- Paid Operations
- 9
- With Input Schema
- 5
- With Description
- 9
4 missing schema
- GET /inboxes
- GET /inboxes/:slug/messages
- GET /inboxes/:slug/messages/:id
- GET /inboxes/:slug/status
Documentation
- Homepage
- -
- API Reference
- -
- llms.txt
- -
Discovery
- OpenAPI URL
- https://mail.payweave.services/openapi.json
- OpenAPI Version
- 3.1.0
- Service Version
- 1.0.0
- Document Size
- 16607 bytes
- Document Hash
- f93a97df043b2757dd16050a7cf18d4546a96467bd7851111b19c600864665c3
Version History (6 snapshots)
- document hash changed (no semantic differences detected)
Scan snapshots
| Date | Grade | Score | Response | Status |
|---|---|---|---|---|
| 2026-06-15 | B | 83% | 488ms | Up |
| 2026-06-16 | B | 83% | 263ms | Up |
| 2026-06-17 | B | 83% | 526ms | Up |
| 2026-06-18 | B | 83% | 449ms | Up |
| 2026-06-19 | B | 83% | 222ms | Up |
| 2026-06-20 | B | 83% | 248ms | Up |