> ## Documentation Index
> Fetch the complete documentation index at: https://developers.soax.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rotate package password

> Generate a new package password (the 10-character key used to authenticate proxy requests — not the API key). The old password stops working immediately, so update every client that connects through this package. The new plaintext password is returned only in this response.

Returns 400 if the package is deleted or suspended.

Requires the `proxy:packages:write` scope.



## OpenAPI

````yaml api/openapi.json POST /v1/proxy/packages/{package_id}/rotate-password
openapi: 3.1.0
info:
  title: SOAX API
  version: v1
  description: >-
    Programmatic access to your SOAX account: manage proxy packages, generate
    connection strings, browse available locations, pull usage analytics, and
    manage API keys. All endpoints are served over HTTPS and return JSON.
servers:
  - url: https://api.platform.soax.com
security:
  - bearerAuth: []
tags:
  - name: API Keys
    description: >-
      Self-service management of the API keys used to authenticate with this
      API.
  - name: Packages
    description: >-
      Read proxy packages, build proxy connection strings, and rotate package
      passwords.
  - name: Locations
    description: >-
      Location reference data: tiers, countries, regions, cities, ISPs, ASNs,
      and ZIP codes.
  - name: Account
    description: Read-only account, credit, and subscription information.
  - name: Analytics
    description: Usage analytics for your proxy packages.
paths:
  /v1/proxy/packages/{package_id}/rotate-password:
    post:
      tags:
        - Packages
      summary: Rotate proxy package password
      description: >-
        Generate a new package password (the 10-character key used to
        authenticate proxy requests — not the API key). The old password stops
        working immediately, so update every client that connects through this
        package. The new plaintext password is returned only in this response.


        Returns 400 if the package is deleted or suspended.


        Requires the `proxy:packages:write` scope.
      operationId: >-
        rotate_proxy_package_password_v1_proxy_packages__package_id__rotate_password_post
      parameters:
        - name: package_id
          in: path
          required: true
          schema:
            type: string
            description: The package ID
            title: Package Id
          description: The package ID
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PackagePasswordResponse'
              example:
                password: xK9mP2qR5t
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenScope'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    PackagePasswordResponse:
      properties:
        password:
          type: string
          title: Password
          description: The newly generated plaintext password/key
      type: object
      required:
        - password
      title: PackagePasswordResponse
      description: Response schema for password rotation endpoint.
      example:
        password: a1b2c3d4e5
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  responses:
    BadRequest:
      description: >-
        A parameter value is invalid. Depending on which validation layer
        rejects the request, the message is under `detail` (endpoint-level
        checks) or `error` (service-level checks); read `detail ?? error`. The
        message names the parameter and lists valid values where applicable.
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
              error:
                type: string
          example:
            detail: >-
              Invalid status value: archived. Valid values are: active, deleted,
              limited, paused, suspended
    Unauthorized:
      description: Missing, invalid, or revoked API key.
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
          example:
            detail: Invalid API key
    ForbiddenScope:
      description: The API key does not carry the scope this endpoint requires.
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
          example:
            detail: 'Missing required scope: proxy:packages:read'
    NotFound:
      description: >-
        The resource does not exist, belongs to another organization, or is
        outside the API key's package restriction.
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
          example:
            detail: Package not found
    RateLimited:
      description: >-
        Rate limit exceeded (5 requests/second per API key, 500 requests/minute
        per IP). The response includes `Retry-After` (seconds),
        `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` (Unix
        time) headers — wait `Retry-After` seconds and retry.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
          example:
            error: 'Rate limit exceeded: 5 per 1 second'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key secret (starts with `s_live_`). Create keys in the dashboard
        under **Settings → API keys**, or via `POST /v1/api-keys/`. Send it as
        `Authorization: Bearer <secret>`.

````