# Speech Source: https://docs.zerogpu.ai/api-reference/audio-speech api-reference/openapi/zerogpu.openapi.json POST /audio/speech Generate speech from text with chatterbox-nano, with optional voice cloning from a reference clip. ## Limits | Limit | Value | | - | - | | `input` length | 2,000 characters, English only. Requests near the limit can time out with `524`. | | `voice_sample` duration | 6 to 30 seconds | | `voice_sample` size | 10 MB | | `voice_sample` formats | mp3, m4a, wav, flac, ogg, webm, mp4 | | Unsupported parameters | `instructions`, `exaggeration`, `cfg_weight`, `min_p`, and `speed` other than `1.0` return `400` | ```bash cURL (voice cloning) theme={null} curl --location 'https://api.zerogpu.ai/v1/audio/speech' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'model="chatterbox-nano"' \ --form 'input="Testing model to generate voice. Hey how are you today?"' \ --form 'response_format="mp3"' \ --form 'seed="1234"' \ --form 'voice_sample=@"/path/to/file"' \ --output speech.mp3 ``` ```bash cURL (JSON) theme={null} curl --location 'https://api.zerogpu.ai/v1/audio/speech' \ --header 'content-type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "model": "chatterbox-nano", "input": "Hello from ZeroGPU.", "voice": "alloy", "response_format": "mp3" }' \ --output speech.mp3 ``` ```python Python theme={null} from openai import OpenAI client = OpenAI( base_url="https://api.zerogpu.ai/v1", api_key="YOUR_API_KEY", # sent as Authorization: Bearer ) with client.audio.speech.with_streaming_response.create( model="chatterbox-nano", voice="alloy", # OpenAI voice names map to the built-in voice input="Hello from ZeroGPU.", response_format="mp3", ) as response: response.stream_to_file("speech.mp3") ``` ```javascript JavaScript theme={null} import fs from "node:fs"; import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.zerogpu.ai/v1", apiKey: "YOUR_API_KEY", // sent as Authorization: Bearer }); const speech = await client.audio.speech.create({ model: "chatterbox-nano", voice: "alloy", // OpenAI voice names map to the built-in voice input: "Hello from ZeroGPU.", response_format: "mp3", }); fs.writeFileSync("speech.mp3", Buffer.from(await speech.arrayBuffer())); ``` ```text 200 theme={null} HTTP/2 200 content-type: audio/mpeg x-audio-duration-seconds: 1.76 ``` # Transcriptions Source: https://docs.zerogpu.ai/api-reference/audio-transcriptions api-reference/openapi/zerogpu.openapi.json POST /audio/transcriptions Transcribe audio into text with whisper-tiny. ## Limits | Limit | Value | | - | - | | File size | 25 MB | | Audio duration | 10 minutes | | Formats | flac, m4a, mp3, mp4, mpeg, mpga, oga, ogg, wav, webm | To translate speech into English, send the same form to `POST /v1/audio/translations`, without `language`. ```bash cURL theme={null} curl --location 'https://api.zerogpu.ai/v1/audio/transcriptions' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'model="whisper-tiny"' \ --form 'file=@"/path/to/audio.mp3"' ``` ```python Python theme={null} from openai import OpenAI client = OpenAI( base_url="https://api.zerogpu.ai/v1", api_key="YOUR_API_KEY", # sent as Authorization: Bearer ) with open("/path/to/audio.mp3", "rb") as audio: transcript = client.audio.transcriptions.create( model="whisper-tiny", file=audio, ) print(transcript.text) ``` ```javascript JavaScript theme={null} import fs from "node:fs"; import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.zerogpu.ai/v1", apiKey: "YOUR_API_KEY", // sent as Authorization: Bearer }); const transcript = await client.audio.transcriptions.create({ model: "whisper-tiny", file: fs.createReadStream("/path/to/audio.mp3"), }); console.log(transcript.text); ``` ```json json theme={null} { "text": "the quick brown fox jumps over the lazy dog." } ``` ```json verbose_json theme={null} { "task": "transcribe", "language": "english", "duration": 1.76, "text": "Hello from Zero GPU.", "segments": [ { "id": 0, "seek": 0, "start": 0.0, "end": 2.0, "text": " Hello from Zero GPU.", "tokens": [50364, 2425, 490, 17182, 18407, 13, 50464], "temperature": 0.0, "avg_logprob": -0.797803, "compression_ratio": 0.724138, "no_speech_prob": 0.023181 } ] } ``` # Cancel batch Source: https://docs.zerogpu.ai/api-reference/cancel-batch api-reference/openapi/batch.openapi.json POST /v1/batches/{batch_id}/cancel Interactive playground for POST /v1/batches/{batch_id}/cancel. Request cancellation while a batch is `in_progress` or `validating`. Terminal batches return `409`. Poll status on [Retrieve batch](/api-reference/retrieve-batch). Full reference: [Batches API](/docs/batch/objects). # Chat completions Source: https://docs.zerogpu.ai/api-reference/chat-completions api-reference/openapi/zerogpu.openapi.json POST /chat/completions OpenAI-style chat inference for models that use this route. Some models are invoked with a **chat-completions** style body (`messages` array) instead of the [Responses](/api-reference/responses) `input` field. The dashboard and [model catalog](/docs/model-catalog) indicate which route applies. Each model page has its own playground with the right examples for that model. Install the official SDK from [npm](https://www.npmjs.com/package/zerogpu-api) or [PyPI](https://pypi.org/project/zerogpu-api/) (`pip install zerogpu-api`). Source: [zerogpu/SDK](https://github.com/zerogpu/SDK). Response JSON shape depends on the model; handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Create batch Source: https://docs.zerogpu.ai/api-reference/create-batch api-reference/openapi/batch.openapi.json POST /v1/batches Interactive playground for POST /v1/batches. Create a batch job from a JSONL file you already uploaded. 1. Upload input JSONL on [Upload file](/api-reference/upload-file) or via [Quickstart](/docs/batch/getting-started) (`purpose=batch`). 2. Paste the returned `file-…` id into `input_file_id` below. 3. Set `endpoint` to `/v1/chat/completions` (must match every line in your JSONL). Full reference: [Batches API](/docs/batch/objects). # Delete file Source: https://docs.zerogpu.ai/api-reference/delete-file api-reference/openapi/batch.openapi.json DELETE /v1/files/{file_id} Interactive playground for DELETE /v1/files/{file_id}. Soft-delete a file. It is removed from storage immediately and returns `404` on list, retrieve, and download afterward. Deleting an input file does not stop an active batch. Full reference: [Files API](/docs/batch/objects). # Download file Source: https://docs.zerogpu.ai/api-reference/download-file api-reference/openapi/batch.openapi.json GET /v1/files/{file_id}/content Interactive playground for GET /v1/files/{file_id}/content. Download the raw JSONL body for an input file you uploaded or for `output_file_id` / `error_file_id` from a [completed batch](/api-reference/retrieve-batch). Response is streamed as `application/jsonl`. Full reference: [Files API](/docs/batch/objects). # Embeddings Source: https://docs.zerogpu.ai/api-reference/embeddings api-reference/openapi/zerogpu.openapi.json POST /embeddings Turn text into vectors for semantic search, RAG, clustering, and deduplication. Send text as `input` and get back OpenAI's embeddings envelope: an `object` of `list`, a `data` array with one `{ object, index, embedding }` entry per input, the resolved `model`, and `usage`. It is drop-in compatible with OpenAI's Embeddings API, so an existing client only needs its base URL and model id changed. See the [Embeddings](/docs/embeddings) guide for a prefilled example, or a model page ([all-minilm-l6-v2](/api-reference/models/all-minilm-l6-v2), [bge-small-en-v1.5](/api-reference/models/bge-small-en-v1-5)) for an interactive playground. Embedding models are routable **only** on this endpoint. A `/responses` or `/chat/completions` call with an embedding model returns `400`. Pass `input` as a string, or as an array of strings to embed a batch in one request; `data[i].index` maps each vector back to its input. Both models return 384-dimensional vectors, so they are interchangeable in an existing index. Embeddings are billed on input tokens only. `usage` carries `prompt_tokens` and `total_tokens`, and there are no output tokens to bill. Install the official SDK from [npm](https://www.npmjs.com/package/zerogpu-api) or [PyPI](https://pypi.org/project/zerogpu-api/) (`pip install zerogpu-api`). Source: [zerogpu/SDK](https://github.com/zerogpu/SDK). Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # List batches Source: https://docs.zerogpu.ai/api-reference/list-batches api-reference/openapi/batch.openapi.json GET /v1/batches Interactive playground for GET /v1/batches. List batch jobs in your project. Use `after` with `last_id` from a previous page to paginate. Full reference: [Batches API](/docs/batch/objects). # List files Source: https://docs.zerogpu.ai/api-reference/list-files api-reference/openapi/batch.openapi.json GET /v1/files Interactive playground for GET /v1/files. List files for your project. Filter with `purpose=batch` (uploads) or `purpose=batch_output` (batch results; check `is_error` on each item for error files). Use `last_id` from the response as `after` on the next request to page. Full reference: [Files API](/docs/batch/objects). # all-minilm-l6-v2 Source: https://docs.zerogpu.ai/api-reference/models/all-minilm-l6-v2 api-reference/openapi/playgrounds/all-minilm-l6-v2.openapi.json POST /embeddings Model details for all-minilm-l6-v2. 384-dimensional sentence embeddings for semantic search and RAG. This model is routable only on `/v1/embeddings`. A `/responses` or `/chat/completions` call with an embedding model returns `400`. Send `input` as a string, or as an array of strings to embed a batch in one request. The response `model` field reads `all-MiniLM-L6-v2`, the upstream capitalization of the id you send. > Sentence-Transformers' all-MiniLM-L6-v2 is the default workhorse of semantic search. It maps a sentence or short paragraph to a 384-dimensional vector, trained with contrastive learning on more than a billion sentence pairs, so cosine distance between two vectors tracks how close the two texts are in meaning. At 22.7M parameters it embeds fast and cheap enough to index a whole corpus and re-embed it whenever your content changes, which is what retrieval-augmented generation, deduplication, clustering, and recommendation pipelines actually need. Inputs are truncated at 256 tokens, so embed chunks rather than whole documents. Embeddings are priced on input tokens only. There are no output tokens to bill, so a call costs \$0.004 per 1M tokens embedded. **References:** [Model card](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) • [License](https://www.apache.org/licenses/LICENSE-2.0) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # bge-small-en-v1.5 Source: https://docs.zerogpu.ai/api-reference/models/bge-small-en-v1-5 api-reference/openapi/playgrounds/bge-small-en-v1_5.openapi.json POST /embeddings Model details for bge-small-en-v1.5. 384-dimensional English retrieval embeddings with a 512-token window. This model is routable only on `/v1/embeddings`. A `/responses` or `/chat/completions` call with an embedding model returns `400`. Send `input` as a string, or as an array of strings to embed a batch in one request. > BAAI's BGE-small-en-v1.5 is a retrieval-first English embedding model and one of the strongest performers on the MTEB benchmark for its size. Like [all-minilm-l6-v2](/api-reference/models/all-minilm-l6-v2) it produces 384-dimensional vectors, so it is a drop-in swap in an existing index, but it takes a 512-token window instead of 256 and is tuned specifically for dense retrieval rather than general sentence similarity. At 33M parameters it is the one to reach for when the job is ranking passages against a query: RAG retrieval, search over a document corpus, or reranking candidates before they reach a larger model. Embeddings are priced on input tokens only. There are no output tokens to bill, so a call costs \$0.004 per 1M tokens embedded. **References:** [Model card](https://huggingface.co/BAAI/bge-small-en-v1.5) • [License](https://opensource.org/license/mit) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # chatterbox-nano Source: https://docs.zerogpu.ai/api-reference/models/chatterbox-nano api-reference/openapi/playgrounds/chatterbox-nano.openapi.json POST /audio/speech Model details for chatterbox-nano. English text-to-speech with voice cloning. This model is routable only on `/v1/audio/speech`. To clone a voice, send `multipart/form-data` with a `voice_sample` file. > Resemble AI's Chatterbox Nano is a 110M-parameter English text-to-speech model built for fast, low-cost speech generation. It speaks your text in a built-in voice, or clones a speaker from a short reference clip you upload with the request, and inline tags such as `[laugh]`, `[chuckle]`, and `[cough]` add paralinguistic cues. Its compact size keeps generation cheap enough for high-volume work: voice agents, conversational AI, gaming, accessibility, audiobooks, and content creation. **References:** [Model card](https://huggingface.co/ResembleAI/chatterbox-nano) • [License](https://github.com/resemble-ai/chatterbox/blob/master/LICENSE) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) ## Limits | Limit | Value | | - | - | | `input` length | 2,000 characters, English only. Requests near the limit can time out with `524`. | | `voice_sample` duration | 6 to 30 seconds | | `voice_sample` size | 10 MB | | `voice_sample` formats | mp3, m4a, wav, flac, ogg, webm, mp4 | | Unsupported parameters | `instructions`, `exaggeration`, `cfg_weight`, `min_p`, and `speed` other than `1.0` return `400` | ```bash cURL (voice cloning) theme={null} curl --location 'https://api.zerogpu.ai/v1/audio/speech' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'model="chatterbox-nano"' \ --form 'input="Testing model to generate voice. Hey how are you today?"' \ --form 'response_format="mp3"' \ --form 'seed="1234"' \ --form 'voice_sample=@"/path/to/file"' \ --output speech.mp3 ``` ```bash cURL (JSON) theme={null} curl --location 'https://api.zerogpu.ai/v1/audio/speech' \ --header 'content-type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "model": "chatterbox-nano", "input": "Hello from ZeroGPU.", "voice": "alloy", "response_format": "mp3" }' \ --output speech.mp3 ``` ```python Python theme={null} from openai import OpenAI client = OpenAI( base_url="https://api.zerogpu.ai/v1", api_key="YOUR_API_KEY", # sent as Authorization: Bearer ) with client.audio.speech.with_streaming_response.create( model="chatterbox-nano", voice="alloy", # OpenAI voice names map to the built-in voice input="Hello from ZeroGPU.", response_format="mp3", ) as response: response.stream_to_file("speech.mp3") ``` ```javascript JavaScript theme={null} import fs from "node:fs"; import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.zerogpu.ai/v1", apiKey: "YOUR_API_KEY", // sent as Authorization: Bearer }); const speech = await client.audio.speech.create({ model: "chatterbox-nano", voice: "alloy", // OpenAI voice names map to the built-in voice input: "Hello from ZeroGPU.", response_format: "mp3", }); fs.writeFileSync("speech.mp3", Buffer.from(await speech.arrayBuffer())); ``` ```text 200 theme={null} HTTP/2 200 content-type: audio/mpeg x-audio-duration-seconds: 1.76 ``` # deberta-v3-small Source: https://docs.zerogpu.ai/api-reference/models/deberta-v3-small api-reference/openapi/playgrounds/deberta-v3-small.openapi.json POST /responses Model details for deberta-v3-small. > Microsoft's DeBERTa-v3-small is a fast, lightweight zero-shot text classifier for high-volume routing, filtering, and tagging. Hand it any text alongside your own candidate labels and it returns a confidence score for each. No training data and no fixed taxonomy, just the categories you define at request time. Because it scores every label rather than forcing one choice, you get soft probabilities to threshold, rank, or route on however your pipeline needs. Purpose-built and CPU-optimized, it runs faster and cheaper than asking a general-purpose frontier model to classify. **References:** [Model docs](https://github.com/microsoft/DeBERTa/tree/master/docs) • [Terms](https://github.com/microsoft/DeBERTa/blob/master/SECURITY.md) • [Privacy](https://github.com/microsoft/DeBERTa/blob/master/LICENSE) # deepseek-v4.1-flash Source: https://docs.zerogpu.ai/api-reference/models/deepseek-v4-1-flash api-reference/openapi/playgrounds/deepseek-v4_1-flash.openapi.json POST /responses Model details for deepseek-v4.1-flash. Reasoning, coding, and agentic workflows with a 1M-token context window. > DeepSeek's DeepSeek-V4.1-Flash is an open-weight sparse Mixture-of-Experts model and the first built on DeepSeek's Causal Encoder-Decoder (CED) architecture, activating 8B parameters on input and 16B on output, served on ZeroGPU for general text generation. It keeps the 1,048,576-token (1M) context window of the V4 Flash line, which suits large codebases, long documents, extended conversations, and multi-step agent tasks, and supports function calling alongside both fast non-thinking replies and higher-effort reasoning. **References:** [Model docs](https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash) • [Terms](https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash/blob/main/LICENSE) • [Privacy](https://zerogpu.ai/privacy-policy) # gliner2.5-base-v1 Source: https://docs.zerogpu.ai/api-reference/models/gliner2-5-base-v1 api-reference/openapi/playgrounds/gliner2_5-base-v1.openapi.json POST /responses Model details for gliner2.5-base-v1. English schema-based information extraction built on DeBERTa-v3-base. > Fastino's GLiNER2.5 Base is an English schema-based information extraction model built on DeBERTa-v3-base. A single model covers entity extraction, text classification, structured record extraction, relation extraction, and span-level attributes — you supply a label set or a schema at inference time instead of fine-tuning one model per task. It fits GTM workflows such as parsing inbound leads, extracting company and contact details, classifying sales conversations, identifying relationships between people and companies, structuring CRM notes, and enriching customer or account data. **References:** [Model docs](https://huggingface.co/fastino/gliner2.5-base-v1) • [Terms](https://github.com/fastino-ai/GLiNER2/blob/main/LICENSE) • [Privacy](https://github.com/fastino-ai/GLiNER2/blob/main/LICENSE) # gliner2.5-decide-v1 Source: https://docs.zerogpu.ai/api-reference/models/gliner2-5-decide-v1 api-reference/openapi/playgrounds/gliner2_5-decide-v1.openapi.json POST /responses Model details for gliner2.5-decide-v1. Zero-shot decision and classification with caller-supplied labels. > Fastino's GLiNER2.5 Decide is a 486M-parameter zero-shot decision and classification model built for operational AI workflows. You supply the labels or decision options at request time to classify intent, route agents and tools, triage support requests, make moderation decisions, detect completion, and determine when a request needs human handoff. It handles single-label, multi-label, and several decision heads in one call, which suits high-volume routing and decision workloads where speed and structured outputs matter. **References:** [Model docs](https://huggingface.co/fastino/GLiNER2.5-Decide) • [Terms](https://github.com/fastino-ai/GLiNER2/blob/main/LICENSE) • [Privacy](https://github.com/fastino-ai/GLiNER2/blob/main/LICENSE) # gliner2.5-multi-v1 Source: https://docs.zerogpu.ai/api-reference/models/gliner2-5-multi-v1 api-reference/openapi/playgrounds/gliner2_5-multi-v1.openapi.json POST /responses Model details for gliner2.5-multi-v1. Multilingual information extraction built on mDeBERTa-v3-base. > Fastino's GLiNER2.5 Multi is a 287M-parameter multilingual information extraction model built on mDeBERTa-v3-base. It supports zero-shot named entity recognition, text classification, and structured JSON extraction across multiple languages, so it can pull people, organizations, locations, attributes, and other custom entities out of text without task-specific retraining. **References:** [Model docs](https://huggingface.co/fastino/gliner2.5-multi-v1) • [Terms](https://github.com/fastino-ai/GLiNER2/blob/main/LICENSE) • [Privacy](https://github.com/fastino-ai/GLiNER2/blob/main/LICENSE) # glm-5.3-flash Source: https://docs.zerogpu.ai/api-reference/models/glm-5-3-flash api-reference/openapi/playgrounds/glm-5_3-flash.openapi.json POST /responses Model details for glm-5.3-flash. Coding and long-horizon agent tasks with a 1M-token context window. > Z.ai's GLM-5.3-Flash is an efficient open-weight model for coding and long-horizon agent tasks, served on ZeroGPU for general text generation. Its hybrid sparse and linear attention keeps long-context behaviour accurate across a 1,048,576-token (1M) window while reducing compute, and it supports function calling and adjustable reasoning effort. **References:** [Model docs](https://huggingface.co/zai-org/GLM-5.3-Flash) • [Terms](https://huggingface.co/zai-org/GLM-5.3-Flash/blob/main/LICENSE) • [Privacy](https://zerogpu.ai/privacy-policy) # gpt-4.1-mini Source: https://docs.zerogpu.ai/api-reference/models/gpt-4-1-mini api-reference/openapi/playgrounds/gpt-4_1-mini.openapi.json POST /responses Model details for gpt-4.1-mini. Instruction following and tool calling with a 1,047,576-token context window. > OpenAI's GPT-4.1 mini is the fast, cost-efficient model of the GPT-4.1 family, served on ZeroGPU for general text generation. It excels at instruction following and tool calling, supports function calling and structured outputs, and works across a 1,047,576-token (1M) context window with low latency. **References:** [Terms](https://openai.com/policies/services-agreement/) • [Privacy](https://zerogpu.ai/privacy-policy) # gpt-5.4-nano Source: https://docs.zerogpu.ai/api-reference/models/gpt-5-4-nano api-reference/openapi/playgrounds/gpt-5_4-nano.openapi.json POST /responses Model details for gpt-5.4-nano. High-volume, latency-sensitive workloads with a 400K-token context window. > OpenAI's GPT-5.4 nano is the most cost-efficient model in the GPT-5.4 family, served on ZeroGPU for high-volume and latency-sensitive workloads such as classification, extraction, routing, and sub-agent tasks. It supports function calling and structured outputs across a 400,000-token context window. **References:** [Terms](https://openai.com/policies/services-agreement/) • [Privacy](https://zerogpu.ai/privacy-policy) # gpt-5.6-luna Source: https://docs.zerogpu.ai/api-reference/models/gpt-5-6-luna api-reference/openapi/playgrounds/gpt-5_6-luna.openapi.json POST /responses Model details for gpt-5.6-luna. Cost-optimized generation with adjustable reasoning effort and a 272K-token context window. > OpenAI's GPT-5.6 Luna is the cost-optimized model of the GPT-5.6 family, served on ZeroGPU for cost-sensitive, high-volume workloads. It supports adjustable reasoning effort, function calling, and structured outputs across a 272,000-token context window. **References:** [Terms](https://openai.com/policies/services-agreement/) • [Privacy](https://zerogpu.ai/privacy-policy) # gpt-oss-120b Source: https://docs.zerogpu.ai/api-reference/models/gpt-oss-120b api-reference/openapi/playgrounds/gpt-oss-120b.openapi.json POST /responses Model details for gpt-oss-120b. Function calling, batch tasks, and reasoning with a 131K context window. > OpenAI's gpt-oss-120b is an open-weight Mixture-of-Experts model with 117B total parameters (5.1B active per token), served on ZeroGPU for general text generation. It reasons through a problem before answering and returns that reasoning trace alongside the final answer, and it supports function calling, batch tasks, and a 131,072-token context window. When a task needs frontier-level reasoning or tool use beyond what the smaller edge models cover, this is the model. **References:** [Model docs](https://huggingface.co/openai/gpt-oss-120b) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # LFM2.5-1.2B-Instruct Source: https://docs.zerogpu.ai/api-reference/models/lfm2-5-1-2b-instruct api-reference/openapi/playgrounds/LFM2_5-1_2B-Instruct.openapi.json POST /responses Model details for LFM2.5-1.2B-Instruct. > Liquid AI's LFM2.5-1.2B-Instruct is a hybrid architecture model purpose-built for on-device deployment, trained on 28 trillion tokens with multi-stage reinforcement learning. It delivers best-in-class instruction following and native tool-calling at the 1B scale — something very few models this size can do reliably. Its hybrid design gives it significantly faster inference with lower memory usage compared to transformer-only models of the same size. If you need a conversational model that can actually run on real devices without a GPU, this is it. Supports 8 languages including English, Chinese, Japanese, and Spanish. **References:** [Model docs](https://docs.liquid.ai/deployment/on-device/android/ai-agent-usage-guide#text-models) • [Terms](https://www.liquid.ai/terms-conditions) • [Privacy](https://www.liquid.ai/lfm-license) # LFM2.5-1.2B-Thinking Source: https://docs.zerogpu.ai/api-reference/models/lfm2-5-1-2b-thinking api-reference/openapi/playgrounds/LFM2_5-1_2B-Thinking.openapi.json POST /responses Model details for LFM2.5-1.2B-Thinking. > Liquid AI's LFM2.5-1.2B-Thinking is a compact reasoning model that works through a problem step by step before it answers. Built by Liquid AI, it generates an explicit chain-of-thought trace so for multi-step math, planning, data extraction, and agentic tool-calling, you get verifiable intermediate reasoning, not just a final guess. At 1.2B parameters it fits under a gigabyte and runs fast on CPU at the edge, rivaling models several times its size on reasoning benchmarks. Reach for a frontier model when the task is knowledge-heavy or code-intensive, and keep this one as the planning brain that decides and orchestrates. When the task needs reasoning, this is the model. **References:** [Model docs](https://docs.liquid.ai/deployment/on-device/android/ai-agent-usage-guide#text-models) • [Terms](https://www.liquid.ai/terms-conditions) • [Privacy](https://www.liquid.ai/lfm-license) # llama-3.1-8b-instruct-fast Source: https://docs.zerogpu.ai/api-reference/models/llama-3-1-8b-instruct-fast api-reference/openapi/playgrounds/llama-3_1-8b-instruct-fast.openapi.json POST /chat/completions Model details for llama-3.1-8b-instruct-fast. > Meta's Llama 3.1 Instruct, tuned for fast, low-cost summarization at scale on the ZeroGPU edge network. Its 128K-token context window takes in entire documents, long transcripts, and full email or chat threads in a single pass. No chunking, no stitching partial summaries back together. Built for the high-volume summarization that runs around your core product: condensing long reports and transcripts, summarizing email and chat threads, and processing articles in bulk. When context length matters and you're summarizing on every request, this is the model that keeps it fast and affordable. **References:** [Model docs](https://github.com/meta-llama/llama-models/tree/main/models/llama3_1) • [Terms](https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/LICENSE) • [Privacy](https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/USE_POLICY.md) # llama-guard-4-12b Source: https://docs.zerogpu.ai/api-reference/models/llama-guard-4-12b api-reference/openapi/playgrounds/llama-guard-4-12b.openapi.json POST /moderations Model details for llama-guard-4-12b. Multimodal safety classification for prompts and responses. > Meta's Llama Guard 4 12B is a multimodal safety classification model for moderating text, images, and mixed text-image inputs. It evaluates both incoming prompts and generated responses, returning a safe or unsafe classification along with the policy categories a violation falls under. It handles multilingual text and multiple images in one call, which makes it a fit for chat moderation, prompt and response filtering, policy enforcement, and agent guardrails. Built on a dense 12B architecture derived from Llama 4 Scout, it is designed as a dedicated safety layer in front of a production model rather than as a general-purpose generator. **References:** [Model docs](https://huggingface.co/meta-llama/Llama-Guard-4-12B) • [Terms](https://huggingface.co/meta-llama/Llama-Guard-4-12B) • [Privacy](https://huggingface.co/meta-llama/Llama-Guard-4-12B) # qwen3-30b-a3b-fp8 Source: https://docs.zerogpu.ai/api-reference/models/qwen3-30b-a3b-fp8 api-reference/openapi/playgrounds/qwen3-30b-a3b-fp8.openapi.json POST /chat/completions Model details for qwen3-30b-a3b-fp8. Multilingual, streaming, batch tasks, reasoning, and function calling with a 32K context window. This model supports the Chat Completions API only. Send requests to `/v1/chat/completions` — the Responses endpoint (`/v1/responses`) is not available for this model. > Alibaba's Qwen3-30B-A3B is an open-weight Mixture-of-Experts model with 30.5B total parameters (3.3B active per token), served on ZeroGPU as an FP8 build for efficient inference. It thinks through a problem before answering and returns that reasoning alongside the final text, and it supports function calling, streaming, batch tasks, and 100+ languages with a 32,768-token context window. When you want frontier-style reasoning and tool use in a lighter, multilingual package, this is the model. **References:** [Model docs](https://huggingface.co/Qwen/Qwen3-30B-A3B-FP8) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # qwen3.6-35b-a3b Source: https://docs.zerogpu.ai/api-reference/models/qwen3-6-35b-a3b api-reference/openapi/playgrounds/qwen3_6-35b-a3b.openapi.json POST /responses Model details for qwen3.6-35b-a3b. Fast open-weight multimodal generation across text, images, and video. > Alibaba's Qwen3.6-35B-A3B is a fast, open-weight multimodal model for applications that need to understand text, images, and video, served on ZeroGPU as an FP8 build. It suits visual question answering, document and screenshot analysis, video understanding, content extraction, agent workflows, and tool calling, and it supports structured output. Its Mixture-of-Experts architecture keeps inference efficient while it works through large amounts of multimodal content. When the input is images or video rather than text alone, this is the model. **References:** [Model docs](https://huggingface.co/Qwen/Qwen3.6-35B-A3B) • [Terms](https://huggingface.co/Qwen/Qwen3.6-35B-A3B) • [Privacy](https://huggingface.co/Qwen/Qwen3.6-35B-A3B) # whisper-tiny Source: https://docs.zerogpu.ai/api-reference/models/whisper-tiny api-reference/openapi/playgrounds/whisper-tiny.openapi.json POST /audio/transcriptions Model details for whisper-tiny. Multilingual speech-to-text. This model is routable only on `/v1/audio/transcriptions`, and on `/v1/audio/translations` to translate speech into English. > OpenAI's Whisper Tiny is the smallest model in the Whisper family of speech recognition models, at 39M parameters. It is the multilingual checkpoint: it transcribes speech in the language it was spoken, detecting that language on its own when you don't name it, and it can translate speech into English. Its size makes it fast and cheap enough for high-volume transcription where throughput and cost matter more than the accuracy of the larger Whisper models: voice agents, meeting notes, subtitles, podcasts, and audio indexing. **References:** [Model card](https://huggingface.co/openai/whisper-tiny) • [License](https://github.com/openai/whisper/blob/main/LICENSE) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) ## Limits | Limit | Value | | - | - | | File size | 25 MB | | Audio duration | 10 minutes | | Formats | flac, m4a, mp3, mp4, mpeg, mpga, oga, ogg, wav, webm | ```bash cURL theme={null} curl --location 'https://api.zerogpu.ai/v1/audio/transcriptions' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'model="whisper-tiny"' \ --form 'file=@"/path/to/audio.mp3"' ``` ```python Python theme={null} from openai import OpenAI client = OpenAI( base_url="https://api.zerogpu.ai/v1", api_key="YOUR_API_KEY", # sent as Authorization: Bearer ) with open("/path/to/audio.mp3", "rb") as audio: transcript = client.audio.transcriptions.create( model="whisper-tiny", file=audio, ) print(transcript.text) ``` ```javascript JavaScript theme={null} import fs from "node:fs"; import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.zerogpu.ai/v1", apiKey: "YOUR_API_KEY", // sent as Authorization: Bearer }); const transcript = await client.audio.transcriptions.create({ model: "whisper-tiny", file: fs.createReadStream("/path/to/audio.mp3"), }); console.log(transcript.text); ``` ```json json theme={null} { "text": "the quick brown fox jumps over the lazy dog." } ``` ```json verbose_json theme={null} { "task": "transcribe", "language": "english", "duration": 1.76, "text": "Hello from Zero GPU.", "segments": [ { "id": 0, "seek": 0, "start": 0.0, "end": 2.0, "text": " Hello from Zero GPU.", "tokens": [50364, 2425, 490, 17182, 18407, 13, 50464], "temperature": 0.0, "avg_logprob": -0.797803, "compression_ratio": 0.724138, "no_speech_prob": 0.023181 } ] } ``` # zlm-v1-iab-classify-edge Source: https://docs.zerogpu.ai/api-reference/models/zlm-v1-iab-classify-edge api-reference/openapi/playgrounds/zlm-v1-iab-classify-edge.openapi.json POST /responses Model details for zlm-v1-iab-classify-edge. Supports 50+ languages. The `instructions` field is not needed for this model. It maps your input directly to the IAB Content Taxonomy, so you only need to send input > ZeroGPU's IAB classifier maps any text to the industry-standard IAB Content Taxonomy in a single, fast inference call. Each call returns categories across both the 1.0 and 2.2 taxonomies plus matched audience segments, every result scored for confidence. With support for 50+ languages, it classifies multilingual content without a translation step. At 90M parameters on ONNX, it's built for the high-volume, sub-millisecond classification that ad tech and content platforms demand, right at the edge. When you need clean category and audience signals on every request, this is the model — and when you need the full profile, reach for the enriched variant. ## System One It also answers [System One](/api-reference/systemone) decisions on `/v1/systemone`: ask which IAB category best matches (`choice`), whether content belongs to a category (`noul`), or how strongly it matches one (`score`). **References:** [Model docs](https://docs.zerogpu.ai/) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # zlm-v1-iab-domain-classifier Source: https://docs.zerogpu.ai/api-reference/models/zlm-v1-iab-domain-classifier api-reference/openapi/playgrounds/zlm-v1-iab-domain-classifier.openapi.json POST /responses Model details for zlm-v1-iab-domain-classifier. The `instructions` field is not needed for this model. It maps a raw domain name directly to the IAB Content Taxonomy, so you only need to send the domain as input > ZeroGPU's Domain IAB Classifier maps a raw domain name straight to the IAB Content Taxonomy in a single, fast inference call, returning content categories, topics, keywords, and user-intent signals. Because it needs only the domain as input, it reduces payload size by up to 10x compared to page-level classification workflows while still surfacing the contextual signals that bidstream enrichment, contextual targeting, and domain-level intelligence pipelines run on. At 149M parameters on ONNX, it's built for the high-volume, sub-millisecond classification that ad tech and content platforms demand, right at the edge. ## System One It also answers [System One](/api-reference/systemone) decisions on `/v1/systemone`, with the domain or URL as `state`: ask which category best describes the domain (`choice`), whether it belongs to a category (`noul`), or how strongly it matches one (`score`). **References:** [Model docs](https://docs.zerogpu.ai/) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # zlm-v1-moderation-edge Source: https://docs.zerogpu.ai/api-reference/models/zlm-v1-moderation-edge api-reference/openapi/playgrounds/zlm-v1-moderation-edge.openapi.json POST /moderations Model details for zlm-v1-moderation-edge. OpenAI-compatible moderation, benchmarked against omni-moderation-latest. This model is routable on `/v1/moderations` and on `/v1/systemone` (see [System One](/api-reference/systemone)). Send the text to classify as `input` — a string, an array of strings, or an array of `{"type": "text", "text": "…"}` content parts. The response is OpenAI's native moderations envelope, `{ id, model, results[] }`, with each result carrying a `flagged` verdict, per-category `categories` booleans, and calibrated `category_scores` — so it drops into any pipeline written against `omni-moderation-latest`. > ZeroGPU's moderation model screens text for unsafe, harmful, or policy-sensitive content and returns the complete OpenAI 13-category taxonomy (a `flagged` verdict, per-category booleans, and calibrated `category_scores`), so it drops into any pipeline written against `omni-moderation-latest`. Under the hood it's an 86M-parameter DeBERTa encoder with a shared trunk feeding one binary safe/unsafe head and 13 category heads, with per-category thresholds calibrated on held-out validation data. In [head-to-head benchmarks](https://zerogpu.ai/benchmarks/moderation-edge) against OpenAI omni-moderation it wins the binary safe/unsafe decision (0.899 vs 0.853 F1) and 9 of 13 harm categories, with the largest gains on graphic violence, illicit content, and self-harm, while returning verdicts 1.2–1.8× faster at the median on production-range inputs, because inference is co-located at the edge instead of a round trip to a central API. Moderation sits inline in front of every response your app serves; this is the model that's fast and accurate enough to live there. ## System One It also answers [System One](/api-reference/systemone) decisions on `/v1/systemone`: ask whether content is unsafe or brand safe (`noul`), which moderation category applies (`choice`), or how severe a violation is (`score`). **References:** [Moderation benchmark](https://zerogpu.ai/benchmarks/moderation-edge) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # zlm-v1-signal-extract Source: https://docs.zerogpu.ai/api-reference/models/zlm-v1-signal-extract api-reference/openapi/playgrounds/zlm-v1-signal-extract.openapi.json POST /responses Model details for zlm-v1-signal-extract. Topics, keywords, and intent extracted from text in a single call. > ZeroGPU's signal extractor turns unstructured text into structured signals that downstream systems can act on. One inference call returns topics, keywords, intent, and other contextual attributes as structured output, so content enrichment, contextual intelligence, ad targeting, agent routing, recommendation systems, and analytics pipelines all read from the same pass. At 80M parameters it is built for high-volume workloads where a general-purpose LLM is more machinery than the job needs. **References:** [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # zlm-v2-iab-classify-edge-enriched Source: https://docs.zerogpu.ai/api-reference/models/zlm-v2-iab-classify-edge-enriched api-reference/openapi/playgrounds/zlm-v2-iab-classify-edge-enriched.openapi.json POST /responses Model details for zlm-v2-iab-classify-edge-enriched. Supports 50+ languages. The `instructions` field is not needed for this model. It maps your input directly to the IAB Content Taxonomy, so you only need to send input > The enriched variant of ZeroGPU's IAB classifier turns a single inference call into a full content-intelligence profile not just a label, but everything a contextual pipeline needs to act on. Each call returns IAB categories across both the 1.0 and 2.2 taxonomies (down to tier-3), audience and interest segments, topics, keywords, and user-intent classification — all with confidence scores with edge-native, sub-millisecond speeds. With support for 50+ languages, it delivers the same full profile on multilingual content without a translation step. Built for contextual ad targeting, brand-safety scoring, publisher content categorization, and signal pipelines that need full metadata on every request. ## System One It also answers [System One](/api-reference/systemone) decisions on `/v1/systemone`, including several mixed questions in one request: category, intent and contextual classification (`choice`), brand safety and suitability (`noul`), and commercial intent or category strength (`score`). **References:** [Model docs](https://docs.zerogpu.ai/) • [Terms](https://zerogpu.ai/terms) • [Privacy](https://zerogpu.ai/privacy-policy) # Moderations Source: https://docs.zerogpu.ai/api-reference/moderations api-reference/openapi/zerogpu.openapi.json POST /moderations Classify text against OpenAI's safety categories. Send text as `input` and get back OpenAI's moderations envelope: an `id`, the resolved `model`, and a `results` array with per-category booleans (`categories`) and confidence scores (`category_scores`) across all 13 safety categories. It is drop-in compatible with OpenAI's Moderations API — OpenAI model ids (`omni-moderation-latest`, `text-moderation-stable`) are accepted and mapped. See the [Moderation](/docs/moderation) guide for a prefilled example, or the [model page](/api-reference/models/zlm-v1-moderation-edge) for an interactive playground. Moderation models are routable **only** on this endpoint — a `/responses` or `/chat/completions` call with a moderation model returns `400`. Pass `input` as a string, an array of strings (one result per element), or an array of `{ "type": "text", "text": "…" }` content parts forming one multi-modal input. Install the official SDK from [npm](https://www.npmjs.com/package/zerogpu-api) or [PyPI](https://pypi.org/project/zerogpu-api/) (`pip install zerogpu-api`). Source: [zerogpu/SDK](https://github.com/zerogpu/SDK). Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Responses Source: https://docs.zerogpu.ai/api-reference/responses api-reference/openapi/zerogpu.openapi.json POST /responses Send input to an AI model and receive a response. One endpoint for every model. Pass text or a document as `input`; what comes back depends on the model: generated text, a classification, extracted fields, redacted output, and more. The `input` and `output` shapes vary by model, so open a [model page](/api-reference/models) for a prefilled playground. For the `messages`-style route, see [Chat completions](/api-reference/chat-completions). Install the official SDK from [npm](https://www.npmjs.com/package/zerogpu-api) or [PyPI](https://pypi.org/project/zerogpu-api/) (`pip install zerogpu-api`). Source: [zerogpu/SDK](https://github.com/zerogpu/SDK). Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Retrieve batch Source: https://docs.zerogpu.ai/api-reference/retrieve-batch api-reference/openapi/batch.openapi.json GET /v1/batches/{batch_id} Interactive playground for GET /v1/batches/{batch_id}. Poll a batch by ID. Use this while `status` is `in_progress` or `cancelling`; stop when the status is terminal (`completed`, `failed`, `expired`, or `cancelled`). When complete, download results with `output_file_id` and `error_file_id` via [Files API](/docs/batch/objects). # Retrieve file Source: https://docs.zerogpu.ai/api-reference/retrieve-file api-reference/openapi/batch.openapi.json GET /v1/files/{file_id} Interactive playground for GET /v1/files/{file_id}. Look up metadata for one file (`filename`, `bytes`, `purpose`, `status`) without downloading the body. Use [Download file](/api-reference/download-file) for the JSONL content. Full reference: [Files API](/docs/batch/objects). # System One Source: https://docs.zerogpu.ai/api-reference/systemone api-reference/openapi/zerogpu.openapi.json POST /systemone Answer yes/no, multiple-choice and rubric questions about any content with the ZLM classifiers. Send the content as `state` and ask up to 16 named `questions` about it in one call. Each answer comes back under the question's name, with calibrated probabilities. The request and response follow the [TypeSafe System One](https://api.typesafe.ai/openapi.json) decision schema, so an existing System One client works by changing the base URL and API key. System One is available on four models, in addition to their existing endpoints: | Model | Also served on | Good for | | - | - | - | | [`zlm-v1-moderation-edge`](/api-reference/models/zlm-v1-moderation-edge) | `/moderations` | Is this unsafe? Which moderation category applies? How severe is it? | | [`zlm-v1-iab-classify-edge`](/api-reference/models/zlm-v1-iab-classify-edge) | `/chat/completions`, `/responses` | Which IAB category matches? Does it belong to category X? How strongly? | | [`zlm-v1-iab-domain-classifier`](/api-reference/models/zlm-v1-iab-domain-classifier) | `/chat/completions`, `/responses` | The same questions about a domain. `state` must be a URL or domain. | | [`zlm-v2-iab-classify-edge-enriched`](/api-reference/models/zlm-v2-iab-classify-edge-enriched) | `/chat/completions`, `/responses` | Mixed category, brand-safety and commercial-intent questions in one request. | ## Question types * **`noul`** - a yes/no decision. The answer's `noul` is the probability of yes: near 1 favors yes, near 0 favors no. Optional `criteria.true` and `criteria.false` describe what counts as each. * **`choice`** - pick one option. `criteria` maps each choice name to a description. The answer gives the `choice`, its `confidence` and the `probabilities` of every option. * **`score`** - rate against an ordered rubric. `criteria` is a list of levels, scored from 0. The answer's `score` is the probability-weighted level and may fall between integers; `legend` maps each level number back to its text. ## How answers are produced Each model scores the content against its own labels: the 13 OpenAI moderation categories plus an overall unsafe score, or the IAB Content 2.2 and Audience 1.1 taxonomies. A question whose criteria name those labels is answered directly from the model's scores. A category name covers its whole branch, so `Technology and computing` also counts `Laptops`. Brand-safety questions on the IAB models read the Sensitive Topics branch, and commercial-intent questions read the Purchase Intent audiences. A question whose criteria are not among the model's labels is answered by zero-shot classification instead. You can mix both kinds in one request. ## Limits and billing * Up to 16 questions per request, and up to 32 criteria per question. * `state` may be a string, an object or an array. An object or array is read as its JSON. * You are billed for input tokens only (the state plus the questions); `output_tokens` is always 0. * Request validation errors return `422` with System One's `{ "detail": [{ "loc", "msg", "type" }] }` body. Other errors use the standard [error format](/docs/production-patterns#handle-status-codes-explicitly). # Upload file Source: https://docs.zerogpu.ai/api-reference/upload-file api-reference/openapi/batch.openapi.json POST /v1/files Interactive playground for POST /v1/files (multipart JSONL upload). Upload batch input JSONL before [creating a batch](/api-reference/create-batch). 1. Set `purpose` to `batch`. 2. Attach a `.jsonl` file (max 100 MB). Each line must match the [JSONL format](/docs/batch/jsonl-format). 3. Copy the returned `id` (e.g. `file-…`) into `input_file_id` on the create-batch playground. Full reference: [Files API](/docs/batch/objects). # Speech (ZeroClick) Source: https://docs.zerogpu.ai/api-reference/zeroclick-audio-speech api-reference/openapi/zeroclick.openapi.json POST /zeroclick/v1/audio/speech Generate speech with chatterbox-nano, authenticated by a ZeroClick HMAC signature instead of an API key. This is the [Speech](/api-reference/audio-speech) endpoint behind **ZeroClick**, ZeroGPU's agent-payment layer. Same request/response bodies, limits, and model as `/v1/audio/speech` — only authentication, authorization, and metering differ. The request is always served by the configured model (`chatterbox-nano`). Send a JSON body; voice cloning (a `voice_sample` upload) is not available through ZeroClick. * **Authentication** — no `x-api-key`. A buying agent calls ZeroClick's hosted pay URL; ZeroClick proxies the request and signs the raw request bytes with an HMAC in the `zc-signature` header. A request is authenticated **only** by a valid signature. * **Authorization** — a ZeroClick allowance check runs before any billable work. It fails *open* on a transient ZeroClick outage (the signature has already verified), but never for a missing or invalid signature. * **Metering** — billed per audio second. The allowance check asks for a 1-second floor, since the duration is not known until the clip is decoded or generated. On success, `zc-usage` reports `max(1, ceil(x-audio-duration-seconds))` audio seconds. Stripe metering is bypassed; ZeroClick is the sole biller. Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Transcriptions (ZeroClick) Source: https://docs.zerogpu.ai/api-reference/zeroclick-audio-transcriptions api-reference/openapi/zeroclick.openapi.json POST /zeroclick/v1/audio/transcriptions Transcribe audio with whisper-tiny, authenticated by a ZeroClick HMAC signature instead of an API key. This is the [Transcriptions](/api-reference/audio-transcriptions) endpoint behind **ZeroClick**, ZeroGPU's agent-payment layer. Same response bodies, limits, and model as `/v1/audio/transcriptions`; the request is JSON, and authentication, authorization, and metering differ. The request is always served by the configured model (`whisper-tiny`). * **Body** — ZeroClick's pay host forwards JSON only, so send `application/json` with the audio as base64 in `file` (or a `data:` URL, within ZeroClick's \~7.5 MB body cap) or as an https URL in `file_url` (up to 25 MB), plus the usual fields. A JSON body that cannot be converted (bad base64, unreachable URL, neither or both of `file` / `file_url`) gets a `400` or `413` before any inference and is not billed. * **Authentication** — no `x-api-key`. A buying agent calls ZeroClick's hosted pay URL; ZeroClick proxies the request and signs the raw request bytes with an HMAC in the `zc-signature` header. A request is authenticated **only** by a valid signature. * **Authorization** — a ZeroClick allowance check runs before any billable work. It fails *open* on a transient ZeroClick outage (the signature has already verified), but never for a missing or invalid signature. * **Metering** — billed per audio second. The allowance check asks for a 1-second floor, since the duration is not known until the clip is decoded or generated. On success, `zc-usage` reports `max(1, ceil(x-audio-duration-seconds))` audio seconds. Stripe metering is bypassed; ZeroClick is the sole biller. ```json theme={null} { "file_url": "https://example.com/audio/hello.mp3", "model": "whisper-tiny", "response_format": "json" } ``` Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Translations (ZeroClick) Source: https://docs.zerogpu.ai/api-reference/zeroclick-audio-translations api-reference/openapi/zeroclick.openapi.json POST /zeroclick/v1/audio/translations Translate speech into English text with whisper-tiny, authenticated by a ZeroClick HMAC signature instead of an API key. This is the audio translations endpoint (see [Transcriptions](/api-reference/audio-transcriptions)) behind **ZeroClick**, ZeroGPU's agent-payment layer. Same response bodies, limits, and model as `/v1/audio/translations`; the request is JSON, and authentication, authorization, and metering differ. The request is always served by the configured model (`whisper-tiny`). Send the same fields as a transcription without `language`; the transcript is always English. * **Body** — ZeroClick's pay host forwards JSON only, so send `application/json` with the audio as base64 in `file` (or a `data:` URL, within ZeroClick's \~7.5 MB body cap) or as an https URL in `file_url` (up to 25 MB), plus the usual fields. A JSON body that cannot be converted (bad base64, unreachable URL, neither or both of `file` / `file_url`) gets a `400` or `413` before any inference and is not billed. * **Authentication** — no `x-api-key`. A buying agent calls ZeroClick's hosted pay URL; ZeroClick proxies the request and signs the raw request bytes with an HMAC in the `zc-signature` header. A request is authenticated **only** by a valid signature. * **Authorization** — a ZeroClick allowance check runs before any billable work. It fails *open* on a transient ZeroClick outage (the signature has already verified), but never for a missing or invalid signature. * **Metering** — billed per audio second. The allowance check asks for a 1-second floor, since the duration is not known until the clip is decoded or generated. On success, `zc-usage` reports `max(1, ceil(x-audio-duration-seconds))` audio seconds. Stripe metering is bypassed; ZeroClick is the sole biller. ```json theme={null} { "file_url": "https://example.com/audio/hello.mp3", "model": "whisper-tiny", "response_format": "json" } ``` Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Chat completions (ZeroClick) Source: https://docs.zerogpu.ai/api-reference/zeroclick-chat-completions api-reference/openapi/zeroclick.openapi.json POST /zeroclick/v1/chat/completions OpenAI-style chat inference authenticated by a ZeroClick HMAC signature instead of an API key. This is the [Chat completions](/api-reference/chat-completions) endpoint behind **ZeroClick**, ZeroGPU's agent-payment layer. Same request/response bodies and same model routing as `/v1/chat/completions`, except for retired model ids (below) — authentication, authorization, and metering differ. * **Authentication** — no `x-api-key`. A buying agent calls ZeroClick's hosted pay URL; ZeroClick proxies the request and signs the raw request bytes with an HMAC in the `zc-signature` header. A request is authenticated **only** by a valid signature. * **Authorization** — a ZeroClick allowance check runs before any billable work. It fails *open* on a transient ZeroClick outage (the signature has already verified), but never for a missing or invalid signature. * **Retired model ids** — `deepseek-v4-flash`, `glm-5.2` and `gliner2-base-v1` are served and metered as their successors (`deepseek-v4.1-flash`, `glm-5.3-flash`, `gliner2.5-base-v1`); the response's `model` is the successor. Send the current id. * **Metering** — actual token usage is settled with ZeroClick and reported via the `zc-usage` response header. Stripe metering is bypassed; ZeroClick is the sole biller. Response JSON shape depends on the model; handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Embeddings (ZeroClick) Source: https://docs.zerogpu.ai/api-reference/zeroclick-embeddings api-reference/openapi/zeroclick.openapi.json POST /zeroclick/v1/embeddings OpenAI-style embeddings authenticated by a ZeroClick HMAC signature instead of an API key. This is the [Embeddings](/api-reference/embeddings) endpoint behind **ZeroClick**, ZeroGPU's agent-payment layer. Same request/response bodies and same model routing as `/v1/embeddings` — only authentication, authorization, and metering differ. * **Authentication** — no `x-api-key`. A buying agent calls ZeroClick's hosted pay URL; ZeroClick proxies the request and signs the raw request bytes with an HMAC in the `zc-signature` header. A request is authenticated **only** by a valid signature. * **Authorization** — a ZeroClick allowance check runs before any billable work. It fails *open* on a transient ZeroClick outage (the signature has already verified), but never for a missing or invalid signature. * **Metering** — billed on input tokens only. The `prompt_tokens` from the response's `usage` are settled with ZeroClick and reported via the `zc-usage` response header. Stripe metering is bypassed; ZeroClick is the sole biller. Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Moderations (ZeroClick) Source: https://docs.zerogpu.ai/api-reference/zeroclick-moderations api-reference/openapi/zeroclick.openapi.json POST /zeroclick/v1/moderations OpenAI-style content moderation authenticated by a ZeroClick HMAC signature instead of an API key. This is the [Moderations](/api-reference/moderations) endpoint behind **ZeroClick**, ZeroGPU's agent-payment layer. Same request/response bodies and same model routing as `/v1/moderations` — only authentication, authorization, and metering differ. `model` may be omitted, or given as an OpenAI id such as `omni-moderation-latest`; either way the configured moderation model serves the request. * **Authentication** — no `x-api-key`. A buying agent calls ZeroClick's hosted pay URL; ZeroClick proxies the request and signs the raw request bytes with an HMAC in the `zc-signature` header. A request is authenticated **only** by a valid signature. * **Authorization** — a ZeroClick allowance check runs before any billable work. It fails *open* on a transient ZeroClick outage (the signature has already verified), but never for a missing or invalid signature. * **Metering** — the input and output tokens from the response's `usage` are settled with ZeroClick and reported via the `zc-usage` response header. Stripe metering is bypassed; ZeroClick is the sole biller. Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # Responses (ZeroClick) Source: https://docs.zerogpu.ai/api-reference/zeroclick-responses api-reference/openapi/zeroclick.openapi.json POST /zeroclick/v1/responses OpenAI-style Responses inference authenticated by a ZeroClick HMAC signature instead of an API key. This is the [Responses](/api-reference/responses) endpoint behind **ZeroClick**, ZeroGPU's agent-payment layer. Same request/response bodies and same model routing as `/v1/responses`, except for retired model ids (below) — authentication, authorization, and metering differ. * **Authentication** — no `x-api-key`. A buying agent calls ZeroClick's hosted pay URL; ZeroClick proxies the request and signs the raw request bytes with an HMAC in the `zc-signature` header. A request is authenticated **only** by a valid signature. * **Authorization** — a ZeroClick allowance check runs before any billable work. It fails *open* on a transient ZeroClick outage (the signature has already verified), but never for a missing or invalid signature. * **Retired model ids** — `deepseek-v4-flash`, `glm-5.2` and `gliner2-base-v1` are served and metered as their successors (`deepseek-v4.1-flash`, `glm-5.3-flash`, `gliner2.5-base-v1`); the response's `model` is the successor. Send the current id. * **Metering** — actual token usage is settled with ZeroClick and reported via the `zc-usage` response header. Stripe metering is bypassed; ZeroClick is the sole biller. The `input` and `output` shapes vary by model; open a [model page](/api-reference/models) for a prefilled playground. Handle errors the same way as [API error codes](/docs/production-patterns#handle-status-codes-explicitly). # 🏷️ Tag Customer Reviews Overnight with the ZeroGPU Batch API Source: https://docs.zerogpu.ai/cookbook/batch-review-tagging Tag a CSV of customer reviews with sentiment and topics in one overnight job using the ZeroGPU Batch API and LFM2.5-1.2B-Instruct, then recover any failed rows by custom_id. This notebook shows how to use the ZeroGPU Batch API to tag a CSV of customer reviews in a single asynchronous job. You hand the API a `reviews.csv` with one review per row, and you get back a `tagged.csv` with a `sentiment` label and a short list of `topics` for every row, plus a recoverable list of any rows that failed. By combining the Batch API's OpenAI-compatible JSONL flow with LFM2.5-1.2B-Instruct, this notebook walks you through a practical pattern where thousands of rows are tagged overnight at a fraction of the cost of synchronous calls, keyed back to their source rows by `custom_id`. For the full reference, see the [Batch API quickstart](/docs/batch/getting-started). For another end-to-end workflow, see: **[Screen resumes with LangChain and ZeroGPU](https://zerogpu.ai/cookbook/langchain-resume-screening)**. In this notebook, you'll explore: * **ZeroGPU Batch API**: An asynchronous, OpenAI-compatible endpoint that takes thousands of `/v1/chat/completions` requests as a single JSONL file and returns the results within a completion window, at a lower per-request cost than synchronous calls. Here it tags every row of a customer-review CSV in one overnight job. * **ZeroGPU**: An ultra-fast, compute-efficient inference provider for apps and agents. We run purpose-built small and nano language models across an edge-powered network for the high-volume, purpose-specific tasks your app or agent runs constantly. Plug in our OpenAI-compatible API and you're live - zero GPU infrastructure, serverless, auto-scaling by default. * **LFM2.5-1.2B-Instruct**: A small, fast instruct model that handles short-form classification well, keeping per-row cost low while still producing open-vocabulary topics and a JSON tag. See the [model card](/api-reference/models/lfm2-5-1-2b-instruct) for context window and playground. This setup not only demonstrates a practical application of large-scale review tagging, but also provides a flexible framework that can be adapted to other real-world scenarios requiring high-volume, asynchronous classification over tabular data. ## Run this example Run it in Google Colab and execute cells top to bottom — no setup required. **[🏷️ Run in Google Colab →](https://colab.research.google.com/drive/18TW62E7m5goXEnNUglRFd-Pd47cFIdyJ?usp=sharing)** The notebook generates the dataset, builds the JSONL file, and runs the full Batch API workflow automatically. ## 🎥 Watch the Video Guide Prefer a quick walkthrough? Watch the full demo here: