Hubby API (1.3.2)

Welcome to the Hubby API documentation. This API enables partners to seamlessly integrate eSIM booking and management capabilities into their applications.

Key Features:

  • Create and manage eSIM bookings for your customers
  • Access our global package catalog with country-specific offerings
  • Track booking statuses and package activations
  • Support for multiple package types (starter, data-limited, unlimited, time-limited)

Package Types

The API supports four types of packages:

  • Starter packages: Hybrid packages that are both data and time limited. They provide a small data allowance within a short time period (default: 2 days). Perfect for first-time users and trials.

  • Data-limited packages: Traditional packages with a specific data allowance that expires after a certain period (default: 365 days). This is the primary package type and the default for most use cases.

  • Unlimited packages: Packages that provide unrestricted data usage for a specified duration. Subject to fair use policy. Ideal for heavy data users and digital nomads.

  • Time-limited packages: Packages that provide a fixed data allowance for a specific duration with full-speed access. These packages expire when either the data limit or time limit is reached.

Note: Top-ups are always data-limited packages, regardless of the original package type.

Authentication: All API requests must include the following headers:

  • x-api-key: Your public API key
  • x-timestamp: Current Unix timestamp in milliseconds
  • x-signature: HMAC-SHA256 signature

The HMAC signature must be generated for each request using:

  1. Concatenate: timestamp + HTTP method + request path Example: "1678901234GET/api/bookings" Note: The request path MUST include the "/api" prefix in the signature calculation. For example, if calling "/bookings", use "/api/bookings" in the signature.
  2. Generate HMAC-SHA256 using your secret key
  3. Convert to hex string

Note: Swagger UI cannot be used to test the API directly as each request requires a unique HMAC signature. Please implement the authentication in your client application.

Example Node.js Implementation:

const cryptoJs = require('crypto-js');

// Configuration values that would normally come from environment
const secretKey = "YOUR_API_SECRET";
const publicKey = "YOUR_API_KEY";
const baseUrl = "YOUR_BASE_URL";

// Function to generate headers for API request
function generateApiHeaders(method, path) {
    //Timestamp is in milliseconds e.g. 1715558400000
    const timestamp = Math.floor(Date.now()).toString();

    // Ensure url is a string
    let path = String(url);

    // Remove baseUrl from the url if present
    path = processedUrl.replace(baseUrl, '');

    // Create query string if needed
    const queryString = new URL(url).search;
    if (queryString) {
        processedUrl += queryString;
    }

    // Validate public key
    if (!publicKey) {
        throw new Error("Public key is required");
    }

    // Create the payload
    // Sample payload: 1715558400000GET/api/bookings?bookingId=1234567890
    const payload = timestamp + method + path;

    // Generate the HMAC signature
    const signature = cryptoJs.HmacSHA256(payload, secretKey).toString(cryptoJs.enc.Hex);

    // Return headers object
    return {
        'x-timestamp': timestamp,
        'x-signature': signature,
        'x-api-key': publicKey,
        'Accept': 'application/json'
    };
}

Need Help?

  • Technical Support: support@hubbyesim.com
Download OpenAPI description
Languages
Servers
Mock server
https://docs.hubbyesim.com/_mock/apis/v1_3_2/openapi/
Production server - Use this for live applications
https://api.hubbyesim.com/api/
Staging server - Use this for testing and development
https://api-staging.hubby.dev/api/

Booking

Operations

Package

Operations

Country

Operations

PromoCode

Operations

eSIM

Operations

Top-up an eSIM

Request

Top-up an eSIM using a package ID and ICCID

Bodyapplication/jsonrequired
packageIdstringrequired

The ID of the package to be used for the top-up.

iccidstringrequired

The ICCID of the eSIM to top-up.

isAndroidbooleanrequired

Whether the device is Android or not.

curl -i -X POST \
  https://docs.hubbyesim.com/_mock/apis/v1_3_2/openapi/api/esims/topUp \
  -H 'Content-Type: application/json' \
  -d '{
    "packageId": "string",
    "iccid": "string",
    "isAndroid": true
  }'

Responses

eSIM top-up successful

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "eSIM top-up successful"
dataobject

Information related to the eSIM top-up

Response
application/json
{ "success": true, "message": "eSIM top-up successful", "data": { "packageId": "string", "iccid": "string", "status": "string", "dataUsageRemainingInBytes": 0, "dateActivated": "2019-08-24T14:15:22Z", "dateTerminated": "2019-08-24T14:15:22Z", "dateExpiry": "2019-08-24T14:15:22Z", "packageTypeId": "string", "timeAllowanceInSeconds": 0 } }

Get eSIM data usage

Request

Retrieves data usage information for a specific eSIM

Path
iccidstringrequired

The ICCID of the eSIM to retrieve data usage for

curl -i -X GET \
  'https://docs.hubbyesim.com/_mock/apis/v1_3_2/openapi/api/esims/data-usage/{iccid}'

Responses

Successful data usage retrieval

Bodyapplication/json
successboolean
Example: true
messagestring
Example: "eSIM data usage retrieved successfully"
dataobject
Response
application/json
{ "success": true, "message": "eSIM data usage retrieved successfully", "data": { "total_data": 1073741824, "data_left": 536870912, "data_used": 536870912, "last_updated": "2023-06-15T10:30:00Z", "status": "ACTIVE" } }