Asiacell icon

Asiacell data API: balances, usage and top-up

ASIACELL COMMUNICATIONS PJSC · Telecom

Asiacell is the self-care app for ASIACELL COMMUNICATIONS PJSC subscribers. After MSISDN + OTP login the client calls /v2/dashboard/home for plan, remaining buckets and Shukran points, /v1/usage/records for My Pocket call-detail usage, and /v1/billing/balance for the IQD mainBalance — with bill amount, payment rails, credit transfer and add-on packs on sibling paths.

Every signed-in call carries an Authorization: Bearer accessToken issued by the OTP-confirm step, so balance, usage, catalog and loyalty reads all share the same session.

Asiacell is ASIACELL COMMUNICATIONS PJSC's self-care app for Iraqi prepaid and postpaid lines: the home screen shows plan, remaining buckets and loyalty points, My Pocket lists call-detail usage, and the wallet flows cover voucher/online top-up, postpaid bill amount, airtime credit transfer and Shukran rewards. After MSISDN + OTP login the client attaches a Bearer accessToken to every call against a first-party HTTPS API — the dashboard, usage records, balance and subscriber-profile endpoints return the live line, IQD balance and profile used by those screens.

Screenshots

  • Asiacell screenshot 1
  • Asiacell screenshot 2
  • Asiacell screenshot 3
  • Asiacell screenshot 4
  • Asiacell screenshot 5
  • Asiacell screenshot 6
  • Asiacell screenshot 7
  • Asiacell screenshot 8

