esimker Wallet API

The wallet API from esimker — 4 operation(s) for wallet.

GitHub OpenAPI

Operations 5

POST /api/wallet Create #
GET /api/wallet Read #
POST /api/wallet/connect Connect #
POST /api/wallet/deposits Deposit #
GET /api/wallet/deposits/{token} Deposit Status #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/esimker-com:esimker-com-wallet-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

esimker-com-wallet-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: esimker Wallet API
  description: 'Prepaid travel data eSIMs. No account is needed: an order is addressed by

    the secret token from its URL. Prices are USD strings, from $1.00.


    Two ways to buy:


    - **Storefront flow** (`catalog`, `orders`): pick a plan, `POST /api/orders`, send the

    buyer to `checkout_url` to pay in crypto, then poll `GET /api/orders/{token}`

    until `status` is `ready` — the eSIM (`esim.activation_code`) is in the payload.

    - **Prepaid wallet** (`wallet`): `POST /api/wallet` mints a wallet whose secret code is

    the only credential (`X-Wallet-Code`); `POST /api/wallet/deposits` opens a top-up

    invoice and, with `currency` set, returns the coin address and the exact amount for a

    payer with no browser; `POST /api/orders` with `payment_method: "wallet"` charges the

    balance and issues at once (`client_ref` makes a retry return the same order).

    - **Reseller API** (`reseller`): white-label partners on `X-API-Key`, retail minus a

    discount; keys are issued by support.


    The wallet and the catalogue are also MCP tools at `POST https://esimker.com/api/mcp`

    (Streamable HTTP; the wallet code goes in `Authorization: Bearer`).


    The guide for agents is https://esimker.com/agents (the wallet: https://esimker.com/agents#wallet).


    **Buyer accounts** (`account`) are the storefront''s own cabinet: an address and a password

    as a second way for a person to reach their orders and wallets, on a session cookie with a

    CSRF echo. An account is optional and nothing above needs one — an agent keeps the order

    token and the wallet code, and has no use for these routes.'
  version: '1'
tags:
- name: Wallet
paths:
  /api/wallet:
    post:
      tags:
      - Wallet
      summary: Create
      operationId: create_api_wallet_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Wallet
      summary: Read
      operationId: read_api_wallet_get
      parameters:
      - name: X-Wallet-Code
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Wallet-Code
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Read Api Wallet Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/wallet/connect:
    post:
      tags:
      - Wallet
      summary: Connect
      description: 'Opens a wallet by its code or its backup phrase, and hands back both

        forms — the phrase is how a wallet opened by code gets its backup shown.'
      operationId: connect_api_wallet_connect_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectIn'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/wallet/deposits:
    post:
      tags:
      - Wallet
      summary: Deposit
      description: 'A top-up: the same providers and the same webhooks as an order, only the

        thing being paid for is credit. The pay page sends the buyer back to the

        wallet page with the deposit''s token, which the page then reports on.'
      operationId: deposit_api_wallet_deposits_post
      parameters:
      - name: X-Wallet-Code
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Wallet-Code
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/wallet/deposits/{token}:
    get:
      tags:
      - Wallet
      summary: Deposit Status
      description: 'Polled by the wallet page after the pay page sends the buyer back —

        the webhook usually lands before they do, but not always.'
      operationId: deposit_status_api_wallet_deposits__token__get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      - name: X-Wallet-Code
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Wallet-Code
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Deposit Status Api Wallet Deposits  Token  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ConnectIn:
      properties:
        secret:
          type: string
          maxLength: 400
          minLength: 1
          title: Secret
      type: object
      required:
      - secret
      title: ConnectIn
    SecretOut:
      properties:
        code:
          type: string
          title: Code
        phrase:
          type: string
          title: Phrase
        wallet:
          additionalProperties: true
          type: object
          title: Wallet
      type: object
      required:
      - code
      - phrase
      - wallet
      title: SecretOut
    DepositOut:
      properties:
        deposit:
          additionalProperties: true
          type: object
          title: Deposit
        checkout_url:
          type: string
          title: Checkout Url
        pay:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Pay
      type: object
      required:
      - deposit
      - checkout_url
      title: DepositOut
    CreateWalletIn:
      properties:
        accept_terms:
          type: boolean
          title: Accept Terms
      type: object
      required:
      - accept_terms
      title: CreateWalletIn
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    DepositIn:
      properties:
        amount_usd:
          anyOf:
          - type: number
            maximum: 100000.0
            exclusiveMinimum: 0.0
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount Usd
        payment_method:
          type: string
          pattern: ^(crypto|card)$
          title: Payment Method
          default: crypto
        payment_gateway:
          anyOf:
          - type: string
            pattern: ^[a-z][a-z0-9_-]{1,30}$
          - type: 'null'
          title: Payment Gateway
        lang:
          anyOf:
          - type: string
            pattern: ^[A-Za-z]{2}(-[A-Za-z]{4})?$
          - type: 'null'
          title: Lang
        currency:
          anyOf:
          - type: string
            pattern: ^[A-Za-z0-9]{2,16}$
          - type: 'null'
          title: Currency
      type: object
      required:
      - amount_usd
      title: DepositIn