> For the complete documentation index, see [llms.txt](https://docs.papelship.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.papelship.com/qpapel-web-api-reference/reseller-keys.md).

# Reseller Keys

Multi-seat reseller key creation, extension, duration freeze, and license allocation.

## List Reseller Keys

> Retrieve all reseller keys managed under the authenticated developer account.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"ResellerKey":{"type":"object","properties":{"id":{"type":"integer"},"key_value":{"type":"string"},"status":{"type":"string"},"user_id":{"type":"integer"},"max_uses":{"type":"integer"},"used_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/reseller/keys":{"get":{"tags":["Reseller Keys"],"summary":"List Reseller Keys","description":"Retrieve all reseller keys managed under the authenticated developer account.","operationId":"listResellerKeys","responses":{"200":{"description":"Successful retrieval of reseller keys.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"keys":{"type":"array","items":{"$ref":"#/components/schemas/ResellerKey"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Create Reseller Key

> Issue an access key allocated to an authorized reseller account.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"responses":{"BadRequestError":{"description":"Invalid request body or query parameter structure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}},"schemas":{"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}},"paths":{"/reseller/keys":{"post":{"tags":["Reseller Keys"],"summary":"Create Reseller Key","description":"Issue an access key allocated to an authorized reseller account.","operationId":"createResellerKey","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["product_id","reseller_id","days"],"properties":{"product_id":{"type":"integer","description":"Product ID linked to the reseller entitlement."},"reseller_id":{"type":"integer","description":"Internal User ID of the reseller."},"days":{"type":"integer","description":"Validity duration in days."}}}}}},"responses":{"200":{"description":"Reseller key created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"key":{"type":"string"},"id":{"type":"integer"}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Get Single Reseller Key

> Retrieve details for a specific reseller key by database ID.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"ResellerKey":{"type":"object","properties":{"id":{"type":"integer"},"key_value":{"type":"string"},"status":{"type":"string"},"user_id":{"type":"integer"},"max_uses":{"type":"integer"},"used_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFoundError":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/reseller/keys/{id}":{"get":{"tags":["Reseller Keys"],"summary":"Get Single Reseller Key","description":"Retrieve details for a specific reseller key by database ID.","operationId":"getResellerKey","parameters":[{"name":"id","in":"path","required":true,"description":"Unique ID of the reseller key.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Reseller key details retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"key":{"$ref":"#/components/schemas/ResellerKey"}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}}}}
```

## Delete Reseller Key

> Permanently remove a reseller key.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StandardSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFoundError":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/reseller/keys/{id}":{"delete":{"tags":["Reseller Keys"],"summary":"Delete Reseller Key","description":"Permanently remove a reseller key.","operationId":"deleteResellerKey","parameters":[{"name":"id","in":"path","required":true,"description":"Unique ID of the reseller key.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Reseller key deleted successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardSuccessResponse"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}}}}
```

## Update Reseller Key Ban Status

> Ban or unban a reseller license key.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StandardSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"BadRequestError":{"description":"Invalid request body or query parameter structure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/reseller/keys/{id}/ban":{"post":{"tags":["Reseller Keys"],"summary":"Update Reseller Key Ban Status","description":"Ban or unban a reseller license key.","operationId":"setResellerKeyBan","parameters":[{"name":"id","in":"path","required":true,"description":"Unique ID of the reseller key.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["is_banned"],"properties":{"is_banned":{"type":"boolean","description":"True to ban the key, false to unban."}}}}}},"responses":{"200":{"description":"Ban status updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardSuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Extend Reseller Key

> Append additional validity days to a reseller key.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StandardSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"BadRequestError":{"description":"Invalid request body or query parameter structure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/reseller/keys/{id}/extend":{"post":{"tags":["Reseller Keys"],"summary":"Extend Reseller Key","description":"Append additional validity days to a reseller key.","operationId":"extendResellerKey","parameters":[{"name":"id","in":"path","required":true,"description":"Unique ID of the reseller key.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["days"],"properties":{"days":{"type":"integer","minimum":1,"description":"Number of days to extend."}}}}}},"responses":{"200":{"description":"Reseller key extended.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardSuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Toggle Reseller Key Freeze

> Freeze or unfreeze duration countdown for a reseller key.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StandardSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"BadRequestError":{"description":"Invalid request body or query parameter structure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/reseller/keys/{id}/freeze":{"post":{"tags":["Reseller Keys"],"summary":"Toggle Reseller Key Freeze","description":"Freeze or unfreeze duration countdown for a reseller key.","operationId":"toggleResellerKeyFreeze","parameters":[{"name":"id","in":"path","required":true,"description":"Unique ID of the reseller key.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["is_frozen"],"properties":{"is_frozen":{"type":"boolean","description":"True to freeze countdown, false to unfreeze."}}}}}},"responses":{"200":{"description":"Freeze status updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardSuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Reset Reseller Key HWID

> Reset hardware identification lock for a reseller key.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Reseller Keys","description":"Multi-seat reseller key creation, extension, duration freeze, and license allocation."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StandardSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFoundError":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/reseller/keys/{id}/reset-hwid":{"post":{"tags":["Reseller Keys"],"summary":"Reset Reseller Key HWID","description":"Reset hardware identification lock for a reseller key.","operationId":"resetResellerKeyHwid","parameters":[{"name":"id","in":"path","required":true,"description":"Unique ID of the reseller key.","schema":{"type":"integer"}}],"responses":{"200":{"description":"HWID reset successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardSuccessResponse"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}}}}
```
