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.

BASEhttps://vort.org.za/api/v1

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:

http
Authorization: Bearer vrt_live_xxxxxxxxxxxxxxxx

# or, equivalently:
X-API-Key: vrt_live_xxxxxxxxxxxxxxxx
Some proxies and hosting edges strip the Authorization header. If you receive a 401 missing_key error while sending a valid Bearer token, switch to the X-API-Key header.
Your full API key is shown once, at creation time, and cannot be recovered afterwards — only its prefix is stored. If a key is lost or exposed, revoke it in the dashboard and create a new one.

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.

POST/v1/chat/completions

Request body

ParameterTypeRequiredDescription
messagesarrayYesConversation history. Each message has a role (system, user, or assistant) and content string. Must be non-empty.
modelstringNoModel to use. Defaults to "vb0". See Models below.
streambooleanNoWhen true, the response is streamed as server-sent events. Defaults to false.
max_tokensintegerNoUpper bound on the length of the generated response. Defaults to 8192.
temperaturenumberNoSampling temperature. Lower values are more deterministic; higher values more creative.
toolsarrayNoTool definitions for function calling, in the standard chat-completions tools format.
tool_choicemixedNoControls how the model selects tools when tools are provided.

Response

json
{
  "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

text
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.

ParameterTypeRequiredDescription
vb0chatGeneral-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.

json
{
  "error": {
    "message": "Invalid or revoked API key",
    "type": "invalid_request_error",
    "code": "invalid_key"
  }
}
ParameterTypeRequiredDescription
401missing_keyNo API key found. Send it via Authorization: Bearer or X-API-Key.
401invalid_keyThe key does not exist or has been revoked.
400invalid_request_errorMalformed JSON body, or messages is missing / empty.
5xxserver_errorUpstream or platform issue. Safe to retry with exponential backoff.
If your monthly allowance is exhausted, the API does not return an error status — it returns a normal completion whose content explains the limit and links to the dashboard to upgrade. Check for this in long-running integrations.

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