VeroniQA

Developers

VeroniQA for developers

VeroniQA's public API is a free, keyless sandbox: ask questions about the demo API and get cited answers, read the measured results, and fetch the demo API's OpenAPI spec. Models are simulated, so answers are extracts from the documents. Nothing you send is stored.

Quickstart

Check the service, then ask a question:

curl https://veroniqa.vercel.app/api/v1/status

curl -X POST https://veroniqa.vercel.app/api/v1/ask \
  -H 'Content-Type: application/json' \
  -d '{"question": "What is the p95 latency target for the order list?"}'

Or use the CLI:

pipx install "git+https://github.com/Zapkid/agentqa#subdirectory=clients/veroniqa-cli"
veroniqa status
veroniqa ask "What is the p95 latency target for the order list?"
veroniqa results --json

Run it once without installing: uvx --from "git+https://github.com/Zapkid/agentqa#subdirectory=clients/veroniqa-cli" veroniqa status

Authentication and API keys

None. The public API is a sandbox for the demo, so there are no accounts or keys; each client is rate limited instead. To test your own API with real models, run VeroniQA yourself from the repository.

Endpoints

methodpathwhat it does
GET/api/API index
GET/api/v1/statusService status
GET/api/v1/resultsMeasured results
POST/api/v1/askAsk about the demo API
GET/api/v1/demo/openapi.jsonOpenAPI spec of the demo API

Request and response schemas are in the OpenAPI description.

Errors

Every error under /api is an RFC 9457 problem document, served as application/problem+json, with a stable code and a hint:

{
  "type": "https://veroniqa.vercel.app/developers#error-invalid_request",
  "title": "Invalid request",
  "status": 422,
  "detail": "The request body is not valid.",
  "instance": "/api/v1/ask",
  "code": "invalid_request",
  "hint": "Fix the fields listed in `errors`; the request schema is in /openapi.json.",
  "errors": [
    {
      "field": "question",
      "message": "Field required"
    }
  ]
}
codestatustitlehow to fix
not_found404Not foundCheck the path against the OpenAPI description at /openapi.json.
method_not_allowed405Method not allowedUse the method listed for this path in /openapi.json (see the Allow header).
invalid_request422Invalid requestFix the fields listed in `errors`; the request schema is in /openapi.json.
rate_limited429Too many requestsWait for the number of seconds in Retry-After, then retry.
internal_error500Internal errorRetry later; if it persists, open an issue at https://github.com/Zapkid/agentqa/issues.

Rate limits

Every response carries RateLimit-Policy and RateLimit headers, for example RateLimit: "default";r=59;t=60. A 429 rate_limited response adds Retry-After.

Sandbox

Versioning

The API is versioned in the path (/v1); the current release is 1.0.0. Breaking changes get a new version path.

Machine-readable files