API documentation

How your shop's add-supplier page talks to each supplier. You paste the key generated in Connect a supplier into your shop; your shop calls one endpoint per supplier. Real supplier credentials never reach your code.

1. Get a key + endpoint

In Connect a supplier choose a supplier and generate a key. The portal shows the plain key (once) and the endpoint path. Store the key in your tenant DB, e.g.:

supplier_display_name = "Nexus SMM"
supplier_key         = "supkey_3f9b2c8a71d4e5f6..."   // from this portal
supplier_endpoint    = "https://supplier.licofy.com/supplier/api/nexus-smm/v2"

2. Call the per-supplier endpoint

POST {supplier_endpoint}
Content-Type: application/x-www-form-urlencoded

key=supkey_...&action=services

Supported actions — services, balance, add, status.

sh + key=...&action=services   # list catalog (rate = your portal price)
sh + key=...&action=balance    # wallet balance in this supplier
sh + key=...&action=add&service=12&quantity=100&link=https://facebook.com/post/1
sh + key=...&action=status&order=2019123456

Responses & errors

200 services → [ { "service": 12, "name": "…", "rate": 0.88, "min": 1, "max": 10000 }, … ]
200 balance  → { "balance": 125.0, "currency": "NGN", "access": true, "funded": true }
200 add      → { "order": 2019123456, "total": 88.0 }
401          → { "error": "Invalid or disabled API key." }
403          → { "error": "This key does not belong to the requested supplier." }
422          → { "error": "…", "rule": "low_balance_user" | "low_balance_provider" | "access_denied", "meta": {…} }

access_denied means the user has not funded this supplier up to its minimum top-up. Funds are credited only after a manual bank transfer is verified and approved by the admin at supplier.licofy.com.