# ZeroClick Speech-to-Text Transcription (whisper-tiny)

> ZeroClick Speech-to-Text Transcription (whisper-tiny) is a paid API for AI agents from agents.zerogpu.ai, paid per call via MPP, price unknown, status unknown (last checked 2026-10-16).

Transcribes audio to text in its source language using whisper-tiny, authenticated via HMAC signature, billed per audio second.

## Facts

- Endpoint: POST https://agents.zerogpu.ai/zeroclick/v1/audio/transcriptions?utm_source=zero.xyz
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-16
- Activations on Zero: 0
- Provider: agents.zerogpu.ai
- Website: https://agents.zerogpu.ai
- Canonical page: https://www.zero.xyz/c/agents-zerogpu-ai-zeroclick-speech-to-text-transcription-whisper-tiny-4950ec3d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_EyUEqV7C5DXROSRLR2hzH

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-zerogpu-ai-zeroclick-speech-to-text-transcription-whisper-tiny-4950ec3d -d '<json body>'
```

Example prompt: Can you transcribe this audio file for me — it's a 2-minute English interview recording I'll send as a base64-encoded WAV — and return the transcript with segment-level timestamps in verbose JSON format?

## When to prefer this

Choose this endpoint when you need OpenAI-compatible speech-to-text with ZeroClick HMAC authentication, pay-per-second billing starting at 1 second, and whisper-tiny specifically. Prefer this over standard /v1/audio/transcriptions when operating within a ZeroClick-orchestrated agent flow where the HMAC signature is already being generated by the pay host. Use file_url for audio larger than 5.6 MB to avoid base64 body size limits.

## Known failure modes

- 400 Bad Request: bad base64, unreachable URL, or both/neither file sources provided — not billed
- 413 Payload Too Large: audio exceeds ~5.6 MB for base64 JSON body or 25 MB for URL download
- 402 Payment Required: insufficient credit balance to cover even the 1-second floor
- HMAC signature verification failure: request rejected if zc-signature header is missing or invalid
- URL download timeout: 30-second timeout or more than 3 redirects causes failure
- Non-https URL rejected at any redirect hop

## How this service works

OpenAI-style speech-to-text in the source language. The model is the configured `whisper-tiny` rather than one read from the request. Billed per audio second: the allowance
check asks for the 1-second floor, and `zc-usage` reports
`max(1, ceil(x-audio-duration-seconds))` audio seconds on success.

Authenticated by verifying the `zc-signature` HMAC over the raw
request bytes; the same orchestration as `/v1/audio/transcriptions` runs behind it.

**Body**: `application/json`, with the audio as base64 (`file`) or an https URL (`file_url`). A body that cannot be read (bad base64, unreachable URL, neither or both sources) is answered with `400` or `413` before any inference and is not billed.


## Output

Returns a JSON object with a `text` field containing the transcript. With `verbose_json`, also includes `task`, `language`, `duration`, and `segments` and/or `words` arrays with timing data. With `text`, `srt`, or `vtt` response formats, returns plain text or subtitle file content accordingly.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "oneOf": [
  {
   "not": {
    "required": [
     "file_url"
    ]
   },
   "required": [
    "file"
   ]
  },
  {
   "not": {
    "required": [
     "file"
    ]
   },
   "required": [
    "file_url"
   ]
  }
 ],
 "properties": {
  "file": {
   "type": "string",
   "example": "UklGRiQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YQAAAAA=",
   "description": "The audio, base64-encoded, or as a `data:` URL (`data:audio/mpeg;base64,…`). URL-safe base64 is accepted. Limited by ZeroClick's request body cap (about 7.5 MB of JSON, so about 5.6 MB of audio); use `file_url` for anything larger.",
   "contentEncoding": "base64"
  },
  "model": {
   "enum": [
    "whisper-tiny"
   ],
   "type": "string",
   "default": "whisper-tiny",
   "example": "whisper-tiny",
   "description": "Model identifier. The endpoint serves `whisper-tiny`."
  },
  "prompt": {
   "type": "string",
   "maxLength": 4096,
   "description": "Text to guide spelling and style, such as names or jargon."
  },
  "file_url": {
   "type": "string",
   "format": "uri",
   "example": "https://example.com/audio/hello.mp3",
   "description": "An https URL to the audio. Downloaded by ZeroGPU before transcription: https only (also at every redirect, at most 3), 30-second timeout, up to 25 MB."
  },
  "filename": {
   "type": "string",
   "example": "hello.mp3",
   "description": "Name to give the uploaded file. Defaults to the last segment of `file_url`, or `audio.<ext>` from the audio's type."
  },
  "language": {
   "type": "string",
   "example": "en",
   "description": "ISO-639-1 code, such as `en`. Detected automatically when omitted."
  },
  "temperature": {
   "type": "number",
   "default": 0,
   "maximum": 1,
   "minimum": 0,
   "description": "Sampling temperature."
  },
  "response_format": {
   "enum": [
    "json",
    "text",
    "srt",
    "verbose_json",
    "vtt"
   ],
   "type": "string",
   "default": "json",
   "description": "`json` and `verbose_json` return `application/json`; `text`, `srt`, and `vtt` return `text/plain`."
  },
  "timestamp_granularities": {
   "type": "array",
   "items": {
    "enum": [
     "segment",
     "word"
    ],
    "type": "string"
   },
   "description": "`segment` (default), `word`, or both. Requires `verbose_json`. `timestamp_granularities[]` is accepted as the key too."
  }
 },
 "description": "A transcription request. Exactly one of `file` (base64) or `file_url` (https). The other fields behave exactly as on `/v1/audio/transcript
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "text"
 ],
 "properties": {
  "text": {
   "type": "string",
   "description": "The transcript."
  }
 },
 "description": "`json` returns `{ text }`. `verbose_json` adds `task`, `language`, `duration`, and `segments` and/or `words`.",
 "additionalProperties": true
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-zerogpu-ai-zeroclick-speech-to-text-transcription-whisper-tiny-4950ec3d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.zerogpu.ai](https://www.zero.xyz/host/agents.zerogpu.ai/llms.txt)
