Rasel / Docs
EN
GET/api/v2/account

Account snapshot

Safe profile fields, wallet balance, active subscription summary, and complimentary gift grants (freeMessageGrants). Secrets and tokens are never returned.

When to use it. A status panel in your system, or before sending to check canSend and balance.

Code example

Correct: Correct snapshot

curl --location 'https://raselsms.com/api/v2/account' \--header 'X-API-Key: YOUR_API_KEY'

Incorrect: Incorrect: no key

curl --location 'https://raselsms.com/api/v2/account' \--header 'X-API-Key: YOUR_API_KEY'

Requires api_keys:read.

Response example

200 — Correct snapshot

{  "success": true,  "data": {    "profile": {      "id": "6800user123def4567890ffff",      "name": "Acme Co",      "email": "ops@acme.example",      "phone": "+963912345678",      "avatar": null,      "phoneVerified": true,      "businessName": "Acme",      "appName": "Acme App",      "businessNameVerified": true,      "appNameVerified": true,      "ownerId": null,      "memberPermissions": null,      "createdAt": "2026-01-10T08:00:00.000Z"    },    "wallet": {      "balance": 4.88,      "availableBalance": 4.88,      "currency": "USD"    },    "subscription": {      "access": {        "canSend": true,        "reason": "ok",        "poolExhausted": false,        "effectiveLimit": 1000,        "remainingSegments": 800,        "usageCount": 200      },      "active": {        "planName": "Growth",        "status": "active",        "startAt": "2026-07-01T00:00:00.000Z",        "endAt": "2026-08-01T00:00:00.000Z",        "isTrial": false,        "billingCycleMonths": 1      },      "pool": {        "hasActivePlan": true,        "poolSuppressed": false,        "effectiveLimit": 1000,        "usedSegments": 200,        "remainingSegments": 800,        "poolExhausted": false,        "planName": "Growth"      }    },    "freeMessageGrants": {      "summary": {        "totals": {          "granted": 100,          "consumed": 10,          "reserved": 0,          "withdrawn": 0,          "remaining": 90,          "activeRemaining": 90        },        "activeGrantCount": 1,        "grantCount": 1,        "byScope": [          {            "channel": "sms_local",            "providerKey": null,            "messageType": "all",            "remaining": 90,            "grantCount": 1          }        ]      },      "grants": [        {          "id": "6800abc123def4567890fedc",          "channel": "sms_local",          "remainingQuantity": 90,          "status": "active",          "reason": "admin_gift"        }      ]    }  }}

401 — Incorrect: no key

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "UNAUTHORIZED",  "error": "Missing or invalid API key"}

Requires api_keys:read.

403 — Phone is not verified or the key lacks permission (usually messages:create or api_keys:read).

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "FORBIDDEN",  "error": "Phone not verified or missing permission"}

429 — Rate limit exceeded. Honor Retry-After when present.

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "RATE_LIMITED",  "error": "Rate limit exceeded",  "retryAfterSeconds": 30}

HTTP request

GET /api/v2/account

Request Headers

HeaderTypeDescription
X-API-KeystringYour Rasel API key. Send it on every documented request except inbound webhooks. *

Response Fields

