vennaVenna

Quickstart

Get an API key and make your first authenticated Venna gateway call in minutes.

The Venna gateway speaks the OpenAI Chat Completions API — your first call is one request away.

What's live

Chat Completions, the Responses API, embeddings, audio (speech + transcription), image generation/edit, and async video are all live on the gateway. Most remaining endpoints still answer 501 until they ship — one, /v1/images/variations, is a permanent 501 with no upstream support. The API reference flags each one. Authenticate with a workspace vk_ key, or skip the key and pay per call from a wallet — see Authentication.

Get an API key

Create a key in the Venna Console — a long-lived secret prefixed vk_, shown in full only at creation. Export it so it stays out of your shell history and commits:

export VENNA_API_KEY="vk_your_key_here"

Make your first call

Send a chat completion to https://gateway.venna.net/v1/chat/completions with the key as a bearer token and the standard OpenAI body — a model and a messages array:

curl https://gateway.venna.net/v1/chat/completions \
  -H "Authorization: Bearer $VENNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "venna-fast",
    "messages": [
      { "role": "user", "content": "In one sentence, what is Venna?" }
    ]
  }'
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://gateway.venna.net/v1",
  apiKey: process.env.VENNA_API_KEY,
});

const completion = await client.chat.completions.create({
  model: "venna-fast",
  messages: [{ role: "user", content: "In one sentence, what is Venna?" }],
});

console.log(completion.choices[0]?.message.content);
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://gateway.venna.net/v1",
    api_key=os.environ["VENNA_API_KEY"],
)

completion = client.chat.completions.create(
    model="venna-fast",
    messages=[{"role": "user", "content": "In one sentence, what is Venna?"}],
)

print(completion.choices[0].message.content)
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";

const venna = createOpenAI({
  baseURL: "https://gateway.venna.net/v1",
  apiKey: process.env.VENNA_API_KEY,
});

const { text } = await generateText({
  model: venna("venna-fast"),
  prompt: "In one sentence, what is Venna?",
});

console.log(text);

No vk_ key? Pay per call from a wallet on Base instead, with no prepaid plan — see the x402 guide.

The response is an OpenAI-compatible completion: a choices array holding the assistant message, plus a usage block with your billed tokens.

Stream the response

Add "stream": true for server-sent events — tokens arrive as data: chunks and the stream closes with a final data: [DONE] line:

curl https://gateway.venna.net/v1/chat/completions \
  -H "Authorization: Bearer $VENNA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "venna-fast",
    "messages": [
      { "role": "user", "content": "Stream a haiku about throughput." }
    ],
    "stream": true
  }'

Explore the capabilities

Chat is the fastest first call, but the gateway carries the same vk_ key across every modality:

Next steps

  • Text generation — chat completions and the Responses API in depth.
  • Authentication — when to reach for a plan JWT or an x402 wallet payment instead of a vk_ key.
  • API reference — every endpoint, generated from the live gateway OpenAPI spec.

On this page