API Documentation - ResellPortal

ResellPortal API

Integrate 26+ white-label services directly into your application. Create clients, provision services, and manage subscriptions programmatically.

Base URL
https://panel.resellportal.com/wp-json/resellportal/v1/
📌 Get Your API Credentials: Log in to your ResellPortal Panel to access your API Key and API Secret under the API Access section.
📚 Endpoint inventory: The REST API supports the full client/service lifecycle: create clients (POST /clients), place orders (POST /orders for 16 product types), inspect (GET /services/{id}, GET /clients/{id}), and clean up (DELETE /services/{id}, DELETE /clients/{id}). Plus helper endpoints for inventory lookup: GET /esim-packages, GET /smm-services, GET /domain-search, GET /business-phone/search.

Authentication

All API requests require authentication using your API Key and API Secret in the request headers.

Required Headers
X-API-Key: your_api_key
X-API-Secret: your_api_secret
Content-Type: application/json

Core Resources

GET /balance Get your current wallet balance
Response
{
  "success": true,
  "balance": 150.00,
  "currency": "USD"
}
GET /products List all available products and pricing
Response
{
  "success": true,
  "products": [
    {
      "key": "ai_business_tools",
      "name": "AI Business Suite",
      "description": "AI-powered tools for business"
    },
    {
      "key": "vpn",
      "name": "VPN Service",
      "pricing": {
        "monthly": 6.00,
        "annual": 54.00
      }
    }
  ]
}
GET /clients List all your clients
Response
{
  "success": true,
  "clients": [
    {
      "id": 123,
      "name": "John Doe",
      "email": "john@example.com",
      "created_at": "2025-01-15"
    }
  ]
}
POST /clients Create a new client
Request Body
{
  "name": "John Doe",
  "email": "john@example.com",
  "phone": "+1234567890",
  "company": "Acme Inc"
}
Response
{
  "success": true,
  "client_id": 123,
  "message": "Client created successfully"
}
GET /services List all services

Query Parameters: ?status=active (optional)

Response
{
  "success": true,
  "services": [
    {
      "id": 456,
      "client_id": 123,
      "service_type": "web_hosting",
      "status": "active",
      "monthly_cost": 15.00
    }
  ]
}

Helper APIs

Use these endpoints to fetch data needed for creating orders.

GET /esim-packages Search 2000+ E-SIM packages

Query Parameters: ?location=US (optional country code)

Response
{
  "success": true,
  "packages": [
    {
      "package_code": "PHAJHEAYP",
      "name": "United States 1GB 7Days",
      "price": 1.80,
      "location": "US"
    }
  ]
}
GET /smm-services Search 150+ SMM services

Query Parameters: ?search=instagram

Response
{
  "success": true,
  "services": [
    {
      "service_id": "1234",
      "name": "Instagram Followers [Real]",
      "rate_per_1000": 2.50
    }
  ]
}

Creating Orders

All orders use POST /orders. The request body changes based on the product_key.

POST /orders AI Business Tools
Request Body
{
  "client_id": 123,
  "product_key": "ai_business_tools",
  "ai_tools": ["ai_voice_agent", "ai_live_chat_bot"]
}
Response
{
  "success": true,
  "service_id": 456,
  "message": "AI Business Tools activated",
  "tools_activated": ["AI Voice Agent", "AI Live Chat Bot"],
  "amount_charged": 45.00,
  "new_balance": 105.00
}
POST /orders VPN Service
Request Body
{
  "client_id": 123,
  "product_key": "vpn",
  "billing_cycle": "monthly"
}
Response
{
  "success": true,
  "service_id": 597,
  "message": "VPN Service activated successfully",
  "billing_cycle": "monthly",
  "amount_charged": 6.00,
  "new_balance": 144.00,
  "vpn_credentials": {
    "username": "johndoe123",
    "password": "generatedPass"
  }
}
POST /orders E-SIM Data Plans

Get package_code from GET /esim-packages first.

