API product
White Label Reseller API
Separate reseller operations using the implemented member-based workflow.
Audited route registry
The endpoint list below is generated from the existing typed documentation registry and validated against implemented server sources.
Product-specific contract
Authentication, route prefix, request fields, response shape, and permissions remain separate from the other API products.
Endpoint reference
Base URL: https://api.sparkglim.net
Existing authenticated SparkGlim session via requireAuth. This is not HMAC white-label v1 authentication.
/api/white-label/portal/resellerLoad reseller console
Loads reseller console data for the signed-in user.
Authentication: Authenticated SparkGlim session
| Field | Location / type | Requirement |
|---|---|---|
AuthorizationExisting authenticated SparkGlim user session. The server reads req.auth.userId. | header Bearer session token | Required |
Success · HTTP 200
{
"success": true,
"data": { "profile": {}, "members": [], "invitations": [] }
}Error response shape
{
"success": false,
"error": "Invalid reseller member payload"
}/api/white-label/portal/reseller/profileUpdate reseller profile
Updates reseller profile settings such as status, risk level, approval requirements, public signup, and settings.
Authentication: Authenticated SparkGlim session
| Field | Location / type | Requirement |
|---|---|---|
AuthorizationExisting authenticated SparkGlim user session. The server reads req.auth.userId. | header Bearer session token | Required |
statusReseller profile status. | body draft | enabled | suspended | disabled | Optional |
requireSubCreatorApprovalWhether sub-creator approval is required. | body boolean | Optional |
allowPublicSignupWhether public signup is enabled. | body boolean | Optional |
Success · HTTP 200
{
"success": true,
"data": { "status": "enabled" }
}Error response shape
{
"success": false,
"error": "Invalid reseller member payload"
}/api/white-label/portal/reseller/membersCreate reseller relationship record
Adds the member through the SparkGlim creator team flow, then stores the white-label reseller relationship link.
Authentication: Authenticated SparkGlim session
| Field | Location / type | Requirement |
|---|---|---|
AuthorizationExisting authenticated SparkGlim user session. The server reads req.auth.userId. | header Bearer session token | Required |
userIdOptional linked existing user ID. | body uuid | null | Optional |
creatorIdCreator account whose SparkGlim team should receive this member. Defaults to the reseller owner creator where available. | body uuid | null | Optional |
memberTypeMember type. | body owner | operator | finance | support | sub_creator | Optional |
displayNameDisplay name. | body string | Optional |
rolesReseller roles. | body role[] | Optional |
permissionsCapability list. | body capability[] | Optional |
Success · HTTP 201
{
"success": true,
"data": { "id": "member_id", "status": "pending" }
}Error response shape
{
"success": false,
"error": "Invalid reseller member payload"
}The server writes the member to public.organizer_teams so organizer OTP/login and team permissions use the same SparkGlim creator team model.
The white_label.reseller_members row is retained as the reseller relationship and oversight link.
/api/white-label/portal/reseller/members/:memberIdUpdate reseller relationship record
Partially updates the white-label reseller relationship and syncs the linked SparkGlim creator team member where applicable.
Authentication: Authenticated SparkGlim session
| Field | Location / type | Requirement |
|---|---|---|
AuthorizationExisting authenticated SparkGlim user session. The server reads req.auth.userId. | header Bearer session token | Required |
memberIdMember ID. | path uuid | Required |
Success · HTTP 200
{
"success": true,
"data": { "id": "member_id" }
}Error response shape
{
"success": false,
"error": "Invalid reseller member payload"
}/api/white-label/portal/reseller/approval-requestsCreate approval request
Creates a reseller approval request for implemented entities such as member, campaign, withdrawal, payout, payment_method, ussd, provider, or setting.
Authentication: Authenticated SparkGlim session
| Field | Location / type | Requirement |
|---|---|---|
AuthorizationExisting authenticated SparkGlim user session. The server reads req.auth.userId. | header Bearer session token | Required |
entityTypeEntity type. | body member | campaign | withdrawal | payout | payment_method | ussd | provider | setting | Required |
reasonReason for review. | body string | null | Optional |
requestPayloadRequest payload. | body object | Optional |
Success · HTTP 201
{
"success": true,
"data": { "id": "request_id", "status": "pending" }
}Error response shape
{
"success": false,
"error": "Invalid reseller member payload"
}/api/white-label/portal/reseller/otp/sendSend reseller OTP
Creates a reseller OTP challenge for login, signup, withdrawal approval, payment method verification, or campaign approval.
Authentication: Authenticated SparkGlim session
| Field | Location / type | Requirement |
|---|---|---|
AuthorizationExisting authenticated SparkGlim user session. The server reads req.auth.userId. | header Bearer session token | Required |
channelDelivery channel. | body sms | email | whatsapp | Required |
recipientRecipient address or number. | body string | Required |
purposeOTP purpose. | body login | signup | withdrawal_approval | payment_method_verification | campaign_approval | Required |
Success · HTTP 201
{
"success": true,
"data": { "challengeId": "challenge_id" }
}Error response shape
{
"success": false,
"error": "Invalid reseller member payload"
}