Models
Auth: X-NH-GPU-Key: <your GPU API key> · List: GET https://ai.ollalink.com/v1/models
Always on or on demand
Section titled “Always on or on demand”- Always on: loaded all the time; answers start at once.
- On demand: loads on its first request and frees its memory afterwards, so the first call waits a few seconds.
| Capability | API | Mode |
|---|---|---|
| live captions, realtime speech-to-text (14 languages) | gpu-live, gpu-asr (live captions, speech-to-text) |
always on |
| Hindi and Chinese recordings | gpu-asrhq (speech-to-text) |
always on |
| other-language recordings, speech → English, word timestamps | gpu-asrhq |
on demand |
| fast file transcription | gpu-transcribe |
on demand |
| text-to-speech (14 voices, 5 languages) | gpu-tts (text-to-speech) |
always on |
| Hindi text-to-speech (20 voices) | gpu-tts (text-to-speech) |
on demand |
| text translation (14 languages and Tamil) | ai.ollalink.com/v1/translate (translation) |
always on |
| numbers to digits, embeddings | ai.ollalink.com (text tools) |
always on |
| classification | ai.ollalink.com/v1/classify |
always on |
chat — chat, instructions, tool calls |
ai.ollalink.com/v1/chat/completions (chat and coding) |
always on |
coding — coding tasks and tool calls |
same (chat and coding) | always on |
vision — vision and quick OCR |
same, with an image part (below) | on demand |
| document OCR — PDF or image to markdown | ai.ollalink.com/v1/ocr → job (below) |
always on |
image generation and editing — qwen-image-2.1-turbo (default) |
ai.ollalink.com/v1/images/generations, /v1/images/edits (below) |
always on |
image generation — flux2-klein-4b |
ai.ollalink.com/v1/images/generations (below) |
on demand |
sound effects — stable-audio-3-small-sfx; instrumental music — stable-audio-3-small-music |
ai.ollalink.com/v1/audio/generations (below) |
on demand |
| speaker diarization | gpu-transcribe.ollalink.com/v1/audio/diarization (below) |
on demand |
songs with lyrics — music |
ai.ollalink.com/v1/music/generations → job (below) |
on demand |
Vision and OCR
Section titled “Vision and OCR”Send the image as an image part on POST https://ai.ollalink.com/v1/chat/completions with "model": "vision". It reads printed text, tables, charts and simple diagrams; the answer is in content.
- For a PDF, render each page to an image and send one page per request. For tables, ask for markdown; for forms, ask for JSON.
- Send small text at 2× size, and check identifiers such as serial numbers.
- Not for Hindi (Devanagari) text — the words come out wrong; use document OCR for Hindi documents and speech-to-text for Hindi audio.
- The first call loads the model; every request must finish within 100 seconds, so keep images at 1024 px or smaller.
Document OCR
Section titled “Document OCR”POST https://ai.ollalink.com/v1/ocr turns a PDF or an image (.pdf, .png, .jpg, .jpeg, .webp, up to 25 MB) into markdown,
page by page. More accurate than vision for whole documents, numbers, identifiers and Hindi. Send multipart with file, or JSON
{"file": "<base64 or data: URI>", "file_name": "scan.pdf"}; optional pages ("1,3-4", up to 100 pages per request) and
grounding (true adds each block’s position). OCR runs as a job:
- The
POSTanswers202with{"id": "job_…", "model": "ocr", "status": "queued", "poll": "/v1/jobs/job_…"}. - Poll
GET https://ai.ollalink.com/v1/jobs/{id}every 2 seconds untilstatusisdoneorfailed. - A done job carries
markdown. Each page starts with<!-- page N -->; tables come back as HTML<table>. With"grounding": trueit also carriesblocks: per page number, a list of{"label", "bbox": [x0, y0, x1, y1], "text"}, with boxes in 0–1000 page coordinates.
A one-page document took about 9 seconds in our tests. If the job fails with “not enough free memory”, retry after a minute.
curl https://ai.ollalink.com/v1/ocr -H "X-NH-GPU-Key: $YOUR_GPU_KEY" -F file=@invoice.pdf -F grounding=truecurl https://ai.ollalink.com/v1/jobs/job_… -H "X-NH-GPU-Key: $YOUR_GPU_KEY"Images
Section titled “Images”POST https://ai.ollalink.com/v1/images/generations with JSON {"model", "prompt", "size", "seed"}:
| Field | Values |
|---|---|
model |
qwen-image-2.1-turbo (default, always on; generation and editing) or flux2-klein-4b (on demand; generation only) |
prompt |
1–2,000 characters |
size |
"WIDTHxHEIGHT", each side 256–1024 and a multiple of 32; default "1024x1024" |
seed |
integer 0–2147483647; default 42 (same prompt, size and seed give the same picture) |
n |
1 (the only value) |
The answer is JSON {"created", "model", "size", "seed", "seconds", "data": [{"b64_json": "<PNG as base64>"}]}.
Editing: POST https://ai.ollalink.com/v1/images/edits as multipart with image (the picture to edit, up to 20 MB) and
prompt, optional size and seed; only qwen-image-2.1-turbo edits. Same JSON answer.
Image and audio generation share capacity; when it is busy, a request gets 503 — retry shortly. A
flux2-klein-4b request takes about 40 seconds, because the default image model is reloaded before it answers. While a song
(music) is generating, image requests wait and may get 503 busy; retry.
curl https://ai.ollalink.com/v1/images/generations -H "X-NH-GPU-Key: $YOUR_GPU_KEY" -H "Content-Type: application/json" \ -d '{"prompt": "a network operations centre at night, wide shot", "size": "1024x576"}' \ | python -c "import sys, json, base64; open('image.png', 'wb').write(base64.b64decode(json.load(sys.stdin)['data'][0]['b64_json']))"Generated pictures can get text, counts and diagram details wrong — check them before you use them.
Audio generation
Section titled “Audio generation”POST https://ai.ollalink.com/v1/audio/generations with JSON {"model", "prompt", "duration", "seed"} returns the audio file
itself (audio/wav, 44.1 kHz stereo, 16-bit).
| Field | Values |
|---|---|
model |
stable-audio-3-small-sfx (sound effects) or stable-audio-3-small-music (instrumental music, the default) |
prompt |
1–2,000 characters describing the sound |
duration |
1–120 seconds; default 30 |
seed |
integer 0–2147483647; default 42 |
response_format |
"wav" (the only value) |
Headers: X-Audio-Duration (seconds of audio) and X-Generation-Seconds (time on our side). A request takes about 30–40 seconds
whatever the duration, because the default image model is reloaded before it answers. Busy → 503, retry shortly. For songs with
sung lyrics, use music.
curl https://ai.ollalink.com/v1/audio/generations -H "X-NH-GPU-Key: $YOUR_GPU_KEY" -H "Content-Type: application/json" \ -d '{"model": "stable-audio-3-small-sfx", "prompt": "footsteps on gravel", "duration": 5, "seed": 43}' --output effect.wavSpeaker diarization
Section titled “Speaker diarization”POST https://gpu-transcribe.ollalink.com/v1/audio/diarization as multipart, with file (any audio or video, up to 100 MB)
and optional response_format (json, the default, or rttm). Up to 8 speakers.
curl https://gpu-transcribe.ollalink.com/v1/audio/diarization \ -H "X-NH-GPU-Key: $YOUR_GPU_KEY" -F file=@meeting.wavThe answer lists speakers and segments (start, end, speaker). Diarization gives speaker turns only, with no words;
combine it with file transcription by time. Brief speakers can be missed — check speaker counts on
important recordings.
POST https://ai.ollalink.com/v1/music/generations with {"style", "lyrics", "seed" (optional)}. Lyrics need section tags:
[Intro] [Verse] [Chorus] [Bridge] [Outro]. Music runs as a job:
- The
POSTanswers202with{"id": "job_…", "status": "queued", "poll": "/v1/jobs/job_…"}. - Poll
GET https://ai.ollalink.com/v1/jobs/{id}every few seconds.statusgoesqueued→running→doneorfailed. - Download the song from
GET /v1/jobs/{id}/content?format=m4a(small) or?format=flac(48 kHz stereo).
Jobs are kept for 24 hours; only the key that created a job can read it. The music model’s licence is non-commercial
only — do not use generated songs commercially. While a song is generating, image generation waits; a song of
about a minute took about two minutes in our tests. Sending "model": "stable-audio-3-small-music" to this route returns an
instrumental clip straight away instead (audio generation).
curl https://ai.ollalink.com/v1/music/generations -H "X-NH-GPU-Key: $YOUR_GPU_KEY" -H "Content-Type: application/json" \ -d '{"style": "upbeat electronic pop, female vocal", "lyrics": "[Verse]\nRouters hum along the line\n[Chorus]\nOpen wide", "seed": 42}'curl -o song.m4a "https://ai.ollalink.com/v1/jobs/job_…/content?format=m4a" -H "X-NH-GPU-Key: $YOUR_GPU_KEY"Errors and usage
Section titled “Errors and usage”| Status | Meaning |
|---|---|
400 |
bad request: unknown model, empty messages, an empty or undecodable file, a size, duration or seed out of range |
401 / 403 |
wrong key / no key |
503 busy |
the model is busy; retry after Retry-After |
503 unavailable |
the model could not load or is not answering; retry shortly |
404 on /v1/jobs/{id} |
unknown or expired job, or a job made with a different key |
409 on /v1/jobs/{id}/content |
the job is not done yet |
Usage: chat, coding and vision in tokens, document OCR in pages, images 1 per picture, audio generation and music in seconds of audio, diarization in seconds of audio.