Request Body
{
  "client_id": 123,
  "product_key": "esim",
  "package_code": "PHAJHEAYP"
}
Response
{
  "success": true,
  "service_id": 789,
  "message": "E-SIM activated successfully",
  "package": {
    "name": "United States 1GB 7Days",
    "location": "US"
  },
  "amount_charged": 1.80,
  "esim_details": {
    "qr_code_url": "https://...",
    "iccid": "8901234567890123456"
  }
}
POST /orders Web Hosting (cPanel)
Request Body
{
  "client_id": 123,
  "product_key": "web_hosting",
  "cpanel_username": "clientuser",
  "primary_domain": "clientdomain.com",
  "billing_cycle": "monthly"
}
Response
{
  "success": true,
  "service_id": 635,
  "message": "Web Hosting activated successfully",
  "hosting": {
    "username": "clientuser",
    "domain": "clientdomain.com",
    "password": "generatedPass123"
  },
  "amount_charged": 15.00
}
POST /orders Invoice AI
Request Body
{
  "client_id": 123,
  "product_key": "invoice_ai",
  "subdomain": "clientbrand",
  "business_name": "Acme Corp"
}
Response
{
  "success": true,
  "service_id": 599,
  "message": "Invoice AI activated successfully",
  "portal": {
    "subdomain": "clientbrand",
    "url": "https://clientbrand.invoicepaypro.com",
    "business_name": "Acme Corp"
  },
  "amount_charged": 10.00,
  "client_credentials": {
    "email": "client@example.com",
    "password": "generatedPass123"
  }
}
POST /orders Appointment Booking
Request Body
{
  "client_id": 123,
  "product_key": "appointments",
  "subdomain": "citysalon",
  "business_name": "City Salon"
}
Response
{
  "success": true,
  "service_id": 600,
  "message": "Appointment Booking activated successfully",
  "booking_page": {
    "subdomain": "citysalon",
    "url": "https://citysalon.quickreserve.net",
    "business_name": "City Salon"
  },
  "amount_charged": 20.00
}
POST /orders SMM Services

Get service_id from GET /smm-services first.

Request Body
{
  "client_id": 123,
  "product_key": "smm",
  "service_id": "1234",
  "link": "https://instagram.com/user",
  "quantity": 1000
}
Response
{
  "success": true,
  "service_id": 601,
  "message": "SMM order placed successfully",
  "order": {
    "smm_order_id": "789456",
    "service_name": "Instagram Followers [Real]",
    "quantity": 1000,
    "status": "pending"
  },
  "amount_charged": 2.50
}
POST /orders Domain Registration

Check availability with GET /domain-search first.

Request Body
{
  "client_id": 123,
  "product_key": "domain_registration",
  "domain": "mybusiness.com",
  "ns1": "ns1.hostingprovider.com",
  "ns2": "ns2.hostingprovider.com"
}
Response
{
  "success": true,
  "service_id": 605,
  "message": "Domain mybusiness.com registered successfully",
  "domain": {
    "name": "mybusiness.com",
    "expiration": "2027-01-20 12:00:00",
    "nameservers": {
      "ns1": "ns1.hostingprovider.com",
      "ns2": "ns2.hostingprovider.com"
    }
  },
  "amount_charged": 27.00
}
POST /orders Document Signing Software
Request Body
{
  "client_id": 123,
  "product_key": "docsign",
  "company_name": "Acme Legal Services",
  "billing_cycle": "monthly"
}
Response
{
  "success": true,
  "service_id": 610,
  "message": "Document Signing Software activated",
  "portal": {
    "company_name": "Acme Legal Services",
    "login_url": "https://yourbrand.docsigner.app"
  },
  "amount_charged": 8.00,
  "client_credentials": {
    "email": "client@example.com",
    "password": "generatedPass123"
  }
}
POST /orders CRM System
Request Body
{
  "client_id": 123,
  "product_key": "crm",
  "subdomain": "acmesales",
  "billing_cycle": "monthly"
}
Response
{
  "success": true,
  "service_id": 615,
  "message": "CRM System provisioning started",
  "portal": {
    "subdomain": "acmesales",
    "url": "https://acmesales.crmdesk.net"
  },
  "amount_charged": 15.00,
  "note": "CRM deployment takes ~30 seconds"
}
POST /orders Website Builder
Request Body
{
  "client_id": 123,
  "product_key": "website_builder",
  "billing_cycle": "monthly"
}
Response
{
  "success": true,
  "service_id": 620,
  "message": "Website Builder activated successfully",
  "billing_cycle": "monthly",
  "amount_charged": 10.00,
  "client_credentials": {
    "email": "client@example.com",
    "password": "generatedPass123"
  }
}
POST /orders WordPress Plugin Installer
Request Body
{
  "client_id": 123,
  "product_key": "wp_plugin_installer",
  "plugin_name": "My Custom Tool",
  "description": "Plugin description",
  "author": "Your Company"
}
Response
{
  "success": true,
  "service_id": 625,
  "message": "WordPress Plugin Installer Pack activated",
  "plugin": {
    "name": "My Custom Tool",
    "author": "Your Company",
    "license_key": "RPWPI-A1B2C3D4-E5F6G7H8"
  },
  "amount_charged": 10.00
}
POST /orders Social Media Automation
Request Body
{
  "client_id": 123,
  "product_key": "social_media_automation",
  "billing_cycle": "monthly"
}
Response
{
  "success": true,
  "service_id": 630,
  "message": "Social Media Automation activated",
  "billing_cycle": "monthly",
  "amount_charged": 15.00,
  "credentials": {
    "email": "client@example.com",
    "password": "generatedPass123"
  }
}
POST /orders Business Phone

