---
title: "PQS preflight + Venice.ai chat completion ($0.05 USDC)"
method: POST
path: "/api/proxy/venice"
tags: ["venice_proxy", "paid", "evm"]
---

# PQS preflight + Venice.ai chat completion ($0.05 USDC)

`POST /api/proxy/venice`

## Request

- Base URL: `https://promptqualityscore.com`
- URL: `https://promptqualityscore.com/api/proxy/venice`
- Auth: one of:
  - API key in header `X-PAYMENT`
  - API key in header `Authorization`

Venice.ai chat completion with PQS preflight scoring. Returns LLM response plus 8-dimension quality score in one paid call. No signup, no API key.

## Request body

- object
  - `prompt` string, required: Prompt to score and send to Venice.ai
  - `vertical` 'software' | 'content' | 'business' | 'education' | 'science' | 'crypto' | 'general' | 'research'
  - `model` string: Optional Venice.ai model override. Defaults to venice-uncensored-1-2. Call GET /api/proxy/venice/models (free, no payment) for the live list of supported model IDs and aliases. Unknown IDs return 400 before settlement.

## Response `200`

Scoring result

- object
  - `pqs` object, required
    - `total` integer, required
    - `grade` 'A' | 'B' | 'C' | 'D' | 'F', required
    - `dimensions` object, required
      - `clarity` integer
      - `specificity` integer
      - `context` integer
      - `constraints` integer
      - `output_format` integer
      - `role_definition` integer
      - `examples` integer
      - `cot_structure` integer
      - `total` integer
    - `framework_breakdown` object, required
      - `peem` number, required: PEEM framework score: weights structure
      - `ragas` number, required: RAGAS framework score: weights grounding
      - `geval` number, required: G-Eval framework score: weights faithfulness
  - `preflight_warning` string, nullable: Populated when the prompt scores below 30; null otherwise.
  - `improvement_suggestion` string, nullable: One-line rewrite hint, populated when the prompt scores below 50; null otherwise.
  - `venice` object, required: Venice.ai chat completion, or an error object when the Venice call failed.
    - `model` string
    - `content` string
    - `usage` object, nullable
    - `citations` object[]: Web search citations grounding the Venice response. Populated when web_search_enabled is true.
      - `title` string
      - `url` string
      - `content` string
      - `date` string
    - `web_search_enabled` boolean: True when Venice call was made with web search grounding enabled.
    - `error` string: Present instead of model/content/usage when the Venice call failed.
  - `meta` object, required
    - `endpoint` '/api/proxy/venice', required
    - `price_paid_usdc` 0.05, required
    - `request_id` string, required: uuid correlating the response to its pqs_api_calls audit row

## Other responses

- `400`: Invalid request body
- `401`: Invalid or missing bearer API key (when using bearer auth)
- `402`: Payment Required - x402 challenge when no bearer API key present. See x-payment-info.

---

[API](https://skmtc.dev/promptqualityscore/apis/pqs-prompt-quality-score.md) · [All operations](https://skmtc.dev/promptqualityscore/apis/pqs-prompt-quality-score/llms.txt) · [OpenAPI document](https://skmtc.dev/promptqualityscore/apis/pqs-prompt-quality-score/revisions/7f3f43a1c864?raw)
