openapi: 3.1.0 info: title: Reloadly Airtime Authentication Products API description: The Reloadly Airtime API enables businesses to programmatically deliver mobile airtime top-ups and data bundles to phones across 170+ countries and 800+ mobile operators. The API supports both operator-specific and auto-detect top-ups, with real-time fulfillment and detailed transaction reporting. Authentication uses OAuth 2.0 client credentials with separate sandbox and production environments. version: 1.0.0 contact: name: Reloadly Support url: https://support.reloadly.com termsOfService: https://www.reloadly.com/terms servers: - url: https://topups.reloadly.com description: Production Server - url: https://topups-sandbox.reloadly.com description: Sandbox Server security: - bearerAuth: [] tags: - name: Products description: Browse and search the gift card product catalog. paths: /products: get: operationId: listProducts summary: List Products description: Retrieve a paginated list of available gift card products. Supports filtering by country, currency, and product category. Returns brand details, denominations, discount rates, and redemption instructions. tags: - Products parameters: - $ref: '#/components/parameters/PageParam' - $ref: '#/components/parameters/SizeParam' - name: countryCode in: query description: Filter by ISO 3166-1 alpha-2 country code schema: type: string example: US - name: currencyCode in: query description: Filter by ISO 4217 currency code schema: type: string example: USD - name: includeRange in: query description: Include range-denomination products schema: type: boolean - name: includeFixed in: query description: Include fixed-denomination products schema: type: boolean responses: '200': description: Paginated list of gift card products content: application/json: schema: $ref: '#/components/schemas/ProductsPage' '401': $ref: '#/components/responses/Unauthorized' /products/{productId}: get: operationId: getProduct summary: Get Product description: Retrieve full details for a specific gift card product including available denominations, discount rate, redemption instructions, supported countries, and brand information. tags: - Products parameters: - name: productId in: path required: true description: Unique identifier of the gift card product schema: type: integer responses: '200': description: Gift card product details content: application/json: schema: $ref: '#/components/schemas/Product' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: RedeemInstruction: type: object properties: concise: type: string description: Brief redemption instructions verbose: type: string description: Detailed redemption instructions ProductsPage: type: object properties: content: type: array items: $ref: '#/components/schemas/Product' totalElements: type: integer totalPages: type: integer last: type: boolean number: type: integer size: type: integer Country: type: object properties: isoName: type: string description: ISO 3166-1 alpha-2 country code name: type: string description: Country display name flagUrl: type: string format: uri description: URL to the country flag image Brand: type: object properties: brandId: type: integer description: Unique brand identifier brandName: type: string description: Brand display name (e.g., Amazon, Apple, Netflix) Error: type: object properties: timeStamp: type: string format: date-time message: type: string path: type: string errorCode: type: string infoLink: type: string Product: type: object properties: productId: type: integer description: Unique product identifier productName: type: string description: Display name of the gift card product global: type: boolean description: Whether the product is redeemable globally supportsPreOrder: type: boolean description: Whether pre-ordering is supported senderFee: type: number format: double description: Fee charged to the sender discountPercentage: type: number format: double description: Discount percentage applied to the face value denominationType: type: string enum: - FIXED - RANGE description: Whether the product has fixed or range denominations recipientCurrencyCode: type: string description: Currency code for the recipient minRecipientDenomination: type: number description: Minimum denomination for range products maxRecipientDenomination: type: number description: Maximum denomination for range products senderCurrencyCode: type: string description: Currency code for the sender minSenderDenomination: type: number description: Minimum sender denomination for range products maxSenderDenomination: type: number description: Maximum sender denomination for range products fixedRecipientDenominations: type: array items: type: number description: Available fixed denomination amounts for the recipient fixedSenderDenominations: type: array items: type: number description: Available fixed denomination amounts for the sender brand: $ref: '#/components/schemas/Brand' country: $ref: '#/components/schemas/Country' redeemInstruction: $ref: '#/components/schemas/RedeemInstruction' responses: Unauthorized: description: Missing or invalid authentication token content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Requested resource not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: PageParam: name: page in: query description: Page number (1-based) schema: type: integer minimum: 1 default: 1 SizeParam: name: size in: query description: Number of results per page schema: type: integer minimum: 1 maximum: 200 default: 25 securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: OAuth 2.0 bearer token obtained via the /oauth/token endpoint using client credentials grant. externalDocs: description: Reloadly Airtime API Reference url: https://docs.reloadly.com/airtime