{
    "openapi": "3.0.3",
    "info": {
        "title": "Altify SMS Hub API",
        "description": "REST API for sending SMS, checking balance, listing Sender IDs, OTP, compose, and campaigns.\n\n## Authentication\nPrefer one of:\n- `Authorization: Bearer YOUR_ACCESS_KEY`\n- `X-Api-Key: YOUR_ACCESS_KEY`\n\nGenerate or rotate your Access Key from the dashboard (**Access Key**). Avoid putting keys in GET query strings.\n\n## Base URL\nAll paths below are relative to `https://www.smshub.altifysolutions.com/api`.\n\n## Downloads\n- OpenAPI: `https://www.smshub.altifysolutions.com/docs/openapi.json`\n- Postman: `https://www.smshub.altifysolutions.com/docs/download/postman.json`",
        "version": "1.0.0",
        "contact": {
            "name": "Altify SMS Hub Support"
        }
    },
    "servers": [
        {
            "url": "https://www.smshub.altifysolutions.com/api",
            "description": "API base"
        }
    ],
    "tags": [
        {
            "name": "Services",
            "description": "TextSMS-compatible send / balance / sender IDs"
        },
        {
            "name": "Account",
            "description": "Balance, contacts, numbers, templates"
        },
        {
            "name": "Messaging",
            "description": "Compose and OTP"
        },
        {
            "name": "Campaigns",
            "description": "Campaign list and create"
        }
    ],
    "components": {
        "securitySchemes": {
            "BearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "AccessKey",
                "description": "Dashboard Access Key"
            },
            "ApiKeyHeader": {
                "type": "apiKey",
                "in": "header",
                "name": "X-Api-Key"
            },
            "ApiKeyQuery": {
                "type": "apiKey",
                "in": "query",
                "name": "api_key",
                "description": "Legacy \u2014 prefer Bearer / X-Api-Key"
            }
        },
        "schemas": {
            "ErrorCode": {
                "type": "object",
                "properties": {
                    "response": {
                        "type": "string",
                        "example": "1003"
                    },
                    "message": {
                        "type": "string"
                    },
                    "success": {
                        "type": "boolean",
                        "example": false
                    }
                }
            },
            "SendSmsResponse": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean"
                    },
                    "messageid": {
                        "type": "integer"
                    },
                    "cost": {
                        "type": "number"
                    },
                    "balance": {
                        "type": "number"
                    },
                    "parts": {
                        "type": "integer"
                    },
                    "currency": {
                        "type": "string",
                        "example": "SMS"
                    },
                    "responses": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "rescode": {
                                    "type": "string"
                                },
                                "messageid": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "security": [
        {
            "BearerAuth": []
        },
        {
            "ApiKeyHeader": []
        }
    ],
    "paths": {
        "/services/sendsms": {
            "post": {
                "tags": [
                    "Services"
                ],
                "summary": "Send a single SMS",
                "operationId": "servicesSendSms",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "message",
                                    "shortcode",
                                    "mobile"
                                ],
                                "properties": {
                                    "apikey": {
                                        "type": "string",
                                        "description": "Access Key (optional if Bearer used)"
                                    },
                                    "partnerID": {
                                        "type": "string",
                                        "description": "Optional partner ID"
                                    },
                                    "message": {
                                        "type": "string"
                                    },
                                    "shortcode": {
                                        "type": "string",
                                        "description": "Approved Sender ID"
                                    },
                                    "mobile": {
                                        "type": "string",
                                        "description": "E.g. 2547XXXXXXXX"
                                    },
                                    "timeToSend": {
                                        "type": "string",
                                        "description": "Optional schedule datetime"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Accepted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SendSmsResponse"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation / send failure",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorCode"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/services/sendbulk": {
            "post": {
                "tags": [
                    "Services"
                ],
                "summary": "Send bulk SMS",
                "operationId": "servicesSendBulk",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "message",
                                    "shortcode",
                                    "mobile"
                                ],
                                "properties": {
                                    "apikey": {
                                        "type": "string"
                                    },
                                    "partnerID": {
                                        "type": "string"
                                    },
                                    "message": {
                                        "type": "string"
                                    },
                                    "shortcode": {
                                        "type": "string"
                                    },
                                    "mobile": {
                                        "type": "string",
                                        "description": "CSV or space-separated numbers"
                                    },
                                    "timeToSend": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Bulk result"
                    },
                    "422": {
                        "description": "Failure"
                    }
                }
            }
        },
        "/services/balance": {
            "get": {
                "tags": [
                    "Services"
                ],
                "summary": "Check wallet balance (services)",
                "operationId": "servicesBalance",
                "parameters": [
                    {
                        "name": "apikey",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "partnerID",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Balance"
                    }
                }
            },
            "post": {
                "tags": [
                    "Services"
                ],
                "summary": "Check wallet balance (POST)",
                "operationId": "servicesBalancePost",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "required": [],
                                "properties": {
                                    "apikey": {
                                        "type": "string"
                                    },
                                    "partnerID": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Balance"
                    }
                }
            }
        },
        "/services/senderids": {
            "get": {
                "tags": [
                    "Services"
                ],
                "summary": "List approved Sender IDs / shortcodes",
                "operationId": "servicesSenderIds",
                "parameters": [
                    {
                        "name": "apikey",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "partnerID",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "shortcodes array"
                    }
                }
            }
        },
        "/services/calculate": {
            "post": {
                "tags": [
                    "Services"
                ],
                "summary": "Calculate SMS parts for a message body",
                "operationId": "servicesCalculate",
                "security": [],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "message"
                                ],
                                "properties": {
                                    "message": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Parts analysis"
                    }
                }
            }
        },
        "/check/balance": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "Check SMS credit balance",
                "operationId": "checkBalance",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "credit"
                    }
                }
            }
        },
        "/sender-id": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "List Sender IDs",
                "operationId": "listSenderIds",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sender ID list"
                    }
                }
            }
        },
        "/contacts": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "List contacts",
                "operationId": "listContacts",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Contacts page"
                    }
                }
            }
        },
        "/contact/details": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "Contact + message history for a number (scoped to your account)",
                "operationId": "contactDetails",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "number",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Contact details"
                    }
                }
            }
        },
        "/customer/number": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "List rented numbers",
                "operationId": "customerNumbers",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "number",
                                "whatsapp"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Numbers"
                    }
                }
            }
        },
        "/sms/template": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "List SMS templates",
                "operationId": "smsTemplates",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Templates"
                    }
                }
            }
        },
        "/sms/template/details": {
            "get": {
                "tags": [
                    "Account"
                ],
                "summary": "SMS template details",
                "operationId": "smsTemplateDetails",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Template"
                    }
                }
            }
        },
        "/otp/message": {
            "post": {
                "tags": [
                    "Messaging"
                ],
                "summary": "Send OTP SMS",
                "operationId": "sendOtp",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "number",
                                    "code"
                                ],
                                "properties": {
                                    "api_key": {
                                        "type": "string"
                                    },
                                    "number": {
                                        "type": "string"
                                    },
                                    "code": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OTP sent"
                    }
                }
            }
        },
        "/sent/compose": {
            "post": {
                "tags": [
                    "Messaging"
                ],
                "summary": "Compose / send (legacy dashboard-compatible)",
                "operationId": "sentCompose",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "from_type",
                                    "body",
                                    "to_numbers"
                                ],
                                "properties": {
                                    "api_key": {
                                        "type": "string"
                                    },
                                    "from_type": {
                                        "type": "string",
                                        "enum": [
                                            "sender_id",
                                            "phone_number",
                                            "whatsapp_number"
                                        ]
                                    },
                                    "sender_id": {
                                        "type": "string"
                                    },
                                    "to_numbers": {
                                        "type": "string"
                                    },
                                    "body": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Compose result (response codes)"
                    }
                }
            }
        },
        "/campaign/list": {
            "get": {
                "tags": [
                    "Campaigns"
                ],
                "summary": "List campaigns",
                "operationId": "campaignList",
                "parameters": [
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Campaigns"
                    }
                }
            }
        },
        "/campaign/store": {
            "post": {
                "tags": [
                    "Campaigns"
                ],
                "summary": "Create campaign",
                "operationId": "campaignStore",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "title",
                                    "to_number",
                                    "template_body"
                                ],
                                "properties": {
                                    "api_key": {
                                        "type": "string"
                                    },
                                    "title": {
                                        "type": "string"
                                    },
                                    "to_number": {
                                        "type": "string"
                                    },
                                    "template_body": {
                                        "type": "string"
                                    },
                                    "start_date": {
                                        "type": "string"
                                    },
                                    "end_date": {
                                        "type": "string"
                                    },
                                    "start_time": {
                                        "type": "string"
                                    },
                                    "end_time": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Created (1022)"
                    }
                }
            }
        },
        "/campaign/statistic/{id}": {
            "get": {
                "tags": [
                    "Campaigns"
                ],
                "summary": "Campaign statistics",
                "operationId": "campaignStatistic",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "api_key",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Stats"
                    }
                }
            }
        }
    }
}