/v1/meCurrent principal
The account, actor (member or API key), plan, subscription status, resolved entitlements, and the acting member profile (null for an API key).
Responses
200The resolved principal and profileaccountIdstring requiredThe account this credential acts on. A credential is bound to exactly one account; you cannot choose or switch it on a request.
actorone of requiredWho is acting: a person or a key. Both are first-class and follow the same usage model.
planstring requiredThe EFFECTIVE plan. During a trial this is the trialled plan, not a separate "trial" plan, so everything you may do flows from this field.
planStatusstring requiredThe subscription status behind that plan, mirroring Stripe. Metadata for display; capability comes from `plan`.
trialEndsAtstringWhen a trial ends, as an ISO 8601 instant. Absent when not trialling.
entitlementsarray of string requiredExactly what this credential may do, as `resource:verb` strings. This is the only thing the API screens: a missing permission is a 403 when your role lacks it and a 402 when your plan does not include it.
accountTypestring requiredWhether this is a customer account or an internal Vamo one.
userTypestring | null requiredWhether the acting person is a customer or Vamo staff. Null when the caller is an API key.
userProfile requiredThe signed-in person. Null when the caller is an API key.
idstring requiredThe user id.
emailstring requiredThe signed-in user’s email address.
namestring | null requiredTheir full display name. Null when not set.
firstNamestring | null requiredGiven name. Null when not set.
lastNamestring | null requiredFamily name. Null when not set.
imagestring | null requiredAvatar image URL. Null when not set.
401No or invalid credentialcodestring requiredStable machine-readable error code. Branch on this, never on the numeric status.
bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errormessagestring requiredHuman-readable explanation of the refusal.
statusinteger requiredThe HTTP status code, repeated in the body.
remedyobjectA self-serve path forward, when one exists (a 402 points at the credit top-up).
kindstring requiredWhat kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.
topupconnect_mailboxurlstring requiredWhere to go to clear the condition: an API path, or a web app page when only a person can.
403Missing required entitlementcodestring requiredStable machine-readable error code. Branch on this, never on the numeric status.
bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errormessagestring requiredHuman-readable explanation of the refusal.
statusinteger requiredThe HTTP status code, repeated in the body.
remedyobjectA self-serve path forward, when one exists (a 402 points at the credit top-up).
kindstring requiredWhat kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.
topupconnect_mailboxurlstring requiredWhere to go to clear the condition: an API path, or a web app page when only a person can.