Skip to content
Whats91

Retrieve the authenticated customer profile, subscription status, active add-ons, and custom development metadata.

Customer Profile

Summary

Retrieve the authenticated customer profile, subscription status, active add-ons, and custom development metadata.

Prerequisites

  • Authorization: Bearer w91_live_xxx
  • Content-Type: application/json for JSON requests

Returns the account that owns the public API token: profile fields, current subscription state, active add-on assignments, and safe custom-plan metadata. This endpoint is account-level. It does not accept senderId, phoneNumberId, WABA ID, or any other sender selector, because the response describes the token owner rather than a WhatsApp number.

GET/api/v3/user_me

Retrieve the authenticated customer profile.

cURL
curl -X GET "https://graph.whats91.com/api/v3/user_me" \
  -H "Authorization: Bearer w91_live_xxx"
Query-token fallback
curl -X GET "https://graph.whats91.com/api/v3/user_me?authToken=w91_live_xxx"
200 OK
{
  "success": true,
  "message": "Customer profile retrieved",
  "data": {
    "user": {
      "userId": 101,
      "uid": "usr_xxx",
      "name": "Customer Name",
      "username": "customer",
      "email": "customer@example.com",
      "mobile": "919999999999",
      "country": "IN",
      "status": "active",
      "billingType": "points",
      "billingManagedByPlatform": true,
      "createdAt": "2026-05-01T10:00:00.000Z",
      "updatedAt": "2026-07-01T10:00:00.000Z"
    },
    "subscription": {
      "isActive": true,
      "status": "active",
      "subscriptionUid": "sub_xxx",
      "planUid": "plan_xxx",
      "planName": "Standard",
      "startDate": "2026-07-05",
      "endDate": "2027-07-04",
      "expiresAt": "2027-07-05T00:00:00.000Z",
      "daysRemaining": 361,
      "customPlan": { "hasCustomPlan": false, "metadata": null }
    },
    "addons": [
      {
        "assignmentUid": "caddon_xxx",
        "addonUid": "addon_xxx",
        "addonCode": 103,
        "name": "Flow Builder",
        "lookupKey": "flow_builder",
        "category": "automation",
        "status": "active",
        "startDate": "2026-07-05",
        "endDate": "2027-07-04",
        "expiresAt": "2027-07-05T00:00:00.000Z",
        "price": 299,
        "currencyCode": "INR",
        "metadata": null
      }
    ],
    "customDevelopment": { "hasCustomDevelopment": false, "items": [] }
  },
  "metadata": {
    "apiVersion": "v3",
    "requestId": "request-uuid"
  }
}

Token Scopes

Global, selected-number, and specific-number tokens can all call this endpoint, because the response belongs to the token owner rather than to any single sender. TOKEN_SCOPE_NOT_ALLOWED is never returned here.

Response Safety

  • Passwords, API token hashes, and raw tokens are never returned.
  • Permission blobs, encrypted values, Meta access tokens, Pusher secrets, and raw setup payloads are never returned.
  • A disabled or expired subscription returns subscription.isActive: false rather than failing the request.
  • Inactive and expired add-on assignments are excluded from addons.

Errors

HTTPerror_codeMeaning
401MISSING_AUTH_TOKENNo bearer token and no query fallback token was provided.
401INVALID_AUTH_TOKENThe token is invalid, expired, or revoked.
403CUSTOMER_TOKEN_REQUIREDThe token does not belong to a customer account.
500USER_PROFILE_UNAVAILABLEThe profile could not be loaded safely.

SDK Examples

Use these examples as starting points for server-side implementations.

cURL
curl -X GET "https://graph.whats91.com/api/v3/user_me" \
  -H "Authorization: Bearer w91_live_xxx"
Node.js
const response = await fetch("https://graph.whats91.com/api/v3/user_me", {
  method: "GET",
  headers: {
    "Authorization": "Bearer w91_live_xxx"
  }
});

const data = await response.json();
console.log(data);
PHP
$ch = curl_init("https://graph.whats91.com/api/v3/user_me");
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer w91_live_xxx"
  ]
]);

$response = curl_exec($ch);
curl_close($ch);
echo $response;
Python
import requests

response = requests.request(
    "GET",
    "https://graph.whats91.com/api/v3/user_me",
    headers={
        "Authorization": "Bearer w91_live_xxx",
    }
)

print(response.json())
C#
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer w91_live_xxx");

var request = new HttpRequestMessage(HttpMethod.Get, "https://graph.whats91.com/api/v3/user_me");

var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());