API surface

  • Start MSISDN login and request OTP

    POST /v1/auth/start osint

    Starts Asiacell self-care login for a subscriber MSISDN, optionally challenges with a captcha, and returns a nextUrl whose PID is required to confirm the SMS OTP.

    Auth: Unauthenticated. Body is the subscriber MSISDN (username) plus an optional captchaCode from a captcha-issuing call. On success the nextUrl carries the PID used by the OTP-confirm step.

    • username
    • captchaCode
    • requireCaptcha
    • success
    • message
    • nextUrl
    • PID

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/auth/start HTTP/1.1
    Content-Type: application/json
    
    {
      "username": "7701234567",
      "captchaCode": ""
    }
    {
      "requireCaptcha": false,
      "success": true,
      "message": "OTP sent",
      "nextUrl": "asiacell://otp?PID=pid-8f21a4"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's phone-number login flow
    • the nextUrl PID is the value the OTP-confirm screen submits
  • Confirm SMS OTP and issue session

    POST /v1/auth/verify osint

    Confirms the SMS OTP for the login PID and returns the accessToken / refreshToken pair, subscriber userId, MSISDN, fullName and userType stored in the app session.

    Auth: Unauthenticated. Body carries PID from the login nextUrl, the SMS passcode, and an optional token. The returned accessToken is sent as Authorization: Bearer on later calls.

    • PID
    • passcode
    • token
    • accessToken
    • refreshToken
    • userId
    • username
    • fullName
    • secret
    • language
    • tokenType
    • userType
    • success
    • message

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/auth/verify HTTP/1.1
    Content-Type: application/json
    
    {
      "PID": "pid-8f21a4",
      "passcode": "482913",
      "token": ""
    }
    {
      "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example",
      "refreshToken": "rt-c91e2b",
      "userId": 18482911,
      "username": "7701234567",
      "fullName": "Ahmed Ali",
      "secret": "sk-asiacell-7c11",
      "language": "en",
      "tokenType": "Bearer",
      "userType": "PREPAID",
      "success": true,
      "message": "Logged in"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's OTP-confirm step
    • the token pair and profile fields match what the app stores in its session
  • Fetch signed-in home dashboard

    GET /v2/dashboard/home openbanking

    Returns the signed-in home payload: current plan name, remaining balance/data point tiles, and Shukran loyalty remain/total used by the Asiacell home screen.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call. Optional lat/lon query params from the device.

    • success
    • message
    • nextAction
    • data
    • plan
    • title
    • name
    • points
    • value
    • loyaltyPoint
    • remain
    • total
    • expiration
    • registered
    • icon
    • logo
    • color

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v2/dashboard/home?lat=33.3152&lon=44.3661 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "nextAction": null,
      "data": {
        "plan": {
          "title": "Your plan",
          "name": "Asiacell Super 15"
        },
        "points": [
          {"title": "Balance", "value": "12500 IQD"},
          {"title": "Data", "value": "8.4 GB"}
        ],
        "loyaltyPoint": {
          "title": "Shukran",
          "value": "420",
          "remain": 420.0,
          "total": 1000.0,
          "expiration": "2026-12-31",
          "registered": true,
          "icon": "shukran",
          "logo": "https://cdn.example.com/static/shukran.png",
          "color": "#E30613"
        }
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's home dashboard
    • plan, point tiles and loyalty fields line up with the tiles rendered on the home screen
  • Read subscriber profile

    GET /v1/account/profile osint

    Loads the authenticated subscriber's legal name parts, MSISDN, email and profile photo shown on the account/profile screen.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call.

    • success
    • message
    • title
    • nextAction
    • data
    • firstName
    • lastName
    • thirdName
    • phone
    • email
    • photo

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/account/profile HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "title": "Profile",
      "nextAction": null,
      "data": {
        "firstName": "Ahmed",
        "lastName": "Ali",
        "thirdName": "Hassan",
        "phone": "7701234567",
        "email": "[email protected]",
        "photo": "https://cdn.example.com/media/profile/18482911.jpg"
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's account/profile screen
  • List usage records

    GET /v1/usage/records opendata

    Returns a paged call-detail record list for My Pocket: voice/data/SMS rows with amount, unit, counterparty subtitle and description, plus total/limit/page.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call. Paginated with limit/page; viewing the detail list is gated behind an SMS OTP confirm step.

    • success
    • message
    • data
    • amount
    • unit
    • title
    • subTitle
    • description
    • total
    • limit
    • page

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/usage/records?page=1&limit=20 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "data": {
        "data": [
          {
            "amount": "150",
            "unit": "IQD",
            "title": "Voice",
            "subTitle": "07701234568",
            "description": "2 min 14 sec · 2026-09-26 18:42"
          },
          {
            "amount": "24",
            "unit": "MB",
            "title": "Data",
            "subTitle": "Mobile internet",
            "description": "2026-09-26 19:10"
          }
        ],
        "total": 86,
        "limit": 20,
        "page": 1
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's My Pocket usage list
    • the list is paged and gated behind an SMS OTP confirm
  • Read prepaid main balance for top-up

    GET /v1/billing/balance openbanking

    Returns the prepaid mainBalance and currency shown on the recharge screen before the subscriber picks a voucher or online payment method.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call.

    • success
    • message
    • title
    • nextAction
    • data
    • mainBalance
    • currency
    • note

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/billing/balance HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "title": "Recharge",
      "nextAction": null,
      "data": {
        "title": "Main balance",
        "mainBalance": 12500.0,
        "currency": "IQD",
        "note": "Valid until 12 Oct 2026"
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's recharge screen
  • Fetch postpaid bill amount

    GET /v1/billing/invoice openfinance

    Returns the outstanding postpaid bill amount (data) and dueDate used by the pay-bill flow before the payment POST.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call.

    • success
    • message
    • title
    • data
    • dueDate
    • nextAction

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/billing/invoice HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "title": "Current bill",
      "data": 18500.0,
      "dueDate": "2026-10-05",
      "nextAction": null
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's pay-bill flow
  • List recharge payment methods

    GET /v1/billing/payment-methods openfinance

    Lists voucher vs online recharge rails (FastPay, AsiaPay and other wallets) the subscriber can pick before confirming a top-up.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call.

    • success
    • message
    • data
    • title
    • desc
    • voucherPayment
    • onlinePayments
    • id
    • icon
    • selected

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/billing/payment-methods HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "data": {
        "title": "How do you want to pay?",
        "desc": "Choose a voucher or online wallet",
        "voucherPayment": {
          "title": "Scratch card"
        },
        "onlinePayments": [
          {
            "id": 2,
            "title": "FastPay",
            "icon": "fastpay",
            "selected": true
          },
          {
            "id": 4,
            "title": "AsiaPay",
            "icon": "asiapay",
            "selected": false
          }
        ]
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's payment-picker screen
  • Start airtime credit transfer

    POST /v1/transfers/initiate openbanking

    Starts a prepaid airtime gift to another Asiacell MSISDN and returns a PID so the sender can confirm the amount with an SMS OTP.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call. Completing the transfer requires an SMS OTP confirm, then a separate execute call.

    • receiverMsisdn
    • amount
    • success
    • message
    • title
    • PID
    • nextAction
    • data

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/transfers/initiate HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "receiverMsisdn": "7709876543",
      "amount": 5000.0
    }
    {
      "success": true,
      "message": "Confirm with OTP",
      "title": "Transfer credit",
      "PID": "pid-ct-44ab",
      "nextAction": "OTP",
      "data": null
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's credit-transfer flow
    • the returned PID is confirmed with an SMS OTP before the transfer executes
  • List add-on packs

    GET /v1/catalog/bundles opendata

    Returns the add-on catalog filters and pack tiles (title, price, validity) shown when a subscriber browses extra data or voice bundles.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call.

    • success
    • message
    • data
    • filter
    • id
    • title
    • bodies
    • price
    • validity

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/catalog/bundles HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "data": {
        "filter": [
          {"id": "data", "title": "Data"},
          {"id": "voice", "title": "Voice"}
        ],
        "bodies": [
          {
            "title": "Weekly 2GB",
            "price": "3000 IQD",
            "validity": "7 days"
          }
        ]
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's add-on catalog
  • Fetch add-on pack detail

    GET /v1/catalog/bundles/{id} opendata

    Returns a single add-on pack's price, validity, benefit icons and subscribe actions used on the pack-detail screen.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call.

    • success
    • message
    • data
    • title
    • price
    • validity
    • expiryTitle
    • detail
    • tags
    • benefits
    • icon
    • postIcons
    • links
    • actionButtons

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/catalog/bundles/weekly-2gb HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "data": {
        "title": "Weekly 2GB",
        "price": "3000 IQD",
        "validity": "7 days",
        "expiryTitle": "Expires 7 days after activation",
        "detail": "2GB high-speed data, then 128 kbps",
        "tags": [{"title": "Data"}],
        "benefits": [
          {"icon": "data", "title": "2 GB", "postIcons": []}
        ],
        "links": [],
        "actionButtons": [{"title": "Subscribe"}]
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's pack-detail screen
  • Fetch Shukran loyalty home

    GET /v2/rewards/home openfinance

    Loads the Shukran loyalty home: remaining points copy, redeem sections and the action that starts a redemption by id.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call. lang query selects en/ar/ku copy.

    • success
    • message
    • data
    • title
    • subTitle
    • sections
    • actionButton
    • detailSection

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v2/rewards/home?lang=en HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "data": {
        "title": "Shukran",
        "subTitle": "Your rewards",
        "message": "You have 420 points",
        "sections": [
          {"title": "Redeem", "points": 420}
        ],
        "actionButton": {"title": "Redeem now"},
        "detailSection": {"title": "How Shukran works"}
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's Shukran loyalty home
  • List active subscribed offers

    GET /v1/catalog/active opendata

    Returns currently active packs on the line — remaining balance text and validity — used by the manage-offers / account-overview cards.

    Auth: Authorization: Bearer accessToken from the OTP-confirm call.

    • success
    • message
    • data
    • bodies
    • title
    • balance
    • validity

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/catalog/active HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "success": true,
      "message": "OK",
      "data": {
        "bodies": [
          {
            "title": "Weekly 2GB",
            "balance": "1.2 GB left",
            "validity": "Expires 03 Oct 2026"
          }
        ]
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's manage-offers and account-overview cards

Data categories

  • balances
  • usage
  • profile
  • payments
  • bills
  • transfers
  • loyalty
  • add-ons

Where teams use this data

  • Prepaid balance and usage reconciliation

    Nightly jobs pull GET /v2/dashboard/home and GET /v1/billing/balance for mainBalance / remaining data tiles, then page GET /v1/usage/records to match voice and data rows (amount, unit, subTitle) against an internal usage ledger.

  • Postpaid bill-pay and recharge rails

    A payments ops console reads GET /v1/billing/invoice (data + dueDate) and GET /v1/billing/payment-methods (voucherPayment vs onlinePayments id/title) so agents can quote the right FastPay or AsiaPay rail before the subscriber confirms.

  • Airtime gift monitoring

    Family-plan tooling posts POST /v1/transfers/initiate with receiverMsisdn and amount, stores the returned PID, and records success/message after the SMS OTP so household airtime gifts are auditable.

  • Pack catalog and Shukran loyalty

    A retail dashboard lists GET /v1/catalog/bundles packs (price, validity) and GET /v1/catalog/active remaining balance, then shows GET /v2/rewards/home sections so staff can explain redeemable points next to the live line.

Frequently asked questions

How does Asiacell authenticate subscriber API calls?

POST /v1/auth/start sends the MSISDN as username and returns a nextUrl whose PID is posted with the SMS passcode to /v1/auth/verify. That call returns accessToken, refreshToken, userId, username, fullName and userType; later requests send Authorization: Bearer plus the accessToken.

Which endpoints expose prepaid balance and usage?

GET /v2/dashboard/home returns plan name plus point tiles and loyalty remain/total. GET /v1/billing/balance returns mainBalance and currency. GET /v1/usage/records pages My Pocket call-detail rows with amount, unit, title, subTitle and description.

How do top-up and bill pay work in the Asiacell app?

GET /v1/billing/payment-methods lists voucherPayment and onlinePayments (FastPay, AsiaPay). Postpaid lines read GET /v1/billing/invoice for the outstanding amount and dueDate before paying via a payment POST.

Can I see add-on packs and Shukran points?

GET /v1/catalog/bundles lists catalog filters and pack tiles; GET /v1/catalog/bundles/{id} returns price, validity and benefits. GET /v1/catalog/active shows remaining balance on live packs. GET /v2/rewards/home?lang=en is the loyalty home used to start a redemption.

Topics

  • asiacell api
  • asiacell data api
  • asiacell balance
  • asiacell usage records
  • asiacell recharge
  • asiacell bill pay
  • asiacell credit transfer
  • asiacell shukran
  • asiacell add-on
  • iraqi telecom api

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote