Here's the full API documentation for the frontend: Package APIs (Updated) 1. Create Package POST api/package/create Request: { "name": "Premium Plan", "description": "Full access package", "price": 999.99, "duration_in_days": 30, "number_of_requests": 1000, "search_balance": 500, "social_listening_balance": 300, "lookalike_balance": 100, "mynetwork_balance": 200, "campaign_balance": 50, "competitor_analysis_balance": 75, "is_active": true, "platforms": [ { "platform_id": 1, "multiplier": 1.0, "limits": { "influencers": 100, "campaigns": 10, "reports": 50, "tracked_content": 200 }, "features": [ { "feature_key": "search", "is_enabled": true }, { "feature_key": "reports", "is_enabled": true } ], "filters": [ { "filter_key": "country", "is_enabled": true }, { "filter_key": "gender", "is_enabled": true } ] } ] } Notes on balance fields: number_of_requests — required, integer, min 0 search_balance — optional, integer, min 0, defaults to 0 social_listening_balance — optional, integer, min 0, defaults to 0 lookalike_balance — optional, integer, min 0, defaults to 0 mynetwork_balance — optional, integer, min 0, defaults to 0 campaign_balance — optional, integer, min 0, defaults to 0 competitor_analysis_balance — optional, integer, min 0, defaults to 0 2. Update Package POST api/package/update Request: { "id": 12, "name": "Premium Plan Updated", "description": "Updated description", "price": 1299.99, "duration_in_days": 45, "number_of_requests": 1500, "search_balance": 800, "social_listening_balance": 400, "lookalike_balance": 150, "mynetwork_balance": 300, "campaign_balance": 100, "competitor_analysis_balance": 100, "is_active": true } 3. List Packages GET api/package/all 4. Show Package GET api/package/show?id=12 5. Delete Package POST api/package/destroy — body: {"id": 12} Response format (for list, show, create, update): { "status": true, "message": "Success", "data": { "id": 12, "name": "Premium Plan", "description": "Full access package", "price": 999.99, "duration_in_days": 30, "number_of_requests": 1000, "search_balance": 500, "social_listening_balance": 300, "lookalike_balance": 100, "mynetwork_balance": 200, "campaign_balance": 50, "competitor_analysis_balance": 75, "is_active": true, "created_by": 181, "created_at": "2026-04-08 13:45:00", "updated_at": "2026-04-08 13:45:00", "platforms": [ { "id": 1, "platform_id": 1, "platform_name": "Instagram", "multiplier": 1.0, "is_enabled": true, "limits": { "influencers": 100, "campaigns": 10, "reports": 50, "tracked_content": 200 }, "features": [ { "feature_key": "search", "is_enabled": true } ], "filters": [ { "filter_key": "country", "is_enabled": true } ] } ] } } How It Works When the admin creates a package with custom balances and a client subscribes to it (via POST api/subscription/subscribe), the system automatically credits all 7 balance types to the client's account based on what was configured in the package. The same applies when: A client upgrades (POST api/subscription/upgrade) An admin assigns a package to a user (POST api/admin/users/update/{id} with package_id) An admin creates a new user with a package (POST api/admin/users/create with package_id)