FieldTypeDescriptionExample
successbooleanTrue when the operation succeeded, or when at least one batch recipient succeeded.
dataobjectPrimary payload for list and snapshot endpoints.
data.profileobjectAccount identity on the snapshot. Passwords and API keys are never included.
data.profile.idstringResource identifier.
data.profile.namestringDisplay name or lowercase template identifier, depending on the endpoint.
data.profile.emailstringAccount email.
data.profile.phonestringAccount or contact phone in international format.
data.profile.avatarstringProfile image URL when the account has one.
data.profile.phoneVerifiedbooleanTrue when the account phone number has been verified.
data.profile.businessNamestringBusiness name stored on the account.
data.profile.appNamestringApplication name configured for this account.
data.profile.businessNameVerifiedbooleanTrue when the business name has been verified.
data.profile.appNameVerifiedbooleanTrue when the application name has been verified.
data.profile.ownerIdstringUser id of the account owner.
data.profile.memberPermissionsstring-listPermissions of the current team member. Omitted for the owner.
data.profile.createdAtstringCreation timestamp.
data.walletobjectCurrent wallet balance and available balance.
data.wallet.balancenumberWallet balance after the latest movement or current snapshot.
data.wallet.availableBalancenumberBalance that can be spent now, after holds.
data.wallet.currencystringISO currency code of the wallet, such as USD.
data.subscriptionobjectActive plan access, period, and pool summary.
data.subscription.accessobjectWhether this account may send in the current plan period.
data.subscription.access.canSendbooleanTrue when sending is allowed right now.
data.subscription.access.reasonstringWhy sending is allowed or blocked.
data.subscription.access.poolExhaustedbooleanTrue when the plan message pool is used up.
data.subscription.access.effectiveLimitnumberMessages allowed in this period, including bonus messages.
data.subscription.access.periodMessageLimitnumberPlan limit for the current period, before bonus messages.
data.subscription.access.bonusMessagesGrantednumberExtra messages added on top of the plan limit.
data.subscription.access.remainingSegmentsnumberMessages still available in the current period.
data.subscription.access.usageCountnumberMessages already counted in this period.
data.subscription.access.usageByChanneljsonUsage split by channel.
data.subscription.access.channelLimitsjsonPer-channel limits for the current period.
data.subscription.access.cycleStartstringStart of the current billing period, in ISO 8601.
data.subscription.access.cycleEndstringEnd of the current billing period, in ISO 8601.
data.subscription.activeobjectThe subscription period that is in force now.
data.subscription.active.planNamestringName of the active plan.
data.subscription.active.statusstringDelivery or record status. On send: sent, queued, or scheduled. On other resources it is the row status filter or value.
data.subscription.active.startAtstringWhen this subscription period started.
data.subscription.active.endAtstringWhen this subscription period ends.
data.subscription.active.isTrialbooleanTrue when the active period is a trial.
data.subscription.active.billingCycleMonthsnumberLength of the billing cycle in months.
data.subscription.poolobjectPlan message pool for the current period.
data.subscription.pool.hasActivePlanbooleanTrue when a plan period is active.
data.subscription.pool.poolSuppressedbooleanTrue when pool usage is turned off for this account.
data.subscription.pool.effectiveLimitnumberMessages allowed in this period, including bonus messages.
data.subscription.pool.periodMessageLimitnumberPlan limit for the current period, before bonus messages.
data.subscription.pool.bonusMessagesGrantednumberExtra messages added on top of the plan limit.
data.subscription.pool.usedSegmentsnumberSegments already consumed from the pool.
data.subscription.pool.remainingSegmentsnumberSegments still available in the pool.
data.subscription.pool.usedMessagesnumberMessages already consumed from the pool.
data.subscription.pool.usageByChanneljsonPool usage split by channel.
data.subscription.pool.channelLimitsjsonPer-channel pool limits.
data.subscription.pool.cycleStartstringStart of the pool period, in ISO 8601.
data.subscription.pool.cycleEndstringEnd of the pool period, in ISO 8601.
data.subscription.pool.poolExhaustedbooleanTrue when the pool is used up.
data.subscription.pool.planNamestringName of the plan that owns this pool.
data.freeMessageGrantsobjectComplimentary admin gift message grants.
data.freeMessageGrants.summaryobjectTotals for complimentary message grants on this account.
data.freeMessageGrants.summary.totalsobjectGranted, consumed, reserved, withdrawn, and remaining gift messages.
data.freeMessageGrants.summary.totals.grantednumberGift messages that were issued.
data.freeMessageGrants.summary.totals.consumednumberGift messages that were already used.
data.freeMessageGrants.summary.totals.reservednumberGift messages held for sends that are still in flight.
data.freeMessageGrants.summary.totals.withdrawnnumberGift messages removed by an admin.
data.freeMessageGrants.summary.totals.remainingnumberGift messages that are still unused.
data.freeMessageGrants.summary.totals.activeRemainingnumberRemaining messages on grants that are still active.
data.freeMessageGrants.summary.activeGrantCountintegerNumber of grants that are still active.
data.freeMessageGrants.summary.grantCountintegerTotal number of grants, including inactive ones.
data.freeMessageGrants.summary.byScopejsonRemaining gift messages grouped by channel or scope.
data.freeMessageGrants.grantsjsonIndividual complimentary message grants.

Status Codes

StatusDescription
200Success.
401Missing or invalid API key.
403Phone not verified, missing permission, or the account cannot perform this action.
429Rate limit exceeded, or the maximum number of verification attempts was reached.

Try it

Request

GET /api/v2/account

Response

Send a request to see the response.