Live

Airalo logo

Airalo API and MCP server

airalo.com

Airalo has an API only for business partners who resell its eSIMs (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Airalo with 13 endpoints (8 read, 5 write): your AI agent signs in as you and does the work.

Category
Travel
Endpoints
13 8 read, 5 write
Updated
How Cotlet connects your agent to Airalo
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 13 endpoints

    cotlet.dev/mcp/v1

  3. Airalo logo

    Airalo

    Signed in as you on airalo.com

You sign in once. We never store your password.

Official API

Does Airalo have an official API?

Airalo has an API only for business partners who resell its eSIMs (checked 11 Oct 2026). It does not reach a personal Airalo account, so your own eSIMs, Airmoney, orders and refunds stay in the app and on airalo.com.

What Airalo's own tools do compared with Cotlet
Task Airalo official Cotlet
List the eSIMs in your account No Yes
Check remaining data on an eSIM Partly Partner API usage call, only for eSIMs the partner sold Yes
Browse packages for a destination Partly Partner API package lists, for partners Yes
Buy an eSIM Partly Partner orders, not your account or payment method Yes
Top up an eSIM Partly Partner API top-ups, only for eSIMs the partner sold Yes
Get QR code and manual install details Partly Partner API instructions call, only for eSIMs the partner sold Yes
Turn renewals on or off No Yes
Request a refund No Yes

Sources: Airalo Partner API docs · Airalo Partner API overview · Airalo PHP SDK (partner methods) · Airalo Help: What are renewals and how do they work? · Airalo Help: Wrong eSIM or change of plans (refunds) · Airalo Help: How can I top up an eSIM?

Common use cases

What can an AI agent do in Airalo?

Cotlet is best for frequent travellers who want their AI agent to watch eSIM data, top up, fetch install codes and handle refunds on their own Airalo account without running or fixing a server.

  • Check how much eSIM data is left Runs: Daily

    How much data is left on my Thailand eSIM, and when does it expire? Your agent calls list_esims and get_data_usage.

  • Top up an eSIM before data runs out Runs: Daily

    Every morning while I am in Thailand, check my Airalo eSIM. If less than 1 GB is left and the package is still valid for more than two days, add the smallest top-up and use my Airmoney first. Your agent calls list_esims, get_data_usage, list_topup_packages, get_airmoney and top_up_esim.

  • Turn off eSIM renewals after a trip

    I fly home tomorrow. Turn off renewals on every Airalo eSIM from this trip and tell me which ones still have data left. Your agent calls list_esims, get_esim, get_data_usage and set_renewals.

  • Get eSIM install details

    Send me the QR code and manual codes for the eSIM I bought yesterday. Your agent calls list_esims and get_install_instructions.

  • Request a refund for the wrong eSIM

    I bought the Japan eSIM by mistake yesterday and have not installed it. Request a refund for that order and tell me where the money goes. Your agent calls list_orders, list_esims, get_esim and request_refund.

Endpoints

What is the Airalo API?

Cotlet's Airalo API exposes 13 endpoints for your own Airalo account: search packages, list my eSIMs, get eSIM details, get data usage, get install instructions, list top-up packages, list orders, get Airmoney, buy eSIM, top up eSIM, set renewals, redeem eSIM voucher and request refund. The search_packages endpoint returns eSIM packages from the store for a country or region, with data, validity and price. Each endpoint takes simple JSON inputs like esim_id, package_id or airmoney_usd and works both as an MCP tool for agents and as a REST call for scripts.

All endpoints · 13 total

missing one? request an endpoint

  • POST

    search_packages

    read

    Returns the packages the Airalo store lists for a destination. Each item has the data amount, validity in days and price in USD, and says whether the eSIM is rechargeable, which Airalo shows under Additional information. Use package_id with buy_esim.

    POST /api/v1/airalo/search_packages

    Input

    Input: search_packages
    Parameter Type Description
    destination required string Country or region, e.g. Japan, Europe, Global.

    Example response

    {
      "packages": [
        {
          "package_id": "jp-7d-5gb",
          "title": "Japan 5 GB, 7 days",
          "data_gb": 5,
          "validity_days": 7,
          "price_usd": 9.5,
          "rechargeable": true
        },
        {
          "package_id": "jp-30d-10gb",
          "title": "Japan 10 GB, 30 days",
          "data_gb": 10,
          "validity_days": 30,
          "price_usd": 19.5,
          "rechargeable": true
        }
      ]
    }
  • POST

    list_esims

    read

    Lists the eSIMs in your account with destination, package, ICCID and whether the eSIM is rechargeable. Use esim_id from each item with the other eSIM tools. Set rechargeable_only to see only the eSIMs a top-up can reach.

    POST /api/v1/airalo/list_esims

    Input

    Input: list_esims
    Parameter Type Description
    rechargeable_only boolean Only eSIMs that can be topped up. Default: false.

    Example response

    {
      "esims": [
        {
          "esim_id": "es_48213",
          "destination": "Thailand",
          "package": "Thailand 5 GB, 30 days",
          "iccid": "8910300000000048213",
          "rechargeable": true
        },
        {
          "esim_id": "es_47790",
          "destination": "Japan",
          "package": "Japan 5 GB, 7 days",
          "iccid": "8910300000000047790",
          "rechargeable": false
        }
      ]
    }
  • POST

    get_esim

    read

    Returns one eSIM as My eSIMs shows it under Details: ICCID, the packages bought for it (Package History) and whether renewals are offered and switched on. Use it before set_renewals.

    POST /api/v1/airalo/get_esim

    Input

    Input: get_esim
    Parameter Type Description
    esim_id required string eSIM ID from list_esims.

    Example response

    {
      "esim_id": "es_48213",
      "destination": "Thailand",
      "iccid": "8910300000000048213",
      "rechargeable": true,
      "renewals": {
        "offered": true,
        "enabled": false
      },
      "package_history": [
        {
          "order_id": "2026100198765",
          "package": "Thailand 5 GB, 30 days"
        }
      ]
    }
  • POST

    get_data_usage

    read

    Returns the data bar from My eSIMs: total, used and remaining data and the expiry date. Airalo shows the bar only "if available"; when it is missing, usage_available is false and no numbers come back.

    POST /api/v1/airalo/get_data_usage

    Input

    Input: get_data_usage
    Parameter Type Description
    esim_id required string eSIM ID from list_esims.

    Example response

    {
      "esim_id": "es_48213",
      "usage_available": true,
      "total_gb": 5,
      "used_gb": 4.2,
      "remaining_gb": 0.8,
      "expires_at": "2026-11-02T23:59:00+07:00"
    }
  • POST

    get_install_instructions

    read

    Returns what Install or share, Share and more shows in the app: a QR code image and the manual installation details (SM-DP+ address, activation code and a confirmation code if Airalo gives one). The tool does not install anything; you scan the QR code or enter the codes on the phone.

    POST /api/v1/airalo/get_install_instructions

    Input

    Input: get_install_instructions
    Parameter Type Description
    esim_id required string eSIM ID from list_esims.

    Example response

    {
      "esim_id": "es_48213",
      "qr_code_url": "https://example.com/qr/es_48213.png",
      "smdp_address": "smdp.example-esim.com",
      "activation_code": "K2-AB12CD-XY34ZW",
      "confirmation_code": null
    }
  • POST

    list_topup_packages

    read

    Returns the top-up packages Airalo offers for one eSIM. The list is empty for an eSIM that is not rechargeable or whose network carrier has changed; in that case you need a new eSIM. Use package_id with top_up_esim.

    POST /api/v1/airalo/list_topup_packages

    Input

    Input: list_topup_packages
    Parameter Type Description
    esim_id required string eSIM ID from list_esims.

    Example response

    {
      "esim_id": "es_48213",
      "packages": [
        {
          "package_id": "th-topup-1gb-7d",
          "title": "Thailand 1 GB, 7 days",
          "price_usd": 2.5
        },
        {
          "package_id": "th-topup-3gb-30d",
          "title": "Thailand 3 GB, 30 days",
          "price_usd": 6.5
        }
      ]
    }
  • POST

    list_orders

    read

    Lists the orders in your account with order number, package, date and amount in USD. Use order_id with request_refund.

    POST /api/v1/airalo/list_orders

    Input

    Input: list_orders
    Parameter Type Description
    since date Only orders on or after this date.

    Example response

    {
      "orders": [
        {
          "order_id": "2026101112345",
          "package": "Japan 5 GB, 7 days",
          "ordered_at": "2026-10-11T08:40:00Z",
          "amount_usd": 9.5
        },
        {
          "order_id": "2026100198765",
          "package": "Thailand 5 GB, 30 days",
          "ordered_at": "2026-10-01T10:05:00Z",
          "amount_usd": 11.5
        }
      ]
    }
  • POST

    get_airmoney

    read

    Returns your Airmoney balance. Airmoney is tied to US dollars. Airalo applies it at checkout only when the balance is at least 1 USD, and it cannot pay for renewals; applies_at_checkout tells you which side of that line you are on.

    POST /api/v1/airalo/get_airmoney

    Input

    No parameters.

    Example response

    {
      "balance_usd": 4.3,
      "applies_at_checkout": true
    }
  • POST

    buy_esim

    write

    Prepares the order for one package. Set airmoney_usd to apply Airmoney, which needs a balance of at least 1 USD. When Airalo's checkout needs payment or extra authentication, the tool stops and returns a checkout_url for you to finish; Cotlet never enters card details. Once the order completes, the eSIM appears in My eSIMs and get_install_instructions can follow. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/airalo/buy_esim

    Input

    Input: buy_esim
    Parameter Type Description
    package_id required string Package ID from search_packages.
    airmoney_usd number Amount of Airmoney to apply, in USD. Default: 0.

    Example response

    {
      "order_id": "2026101112345",
      "package": "Japan 5 GB, 7 days",
      "price_usd": 9.5,
      "airmoney_applied_usd": 2.4,
      "due_usd": 7.1,
      "status": "checkout_required",
      "checkout_url": "https://example.com/checkout/2026101112345"
    }
  • POST

    top_up_esim

    write

    Adds a package from list_topup_packages to an eSIM you already installed. Set airmoney_usd to apply Airmoney. When Airalo's checkout needs payment or extra authentication, the tool stops and returns a checkout_url for you to finish; Cotlet never enters card details. It fails for an eSIM that is not rechargeable. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/airalo/top_up_esim

    Input

    Input: top_up_esim
    Parameter Type Description
    esim_id required string eSIM ID from list_esims.
    package_id required string Top-up package ID from list_topup_packages.
    airmoney_usd number Amount of Airmoney to apply, in USD. Default: 0.

    Example response

    {
      "esim_id": "es_48213",
      "order_id": "2026101112399",
      "package": "Thailand 3 GB, 30 days",
      "price_usd": 6.5,
      "airmoney_applied_usd": 2.4,
      "due_usd": 4.1,
      "status": "checkout_required",
      "checkout_url": "https://example.com/checkout/2026101112399"
    }
  • POST

    set_renewals

    write

    Switches the Renewals toggle under My eSIMs, Details. A renewal repeats your original package and is bought when about 10% of the data remains. It cannot be turned on once the data is used up or the validity has ended, and it needs a saved payment method. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/airalo/set_renewals

    Input

    Input: set_renewals
    Parameter Type Description
    esim_id required string eSIM ID from list_esims.
    enabled required boolean true turns renewals on, false turns them off.

    Example response

    {
      "esim_id": "es_48213",
      "renewals": "off"
    }
  • POST

    redeem_voucher

    write

    Redeems an eSIM voucher under Airmoney & Membership, Redeem Voucher. The voucher adds one specific eSIM package to your account, which you then use like any package you bought. A voucher is used up once redeemed. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/airalo/redeem_voucher

    Input

    Input: redeem_voucher
    Parameter Type Description
    code required string eSIM voucher code.

    Example response

    {
      "status": "redeemed",
      "esim_id": "es_49002",
      "package": "Europe 3 GB, 15 days"
    }
  • POST

    request_refund

    write

    Requests a refund the way the Request Refund button does under Package History or Profile > Orders. The button appears only for eligible orders, and expired or fully used eSIMs are not eligible; otherwise the call returns an error. Airmoney refunds are instant. Refunds to the original payment method typically take 7 to 10 business days. Several recent automated refunds can send a request to manual review. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/airalo/request_refund

    Input

    Input: request_refund
    Parameter Type Description
    order_id required string Order number from list_orders.
    reason required enum wrong_purchase, plans_changed, installation_issues or esim_not_working.
    refund_to enum airmoney or original_payment. original_payment only for installation_issues and esim_not_working. Default: airmoney.

    Example response

    {
      "order_id": "2026101112345",
      "reason": "wrong_purchase",
      "refund_to": "airmoney",
      "refund_usd": 9.5,
      "status": "refunded"
    }

Setup

How do I connect Airalo to Claude Code, Codex or Cursor?

Connecting Airalo takes three steps: request access, sign in to Airalo once, then add one MCP server or call the REST API with the same key.

Connect Airalo over MCP

  1. 1

    Create an account

    Sign up and add Airalo in the console. Your API key is there too.

  2. 2

    Sign in to Airalo once

    Open the connect page from the console and sign in to Airalo the way you always do. We keep the session, never your password, and you can revoke it anytime.

  3. 3

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    How much data is left on my Thailand eSIM, and when does it expire?

    Ask in plain words. Your agent finds the Airalo tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

Call Airalo over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

    Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

  2. 2

    Call a tool

    curl

    curl https://cotlet.dev/api/v1/airalo/top_up_esim \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"esim_id":"es_48213","package_id":"th-topup-3gb-30d","airmoney_usd":2.4}'

    Every tool is a POST endpoint at /api/v1/airalo/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

  3. 3

    Read the result

    Example response · top_up_esim

    {
      "esim_id": "es_48213",
      "order_id": "2026101112399",
      "package": "Thailand 3 GB, 30 days",
      "price_usd": 6.5,
      "airmoney_applied_usd": 2.4,
      "due_usd": 4.1,
      "status": "checkout_required",
      "checkout_url": "https://example.com/checkout/2026101112399"
    }

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for Airalo? Hosted, safe and kept working.

  • Built for agents

    • One MCP server for every app you connect.
    • The same tools as a REST API for scripts and cron jobs.
    • Works with Claude Code, Codex and Cursor.
  • Your login stays yours

    • You sign in to Airalo yourself. We keep only the session, encrypted with AES-256.
    • The model never sees a login.
    • No stored passwords, no CAPTCHA solving, no MFA bypass.
  • You stay in control

    • Pick read only, or read and write.
    • Anything that reaches other people waits for your OK, unless you switch it off per tool.
    • Revoke access in one click.
  • Kept working for you

    • We test every integration daily.
    • When Airalo changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a Airalo MCP server on GitHub?

No community MCP server for a personal Airalo account turned up. The one API is the Partner API for businesses that resell eSIMs. For your own eSIMs the other way is the Airalo app, by hand.

Cotlet compared with a Airalo Partner API
Airalo Partner API Cotlet
Who can use it Businesses that are Airalo Partners Anyone with an Airalo account
Setup Become a partner, get client credentials, build on REST or an SDK Request access, sign in to Airalo once, add one MCP server or API key
Whose eSIMs eSIMs ordered through the partner account The eSIMs, orders and Airmoney in your own account
When Airalo changes Airalo versions the API; you update your code Our team tests it daily and fixes it for you; failed calls are free
When the session expires Token refresh in your code If Airalo logs you out, your agent gets a link to sign in again
Where it runs Your own backend Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule
Price Partner terms, agreed with Airalo Free 7-day trial with 5,000 credits, then credits per call

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when Airalo changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want the session to stay on your own computer
  • you only need it now and then, from one MCP client

For AI agents

Cotlet for Airalo in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • search_packages passing
  • list_esims passing
  • get_esim passing
  • get_data_usage passing
  • get_install_instructions passing

+ 8 more endpoints

13/13 passing latest check self-healing

airalo.txt

Airalo has an API only for business partners who resell its eSIMs (checked 11 Oct 2026). It does not reach a personal Airalo account, so your own eSIMs, Airmoney, orders and refunds stay in the app and on airalo.com.
Cotlet provides a hosted MCP server and REST API for Airalo: 13 tools (8 read, 5 write).
Access       Request access at https://cotlet.dev/app/signup?app=airalo; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/airalo
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        search_packages, list_esims, get_esim, get_data_usage, get_install_instructions, list_topup_packages, list_orders, get_airmoney, buy_esim, top_up_esim, set_renewals, redeem_voucher, request_refund
Confirm      buy_esim, top_up_esim, set_renewals, redeem_voucher, request_refund (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/airalo-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=airalo (Airalo is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Airalo once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Airalo server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Airalo in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Airalo's terms; Cotlet is not affiliated with Airalo.
Full page as Markdown

Automations

Can Airalo automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Airalo connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to check how much esim data is left, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run Airalo automations through Cotlet, and how to schedule them
Where How to connect How to schedule
Your AI agent Add https://cotlet.dev/mcp/v1 with your API key. A scheduled agent run, for example a Claude Code routine.
n8n MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/airalo/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/airalo/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/airalo/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/airalo/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the Airalo API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Airalo API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

Cotlet plan sizes: price, monthly credits and price per credit
Size Price Credits / month Per credit
Solo $29/mo 3,000 about $0.0097
Pro $99/mo 12,000 about $0.0083
Agency $299/mo 40,000 $0.0075

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the Authorization: Bearer header.

About Cotlet

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Airalo account.

Company details
The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. Terms
Your session
You sign in to Airalo yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Airalo tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect Airalo in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
What we never do
Store passwords, solve CAPTCHAs or bypass MFA.
Airalo's terms
You use your own Airalo account and stay responsible for following Airalo's terms. Cotlet is independent and not affiliated with Airalo. Terms
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

Frequently asked questions

How do I get access?

Request access and pick Airalo. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to Airalo once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is a hosted server safe? My Airalo session would leave my computer.

Cotlet keeps your Airalo session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

Can my agent install the eSIM on my phone?

No. get_install_instructions returns the QR code and the manual codes, and you scan or enter them in your phone's Settings. Airalo's iOS guide describes manual installation with the SM-DP+ address, the activation code and a confirmation code if one is provided.

Can it pay with my Airmoney balance?

Yes, for purchases and top-ups, through airmoney_usd. Airalo needs a balance of at least 1 USD to apply Airmoney, and Airmoney cannot pay for renewals, which need a saved payment method.

Can my agent post or send messages in Airalo without asking me?

No. Every call to buy_esim, top_up_esim, set_renewals, redeem_voucher or request_refund waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals.

Can I use the Airalo API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/airalo/{tool} from the HTTP Request node.

Give your agent access to Airalo.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.