> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.streamskill.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# Quote viewers upgrade

> Get the cost of increasing an order's viewer limit. The cost is based on the order's remaining time. This request does not charge your balance or change the order.

`target_viewers` is the new total viewer limit. To increase an order from 100 to 200 viewers, send `200`.

To apply the upgrade, call [Upgrade viewers](/api-reference/endpoints/purchases/actions/upgrade-viewers) with the same `target_viewers` and the returned `amount` as `max_amount`. The final cost is recalculated when you apply the upgrade.


## OpenAPI

````yaml POST /purchases/{orderId}/upgrade-viewers/quote
openapi: 3.0.0
info:
  title: StreamSkill - OpenApi 3.0
  description: ''
  termsOfService: https://streamskill.pro/en/privacy_policy
  version: 1.0.0
  contact:
    email: streamskillpro@gmail.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.streamskill.pro/v1
    description: Production server - v1
security:
  - bearerAuth: []
paths:
  /purchases/{orderId}/upgrade-viewers/quote:
    parameters:
      - name: orderId
        in: path
        required: true
        description: ID of the order to upgrade.
        schema:
          type: integer
          format: int64
          minimum: 1
      - $ref: '#/components/parameters/Accept-Language'
    post:
      summary: Quote viewers upgrade
      description: >-
        Get the cost of increasing an order's viewer limit. The cost is based on
        the order's remaining time. This request does not charge your balance or
        change the order.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeViewersQuoteRequest'
            example:
              target_viewers: 200
      responses:
        '200':
          description: Estimated upgrade cost.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpgradeViewersQuote'
              example:
                to_viewers: 200
                remaining_seconds: 3600
                amount: 12.5
                currency: usd
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/NotAllowed'
        '409':
          $ref: '#/components/responses/PurchaseDone'
        '422':
          $ref: '#/components/responses/validationError'
components:
  parameters:
    Accept-Language:
      name: Accept-Language
      in: header
      required: false
      description: The language of the response
      schema:
        $ref: '#/components/schemas/LanguageObject'
  schemas:
    UpgradeViewersQuoteRequest:
      type: object
      required:
        - target_viewers
      properties:
        target_viewers:
          type: integer
          description: >-
            New total viewer limit. For example, send 200 to increase from 100
            to 200 viewers. Must exceed the current limit and stay within the
            maximum allowed for the order.
          example: 200
    UpgradeViewersQuote:
      type: object
      required:
        - to_viewers
        - remaining_seconds
        - amount
        - currency
      properties:
        to_viewers:
          type: integer
          description: New total viewer limit.
          example: 200
        remaining_seconds:
          type: integer
          minimum: 0
          description: Remaining order time in seconds.
          example: 3600
        amount:
          type: number
          minimum: 0.01
          description: Cost of the upgrade in the returned currency, including discounts.
          example: 12.5
        currency:
          $ref: '#/components/schemas/CurrencyObject'
    LanguageObject:
      type: string
      enum:
        - en
        - ru
      default: en
    CurrencyObject:
      type: string
      enum:
        - usd
        - rub
      example: usd
    ErrorObject:
      type: object
      required:
        - error_code
        - name
        - message
        - code
        - status
        - type
      properties:
        error_code:
          type: string
          description: Error identifier for handling the response in your application.
        name:
          type: string
          description: Localized error message; equal to message.
        message:
          type: string
          description: Localized explanation of the error.
        code:
          type: integer
          description: Error code, usually 0.
        status:
          type: integer
          description: HTTP status code.
        type:
          type: string
          description: Error type.
    ValidationErrorObject:
      allOf:
        - $ref: '#/components/schemas/ErrorObject'
        - type: object
          required:
            - errors
          properties:
            errors:
              type: object
              description: >-
                Validation messages grouped by field name. Nested fields may use
                dot notation, such as ids.0.
              additionalProperties:
                type: array
                items:
                  type: string
  responses:
    NotFound:
      description: The requested resource was not found or is not accessible.
      headers:
        Date:
          $ref: '#/components/headers/Date'
        Server:
          $ref: '#/components/headers/Server'
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Keep-Alive:
          $ref: '#/components/headers/Keep-Alive'
        Connection:
          $ref: '#/components/headers/Connection'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorObject'
          example:
            error_code: not_found
            name: Record not found.
            message: Record not found.
            code: 0
            status: 404
            type: record_not_found_exception
    NotAllowed:
      description: This action is unavailable for the order.
      headers:
        Date:
          $ref: '#/components/headers/Date'
        Server:
          $ref: '#/components/headers/Server'
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Keep-Alive:
          $ref: '#/components/headers/Keep-Alive'
        Connection:
          $ref: '#/components/headers/Connection'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorObject'
          example:
            error_code: not_supported
            name: Action is not available for this order
            message: Action is not available for this order
            code: 0
            status: 405
            type: action_unavailable
    PurchaseDone:
      description: The order is already completed.
      headers:
        Date:
          $ref: '#/components/headers/Date'
        Server:
          $ref: '#/components/headers/Server'
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Keep-Alive:
          $ref: '#/components/headers/Keep-Alive'
        Connection:
          $ref: '#/components/headers/Connection'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorObject'
          example:
            error_code: already_done
            name: Order already completed
            message: Order already completed
            code: 0
            status: 409
            type: purchase_done
    validationError:
      description: Validation Error
      headers:
        Date:
          $ref: '#/components/headers/Date'
        Server:
          $ref: '#/components/headers/Server'
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Keep-Alive:
          $ref: '#/components/headers/Keep-Alive'
        Connection:
          $ref: '#/components/headers/Connection'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorObject'
          example:
            error_code: validation_error
            name: The Channel field is required.
            message: The Channel field is required.
            code: 0
            status: 422
            type: validate_exception
            errors:
              channel:
                - The Channel field is required.
  headers:
    Date:
      schema:
        type: string
        example: Sat, 25 May 2024 23:59:59 GMT
    Server:
      schema:
        type: string
        example: Apache/2.4.38 (Debian)
    Content-Length:
      schema:
        type: integer
        example: '100'
    Keep-Alive:
      schema:
        type: string
        example: timeout=5, max=100
    Connection:
      schema:
        type: string
        example: Keep-Alive
    Content-Type:
      schema:
        type: string
      example: application/json; charset=UTF-8
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.