AI Features

Documents & Media

Beyond text, VectorAxis fronts the multimodal AI APIs: audio (transcription, translation, text-to-speech), image generation and editing, files, async batches, and the Responses API, through the same gateway, the same one-line auth, and the same billing, limits, and logs as your chat traffic. The endpoints are OpenAI-compatible, so an OpenAI SDK works by just pointing it at VectorAxis.

python
from openai import OpenAI

# Point any OpenAI SDK at VectorAxis and use a virtual key as the api_key.
client = OpenAI(base_url="https://api.vectoraxis.ai/v1", api_key="vk-1a2b3c4d5e6f7a8b")
Base URL & paths. The endpoint tables below show the full HTTP path, including the /v1 prefix, for direct HTTP clients.
• OpenAI SDK: set base_url to https://api.vectoraxis.ai/v1 (with /v1), the SDK appends the endpoint, so you call /audio/transcriptions, not the full path.
• Direct HTTP: use https://api.vectoraxis.ai as the base (without /v1) and request the full path shown below, e.g. https://api.vectoraxis.ai/v1/audio/transcriptions.
Why it matters
  • One integration for everything. Transcribe a call, generate an image, and run a chat, all through one gateway and one key, instead of wiring up each provider separately.
  • Pick the best provider per task. Use OpenAI for images, a specialist like ElevenLabs for lifelike speech, or Sarvam for Indic-language audio, without changing how your app calls them.
  • Unified controls. The same virtual keys, spend caps, rate limits, and observability that govern chat also cover audio, images, and files.
How to authenticate

Document endpoints accept either a BYOK virtual key (Authorization: Bearer vk-…) or direct provider credentials (x-provider + x-api-key).

PLATFORM-mode keys don’t work here. A platform (credit-mode) key on any audio, image, files, batches, or Responses call is rejected with a 400: those are limited to chat and prompt completions. Use a BYOK key or direct credentials for media. See Platform Keys.
Supported providers by modality

Each modality is backed by the providers below. A request is routed to the provider of the key (or the x-provider you send); using an unsupported provider for a modality returns a clear error.

ModalityProviders
Audio: transcription (speech → text)OpenAI, Groq, Sarvam, ElevenLabs
Audio: translation (speech → English text)OpenAI, Sarvam
Audio: text-to-speechOpenAI, ElevenLabs, Sarvam
Streaming transcriptionOpenAI
Images: generation & editingOpenAI
FilesOpenAI
BatchesOpenAI
Responses APIOpenAI
The provider set is configuration-driven and grows over time. Audio uses provider-specific adapters (OpenAI, ElevenLabs, Sarvam), and any other OpenAI-compatible provider, such as Groq for Whisper transcription, is served through the OpenAI-format path. Images, files, batches, and Responses are currently OpenAI-only.

Audio

Three operations, all OpenAI-compatible. Transcription and translation take an audio file (multipart upload); text-to-speech takes text and returns audio.

MethodPathWhat it does
POST/v1/audio/transcriptionsTurn speech into text in its original language. Optional streaming (OpenAI).
POST/v1/audio/translationsTurn speech in another language into English text.
POST/v1/audio/speechTurn text into spoken audio (choose a voice and format).
Provider notes. OpenAI covers all three (and is the one that streams transcription). ElevenLabs does transcription and high-quality speech. Sarvam covers all three with strong Indic-language support. Groq handles fast Whisper transcription. Uploads follow the provider’s size limit (OpenAI-compatible providers default to 25 MB).
python
# Transcription  ->  POST /v1/audio/transcriptions
client.audio.transcriptions.create(model="whisper-1", file=open("call.mp3", "rb"))

# Translation (to English)  ->  POST /v1/audio/translations
client.audio.translations.create(model="whisper-1", file=open("call-es.mp3", "rb"))

# Text-to-speech  ->  POST /v1/audio/speech
client.audio.speech.create(model="tts-1", voice="alloy", input="Hello there!")

Images

Generate an image from a prompt, or edit an existing one (multipart upload). OpenAI.

MethodPathWhat it does
POST/v1/images/generationsCreate images from a text prompt (size, quality, count).
POST/v1/images/editsEdit or extend an uploaded image with a prompt and optional mask.
python
# Generate  ->  POST /v1/images/generations
client.images.generate(model="gpt-image-1", prompt="a red bicycle", size="1024x1024")

# Edit  ->  POST /v1/images/edits
client.images.edit(model="gpt-image-1", image=open("photo.png", "rb"), prompt="add a sunset")

Files

Upload and manage files used by batches and the Responses API. OpenAI.

MethodPathWhat it does
POST/v1/filesUpload a file (multipart). Returns a vxf-… id.
GET/v1/filesList your files.
GET/v1/files/{id}Fetch a file’s metadata.
DELETE/v1/files/{id}Delete a file.
GET/v1/files/{id}/contentDownload the file’s raw content.
Stable vxf-… file IDs. VectorAxis gives every upload its own vxf-* id and maps it to the provider’s file id internally. You always use the vxf-* id (in batches and Responses too) and never see the underlying provider id.
python
# Upload  ->  POST /v1/files   (returns a vxf-… id)
f = client.files.create(file=open("requests.jsonl", "rb"), purpose="batch")

client.files.list()                       # GET    /v1/files
client.files.retrieve(f.id)               # GET    /v1/files/{id}
client.files.content(f.id)                # GET    /v1/files/{id}/content
client.files.delete(f.id)                 # DELETE /v1/files/{id}

Batches

Run a large set of requests asynchronously at lower cost: upload a file of requests, start a batch, poll it, and download the results. OpenAI.

MethodPathWhat it does
POST/v1/batchesStart a batch from an uploaded input file (vxf-…).
GET/v1/batchesList batches.
GET/v1/batches/{id}Check a batch’s status and progress.
POST/v1/batches/{id}/cancelCancel an in-progress batch.
GET/v1/batches/{id}/outputDownload the batch results once complete.
python
# Start  ->  POST /v1/batches
b = client.batches.create(input_file_id="vxf-...", endpoint="/v1/chat/completions",
                          completion_window="24h")

client.batches.list()                     # GET  /v1/batches
client.batches.retrieve(b.id)             # GET  /v1/batches/{id}
client.batches.cancel(b.id)               # POST /v1/batches/{id}/cancel
# Results:  GET /v1/batches/{id}/output

Responses API

The stateful Responses API: create a response, retrieve or delete it, and inspect its input items. OpenAI.

MethodPathWhat it does
POST/v1/responsesCreate a response.
GET/v1/responses/{id}Retrieve a previously created response.
DELETE/v1/responses/{id}Delete a stored response.
GET/v1/responses/{id}/input_itemsList the input items that produced a response.
python
# Create  ->  POST /v1/responses
r = client.responses.create(model="gpt-4o", input="Write a haiku about the sea.")

client.responses.retrieve(r.id)           # GET    /v1/responses/{id}
client.responses.input_items.list(r.id)   # GET    /v1/responses/{id}/input_items
client.responses.delete(r.id)             # DELETE /v1/responses/{id}
Getting started: point your OpenAI SDK’s base_url at VectorAxis, use a BYOK virtual key (or x-provider + x-api-key), and call the audio, image, files, batch, or Responses endpoint you need. Everything lands in your request logs alongside your chat traffic.
NVIDIA Inception Program member

VectorAxis is built by GK Labs, a member of NVIDIA Inception.