ResellPortal API
Integrate 26+ white-label services directly into your application. Create clients, provision services, and manage subscriptions programmatically.
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 HeadersX-API-Key: your_api_key X-API-Secret: your_api_secret Content-Type: application/json
Core Resources
{
"success": true,
"balance": 150.00,
"currency": "USD"
}
{
"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
}
}
]
}
{
"success": true,
"clients": [
{
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"created_at": "2025-01-15"
}
]
}
{
"name": "John Doe",
"email": "john@example.com",
"phone": "+1234567890",
"company": "Acme Inc"
}
Response
{
"success": true,
"client_id": 123,
"message": "Client created successfully"
}
Query Parameters: ?status=active (optional)
{
"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.
Query Parameters: ?location=US (optional country code)
{
"success": true,
"packages": [
{
"package_code": "PHAJHEAYP",
"name": "United States 1GB 7Days",
"price": 1.80,
"location": "US"
}
]
}
Query Parameters: ?search=instagram
{
"success": true,
"services": [
{
"service_id": "1234",
"name": "Instagram Followers [Real]",
"rate_per_1000": 2.50
}
]
}
Query Parameters: ?query=mybusiness
{
"success": true,
"results": [
{
"domain": "mybusiness.com",
"available": true,
"price": 27.00
}
]
}
Helper for picking an available phone number before placing a business_phone order.
GET /wp-json/resellportal/v1/business-phone/search?country=US&area_code=212&page_size=30
country ISO-2 country code. Default US. Supported: US, CA, GB, AU.
area_code Digits only, no leading zeros or country code. Examples: 212 (US), 20 (GB London, not 020), 161 (GB Manchester), 2 (AU Sydney). US prefixes 800/833/844/855/866/877/888 are auto-detected as toll-free.
page_size How many numbers to return. Default 30, max 50.
number_type (optional) local or tollfree. Auto-detected from area_code if omitted.
{
"success": true,
"country": "US",
"area_code": "212",
"count": 10,
"numbers": [
{
"number": "+12125550100",
"friendly_name": "(212) 555-0100",
"locality": "New York",
"region": "NY",
"iso_country": "US"
}
]
}
Creating Orders
All orders use POST /orders. The request body changes based on the product_key.
{
"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
}
{
"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"
}
}
Get package_code from GET /esim-packages first.
{
"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"
}
}
{
"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
}
{
"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"
}
}
{
"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
}
Get service_id from GET /smm-services first.
{
"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
}
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
}
{
"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"
}
}
{
"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"
}
{
"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"
}
}
{
"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
}
{
"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"
}
}
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.
{
"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
}
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).
{
"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"
}
}
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.
{
"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 /wp-json/resellportal/v1/services/635Response
{
"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 /wp-json/resellportal/v1/services/635Response
{
"success": true,
"message": "Service deleted successfully"
}
Errors: 404 not_found if the service doesn't belong to the API key holder.
GET /wp-json/resellportal/v1/clients/123Response
{
"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 /wp-json/resellportal/v1/clients/123Response
{
"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.