Developers
An address is all you need
One authenticated call turns any email into an account you can pay. No onboarding flow for the recipient, no wallet connect, no support thread asking for a 0x string.
typescript
const res = await fetch(
"https://mailey.app/api/v1/resolve?email=" +
encodeURIComponent("cfo@acme.com"),
{ headers: { Authorization: `Bearer ${process.env.MAILEY_KEY}` } },
);
const { data } = await res.json();
// data.address → 0x7c3f…9a12 (pay this)
// data.claimed → false (owner hasn't verified yet)
// data.commitment → 0x9ab3… (verify the pairing yourself)Endpoints
- GET/api/v1/resolveInbox → account, commitment, lifecycle state
- POST/api/auth/startIssue a one-time code for sign-in, claim or export
- POST/api/auth/verifyExchange a code for a session
- POST/api/sendTransfer to an inbox or a 0x address
- POST/api/requestsEmail a payment request with a prefilled link
- POST/api/exportOne-shot key release with a v3 keystore
Patterns
What teams build with it
Payroll and contractor payouts
You already have the contractor's email. Resolve it, pay it, and let them claim the account when they are ready.
Refunds without a wallet
Refund a customer who paid by card into an account only they can claim. No support ticket asking for an address.
Affiliate and creator payouts
Pay thousands of inboxes in a batch. Unclaimed accounts wait indefinitely — nothing expires, nothing bounces.
Invoicing
Attach a payment link to an invoice. The payer settles from their own inbox account or any wallet.