Veloxiom API Reference
Complete REST API documentation for the Veloxiom ISP Management Platform. Manage customers, billing, network, and integrations programmatically.
API Sections
🔐 Authentication
Veloxiom exposes two distinct surfaces. Choose the right one for your integration:
- REST API v1 — the public, programmatic API at
/api/v1.php. Authenticated with a scoped API token (Bearer). This is what third-party integrations should use. - Panel / Mobile actions — the action-based endpoints at
/mikrotik/process.phpused internally by the admin panel and mobile apps. These require an authenticated admin session cookie (or a mobile app token) plus a CSRF token — they are not a Bearer API.
API Tokens (REST API v1)
Create scoped tokens in the panel under Admin → API & Webhooks. Each token is shown once (only a SHA-256 hash is stored), carries per-module scopes, supports an expiry, and can be revoked. A token is tenant-scoped — it only ever sees its own tenant's data.
Token Scopes
Each token grants per-module access at level none / view / write (write implies view). Endpoints require a specific scope; insufficient scope returns HTTP 403.
| Scope module | Grants access to |
|---|---|
| customers | Customers / subscribers |
| plans | Service plans |
| billing | Invoices & billing |
| routers | Network devices / routers |
| monitoring | Monitoring data (can also read routers) |
| crm | Tickets & messaging (write required to send) |
2FA (Two-Factor Authentication)
🔌 REST API v1 (Token)
The public read-first REST API. Send a GET with ?resource=<name> and a Bearer token. Responses are JSON with a top-level ok flag; list resources also return count and data. All queries use prepared statements and never expose passwords or router secrets.
Read Resources (GET)
{ok, pong, ts}.username, name, email, phone. Supports q, limit, offset.username, profile, rate_limit, meta{} (password/secret meta stripped).id, name, rate_limit, price.status, q. Fields: id, number, customer, username, total, status, issue_date.id, name, ip, hostname, site, role, health.q. Fields: id, subject, customer, status, priority, created_at, updated_at.direction, channel, phone.Mutations (POST)
channel (default sms), to, text (or body), username. Emits the message.sent webhook.Common Query Parameters
| Parameter | Type | Description |
|---|---|---|
| resource / r | string | Resource name (see list above) |
| limit | int | Page size, 1–500 (default 100) |
| offset | int | Row offset for pagination (default 0) |
| q | string | Free-text search (customers/invoices/tickets) |
Errors
| HTTP | Body | Meaning |
|---|---|---|
| 401 | {"ok":false,"error":"unauthorized"} | Missing/invalid/revoked/expired token |
| 403 | {"ok":false,"error":"insufficient_scope","need":"module:level"} | Token lacks the required scope |
| 404 | {"ok":false,"error":"unknown_resource"} | No such resource |
| 400 | {"ok":false,"error":"unknown_action"} | Unknown POST action / missing required param |
| 429 | {"ok":false,"error":"rate_limited"} | Rate limit exceeded (120 req/min per token) |
Envelope, Pagination & Request IDs
| Field | Description |
|---|---|
ok | Always present. true on success, false on error. |
data | The payload (array for lists, object for single resources). |
count | Number of rows in the current response. |
pagination | limit, offset, total, has_more, next_offset — on list resources. |
meta.request_id | Per-call id, also returned as the X-Request-Id header (quote it in bug reports). |
Errors stay flat for backward compatibility ({ok:false,error:"…"}). Send envelope=2 for a structured error: {ok:false,error:{code,message,details},meta:{request_id}}. Validation failures return 422. Callers still using ?token=… receive Deprecation/Sunset headers — prefer Authorization: Bearer or X-Api-Token.
Field values
invoice.status | unpaid · paid · partial · overdue · cancelled |
message.channel | sms · viber · whatsapp |
Machine-readable spec (OpenAPI)
api/v1.php?resource=openapi returns an OpenAPI 3.0.3 document for your tenant — load it into Postman, Insomnia or a client generator.
👥 Customers / Subscribers (panel/mobile session action)
Manage ISP subscribers — create, edit, delete, and control service status.
Customer Parameters
| Parameter | Type | Description |
|---|---|---|
| username | string | PPPoE/DHCP username (unique) |
| password | string | PPPoE password |
| fullname | string | Customer full name |
string | Email address | |
| phone | string | Phone number |
| plan | string | Service plan name |
| address | string | Installation address |
| afm | string | VAT number (ΑΦΜ) for billing |
| static_ip | string | Static IP assignment (optional) |
| mac_address | string | MAC address for DHCP binding |
📋 Service Plans
Create and manage internet service plans with speed profiles, pricing, and FUP policies.
Plan Parameters
| Parameter | Type | Description |
|---|---|---|
| name | string | Plan name (e.g. 'FTTH 100Mbps') |
| download | string | Download speed (e.g. '100M') |
| upload | string | Upload speed (e.g. '10M') |
| price | float | Monthly price (EUR) |
| burst_limit | string | MikroTik burst limit |
| burst_threshold | string | Burst threshold |
| burst_time | string | Burst time duration |
| priority | int | Queue priority (1-8) |
💰 Billing & Invoicing
Automated billing engine with invoice generation, status tracking, and batch operations.
💳 Payments
Process payments via multiple gateways — DIAS interbank, Revolut, Stripe, Viva Wallet, PayPal.
Supported Payment Gateways
| Gateway | Type | Description |
|---|---|---|
| DIAS | bank | Greek interbank payment system (RF codes) |
| Revolut | online | Online card payments via Revolut Business |
| Stripe | online | International card & subscription payments |
| Viva Wallet | online | Greek/EU card payments |
| PayPal | online | PayPal payments |
📄 e-Invoicing (AADE / myDATA)
Submit invoices electronically to AADE myDATA. Supports multiple e-invoicing providers.
Supported e-Invoicing Providers
| Provider | Status | Description |
|---|---|---|
| myDATA (AADE) | active | Direct AADE API submission |
| Elorus | active | Elorus ERP & e-invoicing platform |
| IMPACT | coming soon | IMPACT e-invoicing provider |
| Primer (Cosmos) | coming soon | Primer/Cosmos e-invoicing |
| Retail@Link | coming soon | Retail@Link e-invoicing |
| Edpsoft | coming soon | Edpsoft e-invoicing |
📡 RADIUS / PPPoE / DHCP
FreeRADIUS integration for PPPoE and DHCP authentication, CoA (Change of Authorization), and session management.
PPPoE/DHCP authentication is fully active. The on-demand session/CoA actions below are on the roadmap and not yet exposed as HTTP actions.
🔧 MikroTik Routers
Manage MikroTik RouterOS devices — add, configure, monitor, and execute API commands.
Router Parameters
| Parameter | Type | Description |
|---|---|---|
| ip | string | Router management IP address |
| name | string | Router display name |
| user | string | RouterOS API username |
| pass | string | RouterOS API password |
| radius_ip | string | RADIUS NAS IP (defaults to management IP) |
| radius_secret | string | RADIUS shared secret |
🌐 Network Settings
🗺️ Topology & Maps
Network topology visualization with 2D/3D maps. Supports multiple monitoring backends.
Supported Monitoring Backends
| Backend | Protocol | Description |
|---|---|---|
| LibreNMS | REST API | Open-source network monitoring |
| Observium | REST API | Network monitoring platform |
| Zabbix | JSON-RPC | Enterprise monitoring solution |
| MikroTik | RouterOS API | Direct router SNMP/API polling |
📦 Device Inventory (IPAM)
IP Address Management and network device inventory with approval workflows.
📊 SNMP Monitoring
Real-time network monitoring via SNMP. Collect bandwidth, latency, and interface metrics from routers and switches.
Monitoring runs via scheduled collectors and Grafana dashboards. The on-demand actions below are on the roadmap and not yet exposed as HTTP actions.
📞 VoIP / Telephony (MOR)
MOR/M2 telephony integration — SIP trunk management, CDR records, tariffs, balance management, and VoIP billing.
🔒 WireGuard VPN
🎫 Helpdesk / Tickets
Customer support ticket system with assignment, priorities, and status tracking.
🤖 AI Assistant
🔔 Notifications
Multi-channel notification system — Telegram, Email, Push notifications.
👤 Admin Management
🏢 Multi-Tenant
Multi-tenant architecture — each tenant is an isolated ISP instance with its own database, domain, branding, and configuration.
Tenant provisioning is a super-admin operation performed from the control panel; it runs the full pipeline (database, schema, RADIUS, WireGuard/NPM, captive portal) internally with rollback on failure.
⚙️ System Settings
🔗 Webhooks
Receive real-time notifications when events occur in Veloxiom. Configure outbound webhooks in the panel under Admin → API & Webhooks. The signing secret (whsec_…) is shown once at creation.
Available Events
| Event | Description |
|---|---|
| message.received | An inbound message (SMS/other channel) arrived |
| message.sent | An outbound message was dispatched (e.g. via API send_message) |
| ping | Test event sent from the admin UI |
| * | Subscribe to all current and future events |
Additional business events (customer.*, invoice.*, ticket.*, router.*) are on the roadmap and not yet emitted.
Delivery & Signature
Each delivery is an HTTPS POST with a JSON body. Verify authenticity with the HMAC-SHA256 signature computed over the raw request body using your webhook secret. Only public HTTPS URLs are accepted (loopback/private/CGNAT ranges are rejected — SSRF protection).
🏗️ ERP Integrations
Connect Veloxiom with your ERP system for synchronized billing, customer data, and financial reporting.
| ERP | Status | Integration Type |
|---|---|---|
| Elorus | active | Full sync — invoices, customers, payments |
| SoftOne | coming soon | REST API integration |
| Epsilon Net | coming soon | REST API integration |
| Entersoft | coming soon | REST API integration |
| Galaxy / Real | coming soon | REST API integration |
| QuickBooks Online | beta | OAuth2 — customers, invoices, payments via sync queue |
| Xero | beta | OAuth2 — customers, invoices, payments via sync queue |
| 1C:Enterprise | beta | OData — customers, invoices, payments via sync queue |
📨 Response Format
All API responses return JSON. Successful operations include ok: true.
⏱️ Rate Limits
| Scope | Limit | Window |
|---|---|---|
| REST API v1 token | 120 requests | per minute, per token (HTTP 429 on excess) |
Need Help?
For API support and custom integration assistance, contact us via the contact form.