---
title: "Get a reseller"
description: "Return one reseller by numeric ID, with the current billing snapshot embedded."
---

# 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](/docs/?page=xai-ref-resellers-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`.

```json
{
  "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

```bash
curl -H "Authorization: Bearer <your-api-key>" \
  https://<your-panel-domain>/panel-api/v1/resellers/262260
```

### PHP SDK

```php
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

```python
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. |

## See also

- [List resellers](/docs/?page=xai-ref-resellers-list)
- [Update a reseller](/docs/?page=xai-ref-resellers-update)
- [Get billing](/docs/?page=xai-ref-resellers-billing)
