Get a reseller
Return a single reseller by numeric ID. The billing snapshot is embedded, so a follow-up call to GET /resellers/{id}/billing is not needed unless you specifically want the compact billing-only shape.
The response includes member_group_name, which the list endpoint also returns and which is stable across calls. That means a UI can render the group label directly without a second lookup against the panel's member-groups list.
Endpoint
GET https://<your-panel-domain>/panel-api/v1/resellers/{id}
Authentication
Send the API key in the Authorization: Bearer <your-api-key> header. Only admin keys can call this endpoint. Reseller keys never receive the resellers:read scope at issuance time, so the request is rejected with insufficient_scope.
Required scope
resellers:read
Path parameters
| Name | Type | Description |
|---|---|---|
id |
int | The reg-user ID of the reseller. This is the value that appears as id in the list response and as owner_id on child rows. |
Response
The response is a flat object. billing is the standard shape used everywhere else in the API (see the Get billing page for a full description).
active_users inside billing is populated only when the reseller is in users mode. For credits-mode resellers it is null.
{
"id": 262260,
"username": "reseller_new",
"email": "reseller_new@example.com",
"member_group_id": 4,
"member_group_name": "RESELLER",
"status": 1,
"billing": {
"mode": "credits",
"credits": 10,
"max_users": null,
"active_users": null,
"billing_expires": null
}
}
Examples
cURL
curl -H "Authorization: Bearer <your-api-key>" \
https://<your-panel-domain>/panel-api/v1/resellers/262260
PHP SDK
require __DIR__ . '/api-panel-php-sdk-1.0.0/autoload.php';
use XtreamAI\PanelApi\PanelApiClient;
$client = new PanelApiClient(baseUrl: 'https://<your-panel-domain>', token: '<your-api-key>');
$reseller = $client->resellers->get(262260);
echo $reseller->username, ' ', $reseller->billing?->credits, PHP_EOL;
Python SDK
from xtream_ai_panel_api import PanelApiClient
client = PanelApiClient(base_url="https://<your-panel-domain>", token="<your-api-key>")
reseller = client.resellers.get(262260)
print(reseller.username, reseller.billing.credits if reseller.billing else None)
Errors
| HTTP | Error slug | When it happens | How to fix |
|---|---|---|---|
| 401 | invalid_key |
Missing, malformed, or unknown API key. | Send a live key in Authorization: Bearer <token>. |
| 403 | insufficient_scope |
The key does not carry resellers:read. Reseller keys always land here because the scope is admin-only. |
Use an admin key. |
| 404 | not_found |
No reseller exists with that ID. | Look the ID up via GET /resellers?username=<name> if you have the username, or via the list endpoint. |
| 429 | rate_limited |
The per-key request budget for this minute is spent. | Back off and retry after the minute rolls over. |