Dedicated US/CA/UK/AU business number with call forwarding, voicemail, auto-attendant, and AI voice greetings via Twilio. Client receives an email with the assigned number and a portal link to manage forwarding, voicemail, and business hours.

Request Body
{
  "client_id": 123,
  "product_key": "business_phone",
  "phone_number": "+12125550100",
  "billing_cycle": "monthly"
}

phone_number Exact E.164 number to purchase (e.g. +12125550100). Required unless area_code is provided.

area_code Auto-pick the first available number in this area code. Digits only (no leading zeros or country code). Examples: US/CA 212, GB London 20 (not 020), GB Manchester 161, AU Sydney 2. US area codes 800/833/844/855/866/877/888 are treated as toll-free.

country ISO-2 country code. Default US. Supported: US, CA, GB, AU.

billing_cycle monthly, quarterly, biannual, or annual.

Response
{
  "success": true,
  "service_id": 712,
  "message": "Business Phone activated successfully",
  "phone": {
    "number": "+12125550100",
    "twilio_sid": "PN1234567890abcdef",
    "country": "US"
  },
  "billing_cycle": "monthly",
  "amount_charged": 10.00,
  "new_balance": 125.00
}
POST /orders Email Marketing

Email marketing platform with campaigns, automations, opt-in forms, and analytics. Client receives an email with login credentials and the platform URL.

Request Body
{
  "client_id": 123,
  "product_key": "email_marketing",
  "sending_plan": "starter"
}

sending_planrequired Sending volume tier: starter (5K emails), growth (25K), pro (50K), business (100K).

Response
{
  "success": true,
  "service_id": 890,
  "message": "Email Marketing activated successfully",
  "billing_cycle": "monthly",
  "amount_charged": 8.00,
  "new_balance": 92.00,
  "client_credentials": {
    "email": "client@example.com",
    "password": "generatedPass123"
  }
}
POST /orders Cloud Storage

Secure cloud file storage with sharing and collaboration. Client receives an email with login credentials and portal URL, and can also manage all their services from the portal on your storefront.

Request Body
{
  "client_id": 123,
  "product_key": "cloud_storage",
  "storage_plan": "50gb"
}

storage_planrequired Storage tier: 50gb, 100gb, 200gb, 500gb, 1tb, or 2tb.

Response
{
  "success": true,
  "service_id": 710,
  "message": "Cloud Storage activated successfully",
  "storage": {
    "plan": "50 GB",
    "login_url": "https://safefilestorage.net"
  },
  "billing_cycle": "monthly",
  "amount_charged": 3.50,
  "new_balance": 96.50,
  "client_credentials": {
    "email": "client@example.com",
    "password": "generatedPass123"
  }
}

Management

Fetch and delete individual services and clients.

GET /services/{id} Fetch a single service
Request
GET /wp-json/resellportal/v1/services/635
Response
{
  "success": true,
  "service": {
    "id": 635,
    "client_id": 123,
    "client_name": "John Smith",
    "client_email": "john@example.com",
    "service_type": "business_phone",
    "status": "active",
    "billing_cycle": "monthly",
    "monthly_cost": 10.00,
    "next_billing_date": "2026-06-17 04:31:57",
    "deployment_status": "deployed",
    "service_data": {
      "phone_number": "+12125550100",
      "twilio_sid": "PN..."
    },
    "created_at": "2026-05-17 04:31:57"
  }
}
DELETE /services/{id} Cancel and delete a service
Request
DELETE /wp-json/resellportal/v1/services/635
Response
{
  "success": true,
  "message": "Service deleted successfully"
}

Errors: 404 not_found if the service doesn't belong to the API key holder.

GET /clients/{id} Fetch a single client with service stats
Request
GET /wp-json/resellportal/v1/clients/123
Response
{
  "success": true,
  "client": {
    "id": 123,
    "name": "John Smith",
    "email": "john@example.com",
    "phone": "+15551234567",
    "company": "Smith LLC",
    "source": "api",
    "active_services": 3,
    "total_services": 5,
    "total_revenue": 75.00,
    "created_at": "2026-04-12 10:15:32"
  }
}
DELETE /clients/{id} Delete a client
Request
DELETE /wp-json/resellportal/v1/clients/123
Response
{
  "success": true,
  "message": "Client deleted successfully"
}

Constraint: Returns 400 has_services if the client still has any services attached. All services must be deleted first.