Developer Platform · vb0 API
vb0 API Documentation
The vb0 API gives your applications programmatic access to vb0, Vort's enterprise language model. The API uses the industry-standard chat completions format — if you have integrated a modern AI API before, everything here will feel familiar.
All requests are served over HTTPS. Request and response bodies are JSON, and streaming responses use server-sent events (SSE).
Authentication#
Every request must be authenticated with a Vort API key. Keys start with vrt_live_ and are created from the dashboard.
Pass your key in one of two headers:
Authorization: Bearer vrt_live_xxxxxxxxxxxxxxxx # or, equivalently: X-API-Key: vrt_live_xxxxxxxxxxxxxxxx
Authorization header. If you receive a 401 missing_key error while sending a valid Bearer token, switch to the X-API-Key header.Quickstart#
Create an API key in the dashboard, then send your first request.
curl https://vort.org.za/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $VORT_API_KEY" \
-d '{
"model": "vb0",
"messages": [
{ "role": "user", "content": "Summarise the POPIA consent requirements." }
]
}'Because vb0 speaks the standard chat completions format, most HTTP clients and AI tooling work with it out of the box — set the base URL and pass your Vort key.
Chat Completions#
Generate a model response for a conversation.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| messages | array | Yes | Conversation history. Each message has a role (system, user, or assistant) and content string. Must be non-empty. |
| model | string | No | Model to use. Defaults to "vb0". See Models below. |
| stream | boolean | No | When true, the response is streamed as server-sent events. Defaults to false. |
| max_tokens | integer | No | Upper bound on the length of the generated response. Defaults to 8192. |
| temperature | number | No | Sampling temperature. Lower values are more deterministic; higher values more creative. |
| tools | array | No | Tool definitions for function calling, in the standard chat-completions tools format. |
| tool_choice | mixed | No | Controls how the model selects tools when tools are provided. |
Response
{
"id": "chatcmpl-1751790000000",
"object": "chat.completion",
"created": 1751790000,
"model": "vb0",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Under POPIA, consent must be voluntary, specific and informed..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 187,
"total_tokens": 211
}
}The usage object is provided for SDK compatibility and request-level statistics. Your plan is governed by your monthly allowance, not by per-request metering — see Plans & Limits.
Streaming#
Set "stream": true to receive the response incrementally as server-sent events. Each event is a chat.completion.chunk object; the stream ends with data: [DONE].
curl https://vort.org.za/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $VORT_API_KEY" \
-d '{
"model": "vb0",
"stream": true,
"messages": [{ "role": "user", "content": "Write a haiku about Johannesburg." }]
}'Event format
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"City"},"finish_reason":null}]}
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" of gold"},"finish_reason":null}]}
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]Models#
vb0 is the default and recommended model — Vort's enterprise model tuned for South African legal, financial, and enterprise domains.
| Parameter | Type | Required | Description |
|---|---|---|---|
| vb0 | chat | — | General-purpose enterprise model. Best default for chat, analysis, drafting, and extraction. |
Customers with fine-tuned deployments can address their private models by the model ID shown in the dashboard's Models panel. Fine-tuned models are only visible to, and callable by, the account that owns them.
Errors#
Errors are returned as JSON with an error object containing a message, a type, and (where applicable) a code.
{
"error": {
"message": "Invalid or revoked API key",
"type": "invalid_request_error",
"code": "invalid_key"
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
| 401 | missing_key | — | No API key found. Send it via Authorization: Bearer or X-API-Key. |
| 401 | invalid_key | — | The key does not exist or has been revoked. |
| 400 | invalid_request_error | — | Malformed JSON body, or messages is missing / empty. |
| 5xx | server_error | — | Upstream or platform issue. Safe to retry with exponential backoff. |
Plans & Limits#
vb0 access is plan-based. Every account starts with a free evaluation allowance; paid plans carry a monthly usage allowance sized to your engagement. When the allowance is reached, responses direct you to the dashboard to upgrade or recharge.
Allowances, current usage, and recharge options are visible in the dashboard. For enterprise volumes, dedicated capacity, or fine-tuned deployments, book a consultation.
Dashboard#
From the dashboard you can:
- Create, name, and revoke API keys
- Monitor request volume over 24h / 7d / 30d / 90d windows
- Track your monthly allowance and manage your plan
- View and manage fine-tuned models