Reseller API — Managing Customers
Customers you create through the API belong to you. They are invisible to every other reseller, and you are the only party that can order services for them or reset their password.
You may create, edit, suspend and reactivate a customer. You cannot delete one — a user with live services and invoices has to be removed by CDNShark support, which prevents orphaned infrastructure.
Create a customer
curl -X POST "https://cdnshark.com/api/reseller/customers" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"firstname": "Jane",
"lastname": "Doe",
"email": "jane@example.com",
"password": "a-strong-password",
"country": "US"
}'
Returns 201 with the new customer. Store the id — every ordering call references it.
{
"id": 4210,
"firstname": "Jane",
"lastname": "Doe",
"email": "jane@example.com",
"status": 1,
"created_at": "2026-08-01T09:14:22+00:00"
}
Emails are unique platform-wide. If the address already exists you receive 422.
List and search
GET /api/reseller/customers?search=jane&per_page=50
Results are paginated. search matches email, first name and last name.
Update a customer
curl -X PUT "https://cdnshark.com/api/reseller/customers/4210" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"phone": "+1-555-0100", "city": "Austin"}'
Only the fields you send are changed. A customer's role and ownership can never be changed through this API.
Reset a password
PUT /api/reseller/customers/4210/password
{"password": "a-new-strong-password"}
If you would rather not handle their password at all, use delegated login to drop them straight into their portal instead.
Suspend and reactivate
POST /api/reseller/customers/4210/suspend
POST /api/reseller/customers/4210/unsuspend
Suspending a customer blocks their portal login but leaves their services running. Use it for a non-paying customer you expect to recover. To actually stop delivery, suspend the individual services as well — see the ordering guide.