> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-mintlify-d2fddb8a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# وضع توليد الفيديو في قائمة الانتظار

> Queue a new video generation request.

**Authentication:** This endpoint accepts either a Bearer API key or a `SIGN-IN-WITH-X` header for x402 wallet-based authentication. The legacy `X-Sign-In-With-X` header is also accepted during migration. When using x402, a `402 Payment Required` response indicates insufficient balance and includes top-up instructions.

استدعِ `/video/quote` للحصول على تقدير للسعر، ثم استعلِم `/video/retrieve` باستخدام الـ `queue_id` المُعاد حتى يكتمل.

تُعيد النماذج الخاصة أيضًا `download_url` للفيديو النهائي. وهو عنوان URL للتسليم قصير الأمد (لا بأس بإعادة المحاولة بضع مرات في حال انقطع التنزيل)؛ راجع [دليل توليد الفيديو](/guides/media/video-generation#private-download-links) للتفاصيل و`DELETE` الاختيارية للخصوصية.

### Seedance 2.0

بالنسبة لنماذج `seedance-2-0-*` (text-to-video، image-to-video، reference-to-video، بالإضافة إلى متغيرات `-fast-*`)، راجع [دليل Seedance 2.0](/guides/media/seedance-2-0) لنموذج التدفقات الأربعة (Reference / Edit / Extend / Stitch)، وأنماط الـ prompt القياسية، وحدود الإدخال متعدد الوسائط، وتفاصيل التسعير.

### موافقة Seedance

عندما يحتوي طلب image-to-video أو reference-to-video في Seedance على وجه بشري، تُعيد الـ API استجابة `409 needs_consent` مع نص السياسة، وتعيد إرسال الطلب نفسه مع شهادة `consents.seedance`. راجع [دليل موافقة Seedance لوسائط الوجوه](/guides/media/seedance-face-consent) للتدفق الكامل وكائن الموافقة وإزالة التكرار والإلغاء.

### تكبير الفيديو

لنموذج `topaz-video-upscale`، استخدم `upscale_factor` (1 أو 2 أو 4) بدلًا من `resolution`، وقدّم `video_url`. يتم اكتشاف المدة و FPS تلقائيًا من ملف الفيديو. راجع [دليل تكبير الفيديو](/guides/media/video-upscaling) للحصول على التفاصيل والأمثلة الكاملة.

***


## OpenAPI

````yaml POST /video/queue
openapi: 3.0.0
info:
  description: The Venice.ai API.
  termsOfService: https://venice.ai/legal/tos
  title: Venice.ai API
  version: '20260622.204854'
  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:
  /video/queue:
    post:
      tags:
        - Video
      summary: /api/v1/video/queue
      description: >-
        Queue a new video generation request.


        **Authentication:** This endpoint accepts either a Bearer API key or a
        `SIGN-IN-WITH-X` header for x402 wallet-based authentication. The legacy
        `X-Sign-In-With-X` header is also accepted during migration. When using
        x402, a `402 Payment Required` response indicates insufficient balance
        and includes top-up instructions.
      operationId: queueVideo
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueueVideoRequest'
      responses:
        '200':
          description: Video generation request queued successfully
          headers:
            X-Balance-Remaining:
              description: >-
                Remaining x402 credit balance in USD after this request (only
                present for x402 auth).
              required: false
              schema:
                type: string
                example: '4.230000'
          content:
            application/json:
              schema:
                type: object
                properties:
                  model:
                    type: string
                    description: The ID of the model used for video generation.
                    example: video-model-123
                  queue_id:
                    type: string
                    description: The ID of the video generation request.
                    example: 123e4567-e89b-12d3-a456-426614174000
                  download_url:
                    type: string
                    description: >-
                      Pre-signed URL to download the completed video. Only
                      present for VPS-backed models. When provided, the retrieve
                      endpoint returns JSON status only (no video stream). Fetch
                      this URL after status is COMPLETED to get the video/mp4
                      file. Valid for 24 hours.
                required:
                  - model
                  - queue_id
                additionalProperties: false
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DetailedError'
        '401':
          description: |-
            - Authentication failed
            - This model is only available to Pro users
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
        '402':
          description: >-
            Payment or balance required. Response varies by authentication
            state:


            **API Key users:** Standard error response with
            `INSUFFICIENT_BALANCE` code. Top up your Venice balance at
            venice.ai.


            **Unauthenticated x402 discovery:** Structured x402 response with
            `x402Version`, `resource`, `accepts`, and
            `extensions["sign-in-with-x"]`. The `accepts` array advertises Base
            and Solana payment requirements.


            **Authenticated x402 wallet users with insufficient credit:**
            Structured response with `PAYMENT_REQUIRED` code containing:

            - `topUpInstructions`: Step-by-step guide to top up via x402
            protocol

            - `supportedTokens` / `supportedChains`: Accepted payment methods

            - `siwxChallenge`: Fresh Sign-In-With-X challenge metadata


            The `PAYMENT-REQUIRED` header also contains a base64-encoded x402
            protocol object with the payment requirements for programmatic
            discovery.
          headers:
            PAYMENT-REQUIRED:
              description: >-
                Base64-encoded JSON with x402 payment requirements. Present on
                x402 middleware 402 responses. Decode to choose and sign one
                accepted payment requirement programmatically.
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/StandardError'
                  - $ref: '#/components/schemas/X402InferencePaymentRequired'
        '403':
          description: >-
            The specified model is unavailable in your region. Use of Tor, VPNs,
            proxies, or other means to circumvent this restriction is a
            violation of our Terms of Service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
        '409':
          description: Seedance consent is required before this request can be queued
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        enum:
                          - needs_consent
                      message:
                        type: string
                    required:
                      - code
                      - message
                    additionalProperties: false
                  consent_flow:
                    type: string
                    enum:
                      - seedance
                  face_media_roles:
                    type: array
                    items:
                      type: string
                      enum:
                        - image
                        - end_image
                        - reference_image
                        - video
                        - reference_video
                  consent:
                    type: object
                    properties:
                      consent_version:
                        type: string
                      policy_text:
                        type: string
                    required:
                      - consent_version
                      - policy_text
                    additionalProperties: false
                  docs_url:
                    type: string
                required:
                  - error
                  - consent_flow
                  - face_media_roles
                  - consent
                  - docs_url
                additionalProperties: false
        '413':
          description: >-
            The request payload is too large. Please reduce the size of your
            request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: >-
            Your prompt violates the content policy of Venice.ai or the model
            provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentViolationError'
        '500':
          description: Inference processing failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardError'
      security:
        - BearerAuth: []
        - siwx: []
components:
  schemas:
    QueueVideoRequest:
      type: object
      properties:
        model:
          type: string
          description: The model to use for video generation.
          example: seedance-2-0-text-to-video
        consents:
          type: object
          properties:
            seedance:
              type: object
              properties:
                confirmed_terms_and_privacy:
                  type: boolean
                  enum:
                    - true
                  description: >-
                    Confirms acceptance of the current Seedance face-media
                    policy text returned in the needs_consent response.
                  example: true
                confirmed_legal_right:
                  type: boolean
                  enum:
                    - true
                  description: >-
                    Confirms the API user has the legal right to use the
                    face-bearing media.
                  example: true
                confirmed_screening_acknowledged:
                  type: boolean
                  enum:
                    - true
                  description: >-
                    Acknowledges that submitted media may be screened before
                    private asset submission.
                  example: true
              required:
                - confirmed_terms_and_privacy
                - confirmed_legal_right
                - confirmed_screening_acknowledged
          description: >-
            Optional provider-specific consent attestations. Seedance consent is
            required only when submitted media contains faces.
        prompt:
          type: string
          minLength: 1
          maxLength: 10000
          description: >-
            The prompt to use for video generation. Required for most models.
            The maximum length varies by model (default 2500 characters, up to
            10000 for some models such as Seedance 2.0).
          example: Commerce being conducted in the city of Venice, Italy.
        negative_prompt:
          type: string
          maxLength: 10000
          description: >-
            Optional negative prompt. The maximum length varies by model
            (default 2500 characters, up to 10000 for some models).
          example: low resolution, error, worst quality, low quality, defects
        duration:
          type: string
          enum:
            - 2s
            - 3s
            - 4s
            - 5s
            - 6s
            - 7s
            - 8s
            - 9s
            - 10s
            - 11s
            - 12s
            - 13s
            - 14s
            - 15s
            - 16s
            - 18s
            - 20s
            - 25s
            - 30s
            - 1 gen
            - Auto
          description: >-
            The duration of the video to generate. Available options vary by
            model.
          example: 10s
        aspect_ratio:
          type: string
          enum:
            - '1:1'
            - '2:3'
            - '3:2'
            - '3:4'
            - '4:3'
            - '4:5'
            - '5:4'
            - '9:16'
            - '9:21'
            - '16:9'
            - '21:9'
          description: >-
            The aspect ratio of the video. Available options vary by model. Some
            models do not support aspect_ratio.
          example: '16:9'
        resolution:
          type: string
          enum:
            - 256p
            - 360p
            - 480p
            - 540p
            - 580p
            - 720p
            - 1080p
            - 1440p
            - 2160p
            - 4k
            - 2x
            - 4x
            - true_1080p
          description: >-
            The resolution of the video. Available options vary by model. Some
            models do not support resolution. Use upscale_factor for upscale
            models.
          example: 720p
        upscale_factor:
          type: integer
          description: >-
            For upscale models only. 1 = quality enhancement, 2 = double
            resolution (default), 4 = quadruple.
          enum:
            - 1
            - 2
            - 4
          default: 2
          example: 2
        audio:
          type: boolean
          default: true
          description: >-
            For models which support audio generation and configuration.
            Defaults to true.
          example: true
        image_url:
          type: string
          description: >-
            For image-to-video models, the reference image. Must be a URL
            (http/https) or a data URL (data:image/...).
          example: data:image/png;base64,iVBORw0K...
        end_image_url:
          type: string
          description: >-
            For models that support end images or transitions, the end frame
            image. Must be a URL or data URL.
          example: data:image/png;base64,iVBORw0K...
        audio_url:
          type: string
          description: >-
            For models that support audio input, background music. Must be a URL
            or data URL. Supported: WAV, MP3. Max: 30s, 15MB.
          example: data:audio/mpeg;base64,SUQzBAA...
        video_url:
          type: string
          description: >-
            For models that support video input (video-to-video, upscale). Must
            be a URL or data URL. Supported: MP4, MOV, WebM.
          example: data:video/mp4;base64,AAAAFGZ0eXA...
        reference_image_urls:
          type: array
          items:
            type: string
          maxItems: 9
          description: >-
            For models with reference image support, up to 9 images for
            character/style consistency. Each must be a URL or data URL.
          example:
            - data:image/png;base64,iVBORw0K...
        reference_video_urls:
          type: array
          items:
            type: string
          maxItems: 3
          description: >-
            For models with reference video support (e.g. Seedance 2.0 R2V), up
            to 3 reference video URLs (`role: "reference_video"`) used to
            inherit subject motion, camera movement, and overall style. Per-clip
            2–15 s, .mp4 or .mov, ≤50 MB; aggregate duration ≤15 s. Each must be
            a URL or data URL.
          example:
            - https://example.com/reference-clip.mp4
        reference_audio_urls:
          type: array
          items:
            type: string
          maxItems: 3
          description: >-
            For models with reference audio support (e.g. Seedance 2.0 R2V), up
            to 3 reference audio URLs (`role: "reference_audio"`) used as donors
            for vocal timbre, narration, or sound effects. Per-clip 2–15 s, .wav
            or .mp3; aggregate duration ≤15 s. Must be paired with at least one
            reference image or reference video — audio-only Reference workflows
            are rejected at validation. Each must be a URL or data URL.
          example:
            - data:audio/mpeg;base64,SUQzBAAAAAA...
        elements:
          type: array
          items:
            type: object
            properties:
              frontal_image_url:
                type: string
              reference_image_urls:
                type: array
                items:
                  type: string
                maxItems: 3
              video_url:
                type: string
          maxItems: 4
          description: >-
            For models with advanced element support (e.g., Kling O3 R2V). Up to
            4 elements defining characters/objects. Reference in prompt as
            @Element1, @Element2, etc.
          example:
            - frontal_image_url: data:image/png;base64,iVBORw0K...
              reference_image_urls:
                - data:image/png;base64,iVBORw0K...
        scene_image_urls:
          type: array
          items:
            type: string
          maxItems: 4
          description: >-
            For models with advanced element support. Up to 4 scene reference
            images. Reference in prompt as @Image1, @Image2, etc.
          example:
            - data:image/png;base64,iVBORw0K...
      required:
        - model
        - prompt
        - duration
      description: >-
        Request body for video generation. Available fields and valid values
        vary by model.
    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
    X402InferencePaymentRequired:
      anyOf:
        - type: object
          properties:
            x402Version:
              type: number
              description: x402 protocol version.
              example: 2
            error:
              type: string
              description: Human-readable payment requirement message.
              example: Payment required
            resource:
              type: object
              properties:
                url:
                  type: string
                  description: Protected resource URL.
                  example: https://api.venice.ai/api/v1/chat/completions
                description:
                  type: string
                  description: Human-readable resource description.
                  example: Venice API
                mimeType:
                  type: string
                  description: Resource MIME type.
                  example: application/json
              required:
                - url
                - description
                - mimeType
              additionalProperties: false
            accepts:
              type: array
              items:
                type: object
                properties:
                  scheme:
                    type: string
                    enum:
                      - exact
                    description: x402 payment scheme.
                    example: exact
                  network:
                    type: string
                    description: Payment network for this requirement.
                    example: solana
                  asset:
                    type: string
                    description: USDC token address or mint for the selected network.
                    example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                  amount:
                    type: string
                    description: >-
                      Required payment amount in base units (USDC has 6
                      decimals).
                    example: '10000000'
                  payTo:
                    type: string
                    description: Receiver wallet address for the selected network.
                    example: 8qUL23aSj7mDWdoLMXGHFvnVCT9wd7jXcysiekroADEL
                  maxTimeoutSeconds:
                    type: number
                    description: Maximum time allowed for payment settlement.
                    example: 300
                  extra:
                    type: object
                    properties: {}
                    description: >-
                      Network-specific x402 metadata. Solana requirements
                      include a feePayer.
                    example:
                      name: USD Coin
                      version: '2'
                      feePayer: BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F
                required:
                  - scheme
                  - network
                  - asset
                  - amount
                  - payTo
                  - maxTimeoutSeconds
                  - extra
                additionalProperties: false
              description: >-
                Protocol payment requirements. Clients should choose one entry,
                such as Base or Solana, and sign exactly that requirement.
            extensions:
              type: object
              properties: {}
              description: >-
                Protocol extensions. Inference 402 responses include
                `sign-in-with-x` with a SIWX challenge for wallet-credit
                authentication.
            authOptions:
              type: object
              properties:
                apiKey:
                  type: object
                  properties:
                    header:
                      type: string
                      description: API key authentication header format.
                      example: 'Authorization: Bearer YOUR_API_KEY'
                    getKey:
                      type: string
                      description: Where to create or manage API keys.
                      example: https://venice.ai/settings/api
                    docs:
                      type: string
                      description: API key documentation URL.
                      example: https://docs.venice.ai/api-reference
                  required:
                    - header
                    - getKey
                    - docs
                  additionalProperties: false
                x402Wallet:
                  type: object
                  properties:
                    header:
                      type: string
                      description: Header used for Sign-In-With-X wallet authentication.
                      example: SIGN-IN-WITH-X
                    legacyHeader:
                      type: string
                      description: Legacy Sign-In-With-X header accepted during migration.
                      example: X-Sign-In-With-X
                    topUp:
                      type: string
                      description: >-
                        Endpoint used to discover and submit x402 top-up
                        payments.
                      example: POST /api/v1/x402/top-up
                    docs:
                      type: string
                      description: x402 top-up API documentation URL.
                      example: >-
                        https://docs.venice.ai/api-reference/endpoint/x402/top-up
                  required:
                    - header
                    - legacyHeader
                    - topUp
                    - docs
                  additionalProperties: false
              required:
                - apiKey
                - x402Wallet
              additionalProperties: false
          required:
            - x402Version
            - resource
            - accepts
            - authOptions
          additionalProperties: false
          description: >-
            Returned when an inference request has no API key or wallet
            authentication. The JSON body includes x402 discovery requirements
            and authentication options.
        - type: object
          properties:
            error:
              type: string
              enum:
                - Payment required
              description: Error message indicating payment is required.
            code:
              type: string
              enum:
                - PAYMENT_REQUIRED
              description: Machine-readable error code.
            reason:
              type: string
              enum:
                - insufficient_balance
              description: Reason the x402-authenticated request could not proceed.
            message:
              type: string
              description: Human-readable context about the payment requirement.
              example: Insufficient x402 balance
            currentBalanceUsd:
              type: number
              description: Current x402 credit balance for the wallet.
              example: 0.01
            minimumBalanceUsd:
              type: number
              description: Minimum x402 credit balance required before the request can run.
              example: 0.1
            description:
              type: string
              description: Protected resource description.
              example: Venice API
            suggestedTopUpUsd:
              type: number
              description: Suggested amount to top up in USD.
              example: 10
            minimumTopUpUsd:
              type: number
              description: Minimum allowed top-up amount in USD.
              example: 5
            supportedTokens:
              type: array
              items:
                type: string
              description: List of supported token symbols for payment.
              example:
                - USDC
            supportedChains:
              type: array
              items:
                type: string
              description: List of supported top-up rails.
              example:
                - base
                - solana
            topUpInstructions:
              type: object
              properties:
                step1:
                  type: string
                  description: 'First step: get payment requirements.'
                  example: >-
                    POST /api/v1/x402/top-up with no payment header to get
                    payment requirements
                step2:
                  type: string
                  description: 'Second step: sign the payment.'
                  example: >-
                    Choose a payment option from accepts and sign a USDC
                    transfer authorization using the x402 SDK
                    (createPaymentHeader)
                step3:
                  type: string
                  description: 'Third step: submit the payment.'
                  example: >-
                    POST /api/v1/x402/top-up with the signed PAYMENT-SIGNATURE
                    header
                receiverWallet:
                  type: string
                  description: >-
                    Legacy Base receiver wallet address. Prefer the selected
                    accepts entry from /x402/top-up for network-specific payTo
                    values.
                  example: <RECEIVER_WALLET_ADDRESS>
                tokenAddress:
                  type: string
                  description: >-
                    Legacy Base USDC token address. Prefer the selected accepts
                    entry from /x402/top-up for network-specific assets.
                  example: <USDC_TOKEN_ADDRESS>
                tokenDecimals:
                  type: number
                  description: Token decimal places.
                  example: 6
                network:
                  type: string
                  description: >-
                    Legacy Base target network. Prefer the selected accepts
                    entry from /x402/top-up for network-specific values.
                  example: eip155:8453
                minimumAmountUsd:
                  type: number
                  description: Minimum top-up amount in USD.
                  example: 5
              required:
                - step1
                - step2
                - step3
                - receiverWallet
                - tokenAddress
                - tokenDecimals
                - network
                - minimumAmountUsd
              additionalProperties: false
            siwxChallenge:
              type: object
              properties:
                info:
                  type: object
                  properties:
                    domain:
                      type: string
                      description: Domain for the SIWX challenge.
                      example: api.venice.ai
                    uri:
                      type: string
                      description: Resource URI for the challenge.
                      example: https://api.venice.ai/api/v1/chat/completions
                    version:
                      type: string
                      description: SIWX version.
                      example: '1'
                    nonce:
                      type: string
                      description: Unique nonce for replay protection.
                      example: '{{nonce}}'
                    issuedAt:
                      type: string
                      description: ISO timestamp when the challenge was issued.
                      example: '2026-04-09T12:00:00.000Z'
                    expirationTime:
                      type: string
                      description: ISO timestamp when the challenge expires.
                      example: '2026-04-09T12:05:00.000Z'
                    statement:
                      type: string
                      description: Human-readable statement for the signature.
                      example: Sign in to Venice AI
                  required:
                    - domain
                    - uri
                    - version
                    - nonce
                    - issuedAt
                    - expirationTime
                    - statement
                  additionalProperties: false
                supportedChains:
                  type: array
                  items:
                    type: object
                    properties:
                      chainId:
                        type: string
                        description: Supported chain identity.
                        example: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
                      type:
                        type: string
                        enum:
                          - eip191
                          - eip1271
                          - ed25519
                        description: Signature type accepted for this chain.
                        example: ed25519
                    required:
                      - chainId
                      - type
                    additionalProperties: false
                  description: Supported SIWX chains and signature types.
              required:
                - info
                - supportedChains
              additionalProperties: false
          required:
            - error
            - code
            - reason
            - suggestedTopUpUsd
            - minimumTopUpUsd
            - supportedTokens
            - supportedChains
            - topUpInstructions
            - siwxChallenge
          additionalProperties: false
    PayloadTooLargeError:
      type: object
      properties:
        code:
          type: string
          enum:
            - PAYLOAD_TOO_LARGE
          description: Machine-readable error code.
          example: PAYLOAD_TOO_LARGE
        error:
          type: string
          description: A description of the error
          example: File exceeds the maximum allowed size of 25 MB.
      required:
        - code
        - error
    ContentViolationError:
      type: object
      properties:
        error:
          type: string
          description: A description of the error
        suggested_prompt:
          type: string
          description: >-
            An optional provider-suggested replacement prompt that complies with
            content policy.
          example: >-
            A cinematic instrumental track inspired by stormy weather and
            dramatic tension.
      required:
        - error
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http
    siwx:
      description: >-
        Wallet-based authentication using the x402 protocol (Sign-In-With-X).
        Supports EVM SIWE signatures on Base and Ed25519 signatures on Solana
        mainnet.


        **Header format:** Base64-encoded JSON object with the following fields:

        - `address` — EVM or Solana wallet address

        - `message` — Signed SIWX message. EVM wallets use EIP-4361 SIWE; Solana
        wallets use the Solana SIWX message format.

        - `signature` — Signature of the message, signed by the wallet's private
        key. EVM signatures are hex; Solana signatures may be base58 or base64.

        - `timestamp` — Unix timestamp in milliseconds

        - `chainId` — Chain identity. Use `8453`, `"8453"`, or `"eip155:8453"`
        for Base; use `"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"` for Solana.

        - `type` — Optional signature type. Use `"ed25519"` for Solana. Omitted
        means EVM/EIP-191 for backward compatibility.


        **EVM SIWE message fields:**

        - `domain`: `api.venice.ai`

        - `uri`: `https://api.venice.ai`

        - `version`: `"1"`

        - `chainId`: `8453`

        - `nonce`: Random 16-character hex string

        - `issuedAt` / `expirationTime`: ISO timestamps (recommended TTL: 10
        minutes)

        - `statement`: `"Sign in to Venice API"`


        **Example (TypeScript):**

        ```

        import { Wallet } from 'ethers'

        import { SiweMessage } from 'siwe'


        const wallet = new Wallet(PRIVATE_KEY)

        const msg = new SiweMessage({ domain: 'api.venice.ai', address:
        wallet.address, statement: 'Sign in to Venice API', uri:
        'https://api.venice.ai', version: '1', chainId: 8453, nonce:
        crypto.randomUUID().replace(/-/g, '').slice(0, 16), issuedAt: new
        Date().toISOString(), expirationTime: new Date(Date.now() +
        600000).toISOString() })

        const signature = await wallet.signMessage(msg.prepareMessage())

        const header = btoa(JSON.stringify({ address: wallet.address, message:
        msg.prepareMessage(), signature, timestamp: Date.now(), chainId: 8453
        }))

        // Set header: SIGN-IN-WITH-X: <header>

        ```


        **Solana message fields:** The signed message starts with `<domain>
        wants you to sign in with your Solana account:`, followed by the wallet
        address and the standard `URI`, `Version`, `Chain ID`, `Nonce`, `Issued
        At`, and optional `Expiration Time` fields. Use `type: "ed25519"` and
        `chainId: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"` in the encoded JSON
        payload.


        **SDK:** `npm install @venice-ai/x402-client` provides `VeniceClient`
        and `createAuthFetch` which handle this automatically.


        **Billing:** x402 users pay from a prepaid USDC credit balance. Top up
        via `POST /x402/top-up`. When balance is insufficient, endpoints return
        `402` with structured top-up instructions.
      in: header
      name: SIGN-IN-WITH-X
      type: apiKey

````