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

# List Character Reviews

> This is a preview API and may change. Returns paginated public reviews for a single character.

## Experimental Endpoint

<Warning>
  This is an experimental endpoint and may be subject to change.
</Warning>

## What this returns

This endpoint returns paginated public reviews for a single character.

* Use the `slug` path parameter to identify the character.
* Use `page` and `pageSize` query parameters to paginate through reviews.
* Pagination metadata is returned both in the response body and in the `x-pagination-*` response headers.


## OpenAPI

````yaml GET /characters/{slug}/reviews
openapi: 3.0.0
info:
  description: The Venice.ai API.
  termsOfService: https://venice.ai/legal/tos
  title: Venice.ai API
  version: '20260626.184905'
  x-guidance: >-
    Venice.ai is an OpenAI-compatible inference API supporting text, image,
    audio, and video generation.


    **Authentication options:**

    - API Key: Use Bearer token in Authorization header

    - x402 Wallet: Use USDC credits via EVM or Solana wallet (no account
    required)


    **For x402 wallet access:**

    1. POST /x402/top-up without headers to get payment requirements

    2. Choose one of the returned Base or Solana payment options and sign a USDC
    payment using the x402 SDK

    3. POST /x402/top-up with PAYMENT-SIGNATURE header to add credits

    4. Call any inference endpoint with SIGN-IN-WITH-X header


    **Pricing:** Prepaid credits consumed per request. Check /models for
    available models and their capabilities.
servers:
  - url: https://api.venice.ai/api/v1
security:
  - BearerAuth: []
tags:
  - description: >-
      Generate speech/audio, transcribe audio, and manage asynchronous audio
      generation jobs.
    name: Audio
  - description: >-
      Given a list of messages comprising a conversation, the model will return
      a response. Supports multimodal inputs including text, images, audio
      (input_audio), and video (video_url) for compatible models.
    name: Chat
  - description: List and describe the various models available in the API.
    name: Models
  - description: Generate and manipulate images using AI models.
    name: Image
  - description: Generate videos using AI models.
    name: Video
  - description: List and retrieve character information for use in completions.
    name: Characters
  - description: >-
      Billing and usage analytics. **Beta**: This API is currently in beta and
      may be unstable. Endpoints, request/response schemas, and behavior may
      change without notice.
    name: Billing
  - description: Proxy JSON-RPC requests to blockchain nodes. Billed per credit.
    name: Crypto RPC
  - description: >-
      Wallet-based API access using the x402 protocol. No API key required —
      authenticate with an EVM or Solana wallet.


      **How it works:**

      1. **Authenticate** — Send a `SIGN-IN-WITH-X` header (base64-encoded
      signed SIWX payload) with any request. EVM wallets sign an EIP-4361 SIWE
      message; Solana wallets sign the Solana SIWX message with Ed25519. See the
      `siwx` security scheme for the exact format.

      2. **Top up** — `POST /x402/top-up` without a payment header returns an
      `accepts` array with Base and Solana USDC payment options. Choose one
      entry, sign it using the x402 SDK (`npm install x402`), and re-submit with
      the `PAYMENT-SIGNATURE` header (the legacy `X-402-Payment` and `X-PAYMENT`
      names are also accepted).

      3. **Use any endpoint** — All inference endpoints (chat, image, audio,
      video, embeddings) accept `siwx` as an alternative to `BearerAuth`.
      Charges are deducted from your USDC credit balance.

      4. **Monitor balance** — `GET /x402/balance/{walletAddress}` returns your
      current balance. The `X-Balance-Remaining` response header on inference
      calls also reports it.


      **Quick start (5 lines):**

      ```

      import { VeniceClient } from '@venice-ai/x402-client'

      const venice = new VeniceClient(process.env.WALLET_KEY)

      await venice.topUp(10) // $10 USDC on a supported x402 rail

      const res = await venice.chat({ model: 'zai-org-glm-5-1', messages: [{
      role: 'user', content: 'Hello!' }] })

      ```


      **Payment:** USDC on Base (chain ID 8453) or Solana mainnet. Minimum
      top-up: $5. Alternatively, stake DIEM tokens for daily credits (1 DIEM =
      $1/day).
    name: x402
