# Portal - X-Radius API

> Base URL: https://x-radius.com/api/v1
> Auth: Authorization: Bearer xrt_...  (a manager API token)
> Envelope: {"data": ...}; lists add {"meta":{page,page_size,total,has_next}}
> Errors: {"error":{"code","message","request_id"}} - branch on code, never on message
> Timestamps: yyyy-MM-dd HH:mm:ss, UTC
> Money: a bare JSON number in major units, with an ISO-4217 currency code beside it
> Idempotency: redeem and activate endpoints take a client-supplied request_id (UUID)
>
> This page: https://x-radius.com/docs/api/portal
> Every group: https://x-radius.com/llms.txt

58 endpoints in 1 resource groups. 0 carry a hand-written reference entry with examples; the remaining 58 are generated from the running router and carry method, path, authentication, permission and rate-limit bucket, but no request or response example.

### PATCH /api/v1/portal/account

`PATCH /api/v1/portal/account`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/auto-renew

`POST /api/v1/portal/auto-renew`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### PUT /api/v1/portal/bucket-order

`PUT /api/v1/portal/bucket-order`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/captcha

`GET /api/v1/portal/captcha`

- Authentication: none
- Rate limit bucket: `portal_captcha`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/cards/redeem

`POST /api/v1/portal/cards/redeem`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/change-profile

`POST /api/v1/portal/change-profile`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/config

`GET /api/v1/portal/config`

- Authentication: none

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/credentials

`GET /api/v1/portal/credentials`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/deposit

`POST /api/v1/portal/deposit`

- Authentication: subscriber portal session
- Rate limit bucket: `portal_deposit`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/exchange

`POST /api/v1/portal/exchange`

- Authentication: none
- Rate limit bucket: `portal_exchange`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/extend

`POST /api/v1/portal/extend`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/extensions

`GET /api/v1/portal/extensions`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/extensions/{id}

`GET /api/v1/portal/extensions/{id}`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/guest/context

`GET /api/v1/portal/guest/context`

- Authentication: subscriber portal session
- Rate limit bucket: `portal_guest`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/guest/register

`POST /api/v1/portal/guest/register`

- Authentication: subscriber portal session
- Rate limit bucket: `portal_guest`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/invoices

`GET /api/v1/portal/invoices`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/invoices/{id}

`GET /api/v1/portal/invoices/{id}`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/invoices/{id}/render-data

`GET /api/v1/portal/invoices/{id}/render-data`

- Authentication: subscriber portal session
- Rate limit bucket: `t_heavy`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/join

`POST /api/v1/portal/join`

- Authentication: none
- Rate limit bucket: `portal_join`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/join/context

`GET /api/v1/portal/join/context`

- Authentication: none
- Rate limit bucket: `portal_join`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/ledger

`GET /api/v1/portal/ledger`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/login

`POST /api/v1/portal/login`

- Authentication: none
- Rate limit bucket: `portal_login`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/me

`GET /api/v1/portal/me`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/parental

`GET /api/v1/portal/parental`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/parental/pause

`POST /api/v1/portal/parental/pause`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/parental/pin

`POST /api/v1/portal/parental/pin`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### PUT /api/v1/portal/parental/rules

`PUT /api/v1/portal/parental/rules`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/parental/unlock

`POST /api/v1/portal/parental/unlock`

- Authentication: none
- Rate limit bucket: `portal_parental_unlock`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/password

`POST /api/v1/portal/password`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/payments/gateways

`GET /api/v1/portal/payments/gateways`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/payments/transactions

`GET /api/v1/portal/payments/transactions`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/profiles

`GET /api/v1/portal/profiles`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/purchase

`POST /api/v1/portal/purchase`

- Authentication: subscriber portal session
- Rate limit bucket: `portal_deposit`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### DELETE /api/v1/portal/push-tokens

`DELETE /api/v1/portal/push-tokens`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/push-tokens

`POST /api/v1/portal/push-tokens`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/quota-buckets

`GET /api/v1/portal/quota-buckets`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/quote

`POST /api/v1/portal/quote`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/refresh

`POST /api/v1/portal/refresh`

- Authentication: none
- Rate limit bucket: `portal_refresh`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/renew

`POST /api/v1/portal/renew`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/sessions

`GET /api/v1/portal/sessions`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/signup

`POST /api/v1/portal/signup`

- Authentication: none
- Rate limit bucket: `portal_signup`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/signup/schema

`GET /api/v1/portal/signup/schema`

- Authentication: none

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### DELETE /api/v1/portal/speed

`DELETE /api/v1/portal/speed`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/speed

`GET /api/v1/portal/speed`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### PUT /api/v1/portal/speed

`PUT /api/v1/portal/speed`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/telegram-exchange

`POST /api/v1/portal/telegram-exchange`

- Authentication: none
- Rate limit bucket: `portal_telegram_exchange`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/telegram/link

`GET /api/v1/portal/telegram/link`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/tickets

`GET /api/v1/portal/tickets`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/tickets

`POST /api/v1/portal/tickets`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/tickets/form

`GET /api/v1/portal/tickets/form`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/tickets/{id}

`GET /api/v1/portal/tickets/{id}`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/tickets/{id}/attach

`POST /api/v1/portal/tickets/{id}/attach`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### DELETE /api/v1/portal/tickets/{id}/attachments/{attId}

`DELETE /api/v1/portal/tickets/{id}/attachments/{attId}`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/tickets/{id}/attachments/{attId}

`GET /api/v1/portal/tickets/{id}/attachments/{attId}`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/tickets/{id}/messages

`POST /api/v1/portal/tickets/{id}/messages`

- Authentication: subscriber portal session
- Rate limit bucket: `t_mutate`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/tunnel-identify

`POST /api/v1/portal/tunnel-identify`

- Authentication: none
- Rate limit bucket: `portal_tunnel_identify`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### POST /api/v1/portal/tunnel-tenant

`POST /api/v1/portal/tunnel-tenant`

- Authentication: none
- Rate limit bucket: `portal_tunnel_tenant`

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


### GET /api/v1/portal/usage

`GET /api/v1/portal/usage`

- Authentication: subscriber portal session

_This endpoint has no hand-written reference entry yet. The method, path, authentication, permission and rate limit above are generated from the running router and are accurate; there is no request or response example._


