Account profile
GET /recipient/account returns the recipient's profile, the masked NIN, legal name, email, verification flags, and the assurance level they were onboarded at.
GET /recipient/account returns the signed-in recipient's profile: who they
are, the contact details on file, and the identity-assurance tier they hold.
The inbox apps use it to render the account screen and to decide what the
recipient can do.
The call
curl https://api.keepable.co/recipient/account \
-H "Authorization: Bearer $RECIPIENT_TOKEN" \
-H "Keepable-Version: 2026-05-24"const res = await fetch("https://api.keepable.co/recipient/account", {
headers: {
Authorization: `Bearer ${token}`,
"Keepable-Version": "2026-05-24",
},
});
const profile = await res.json();{
"nin": "*******8901",
"legal_name": "Ada Eze",
"email": "ada@example.ng",
"phone": "+2348012345678",
"email_verified": true,
"phone_verified": false,
"assurance_level": "id_verified"
}The fields
| Field | Always present | Meaning |
|---|---|---|
nin | yes | The recipient's national identification number, already masked by the backend (for example *******8901). The raw NIN is never stored or returned. |
legal_name | no | The recipient's legal name from the consent-scoped profile store. Omitted when no name is on file. |
email | no | The email currently on the profile. May be present but unverified (see email_verified). |
phone | no | The phone number on file, if any. |
email_verified | yes | True only when the profile has a recorded email-verification timestamp. It is derived, never assumed: a brand-new profile reads false until the recipient completes the verification flow. |
phone_verified | yes | Whether the phone number has been verified. |
assurance_level | no | The identity-assurance tier the recipient was onboarded at, one of email or id_verified. See Assurance levels. Omitted when no profile is on file. |
email_verified and the presence of email are independent. A recipient can
have an email on file that they have not yet verified. Treat email_verified
as the source of truth for whether the address may receive notifications or
drive account recovery.
A profile with no row yet
A recipient who has just completed identity onboarding may not have a profile
row yet. The surface degrades gracefully rather than failing: it returns the
masked nin it can read from the session, with email_verified set to false
and legal_name / assurance_level omitted. The apps render an account screen
from that minimal view and prompt the recipient to add and verify an email.
Recipient surface
The recipient-facing surface that powers the Keepable inbox apps. Covers the account profile, email capture and verification, the assurance-level model, and delivery notifications including held-pending releases.
Email verification
Capture a recipient email and prove control of it with a one-time code. PUT /recipient/account/email issues a code, POST /recipient/account/email/verify redeems it, both idempotent.