externalDocs:
  description: Venice.ai API documentation
  url: https://docs.venice.ai
paths:
  /characters/{slug}/reviews:
    get:
      tags:
        - Characters
        - Preview
      summary: /api/v1/characters/{slug}/reviews
      description: >-
        This is a preview API and may change. Returns paginated public reviews
        for a single character.
      operationId: getCharacterReviews
      parameters:
        - schema:
            type: string
            description: Slug of the character whose reviews should be retrieved
            example: alan-watts
          required: true
          name: slug
          in: path
        - schema:
            type: integer
            minimum: 0
            exclusiveMinimum: true
            default: 1
            description: Page number for pagination
            example: 1
          required: false
          name: page
          in: query
        - schema:
            type: integer
            minimum: 0
            exclusiveMinimum: true
            maximum: 100
            default: 20
            description: 'Number of reviews to return per page (max: 100)'
            example: 20
          required: false
          name: pageSize
          in: query
      responses:
        '200':
          description: OK
          headers:
            x-pagination-limit:
              schema:
                description: Number of reviews returned per page
                example: 20
                type: number
            x-pagination-page:
              schema:
                description: Current page number
                example: 1
                type: number
            x-pagination-total:
              schema:
                description: Total number of visible reviews
                example: 87
                type: number
            x-pagination-total-pages:
              schema:
                description: Total number of result pages
                example: 5
                type: number
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        characterId:
                          type: string
                          description: Unique ID of the reviewed character
                          example: 2f460055-7595-4640-9cb6-c442c4c869b0
                        createdAt:
                          type: string
                          description: Date when the review was created
                          example: '2025-02-09T03:23:53.708Z'
                        id:
                          type: string
                          description: Unique ID of the review
                          example: 1e38fb78-043f-4ce2-b3bc-966089c25467
                        isOwner:
                          type: boolean
                          description: Whether the authenticated user authored this review
                          example: false
                        locale:
                          type: string
                          nullable: true
                          description: Locale reported by the reviewer when available
                          example: en
                        message:
                          type: string
                          nullable: true
                          description: Optional written review message
                          example: Thoughtful, grounded, and surprisingly practical.
                        rating:
                          type: integer
                          minimum: 1
                          maximum: 5
                          description: Star rating for the character
                          example: 5
                        userAvatarUrl:
                          type: string
                          nullable: true
                          description: Avatar URL for the reviewer when available
                          example: https://cdn.venice.ai/avatar.png
                        username:
                          type: string
                          description: Display name chosen by the reviewer
                          example: product_user_42
                      required:
                        - characterId
                        - createdAt
                        - id
                        - isOwner
                        - locale
                        - message
                        - rating
                        - userAvatarUrl
                        - username
                  object:
                    type: string
                    enum:
                      - list
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                        description: Current page number
                        example: 1
                      pageSize:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                        description: Number of reviews requested per page
                        example: 20
                      total:
                        type: integer
                        minimum: 0
                        description: Total number of visible reviews for the character
                        example: 87
                      totalPages:
                        type: integer
                        minimum: 0
                        description: Total number of pages available
                        example: 5
                    required:
                      - page
                      - pageSize
                      - total
                      - totalPages
                  summary:
                    type: object
                    properties:
                      averageRating:
                        type: number
                        description: Average rating for the character
                        example: 4.7
                      totalReviews:
                        type: integer
                        minimum: 0
                        description: >-
                          Total number of reviews included in the character
                          stats summary
                        example: 87
                    required:
                      - averageRating
                      - totalReviews
                required:
                  - data
                  - object
                  - pagination
                  - summary
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DetailedError'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
        '404':
          description: Character not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
        '500':
          description: An unknown error occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
components:
  schemas:
    DetailedError:
      type: object
      properties:
        details:
          type: object
          properties: {}
          description: Details about the incorrect input
          example:
            _errors: []
            field:
              _errors:
                - Field is required
        error:
          type: string
          description: A description of the error
      required:
        - error
    StandardError:
      type: object
      properties:
        error:
          type: string
          description: A description of the error
      required:
        - error
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````