Deca 2.5 Pro
deca-2.5-pro
Flagship general-purpose model for most production workloads.
Deca is an AI platform for language, reasoning, analysis, coding, and agent workflows. The Deca 2.5 family focuses on practical intelligence, clear answers, and straightforward integration.
The Deca 2.5 series gives you three model sizes so you can choose the right balance of capability, context, and cost.
deca-2.5-pro
Flagship general-purpose model for most production workloads.
deca-2.5-ultra
Largest Deca model for long-context reasoning and difficult tasks.
deca-2.5-mini
Efficient model for lightweight agents, drafts, and high-volume requests.
Sign in to GenLabs, create a key, and keep it somewhere safe. Send it as Authorization: Bearer YOUR_API_KEY.
Use the OpenAI-compatible base URL in existing SDKs, editors, or agent runtimes.
https://api.genlabs.dev/deca
Creates a model response for the given chat conversation. This endpoint follows the OpenAI chat completions shape so existing integrations can usually switch by changing the base URL and model name.
The Deca model to use. One of deca-2.5-pro, deca-2.5-ultra, or deca-2.5-mini.
A list of chat messages. Each message has a role and content. Supported roles are system, user, assistant, and tool.
Defaults to false. When true, Deca returns server-sent events as tokens become available. Streaming is recommended for interactive applications.
The maximum number of tokens to generate. If omitted, Deca chooses a sensible default for the model and request.
Kept for compatibility. We recommend leaving it unset; 0 does not guarantee identical responses and future versions may phase the parameter out.
Tool definitions the model may call. Use JSON Schema to describe each function’s parameters.
| Field | Description |
|---|---|
id | Unique identifier for the completion. |
object | Usually chat.completion or chat.completion.chunk for streaming. |
choices | Generated assistant messages or streamed deltas. |
usage | Prompt, completion, and total token counts when available. |
Lists the models available through the Deca API, including identifiers for requests and metadata such as context length and pricing.
| Model | Best for | Context |
|---|---|---|
deca-2.5-mini | Low-latency utility requests and high-volume agents. | 128k |
deca-2.5-pro | Everyday production reasoning, coding, and analysis. | 128k |
deca-2.5-ultra | Hard problems, large context, and highest intelligence. | 1M |
Set "stream": true in your request body to receive the response as server-sent events. Each event contains a partial delta that you append until the stream ends. Streaming gives you lower time-to-first-token and a smoother user experience.
Each event is a data: line followed by a JSON object. The stream ends with data: [DONE].
The first chunk contains the role delta. Subsequent chunks carry content deltas. The final chunk has an empty delta with a finish_reason.
When using the OpenAI SDK, set stream: true and iterate over the returned chunks:
When streaming with tools, the model may emit tool_calls deltas across multiple chunks instead of (or after) content. Each tool call has an index to correlate deltas for the same tool invocation.
The stream produces tool_calls deltas across multiple chunks:
Accumulate tool calls by index. When finish_reason is "tool_calls", the tool call arguments are complete. Execute each tool and send the results back in a follow-up request.
After collecting the tool calls, execute each one and send a follow-up request with the tool role result messages appended. The model will then produce its final answer — either as a text stream or additional tool calls.
Deca models are multimodal — you can include images alongside text in user messages. Images must be base64-encoded and passed as a data URL. Hosted URLs are not supported.
| Format | MIME type | Notes |
|---|---|---|
| PNG | image/png | Preferred for screenshots and diagrams. |
| JPEG | image/jpeg | Good for photographs. |
| WEBP | image/webp | Smaller file size, wide support. |
| GIF | image/gif | Only the first frame is processed. |
Maximum image size is 20 MB per image (before base64 encoding adds ~33% overhead). Images are automatically resized and compressed by the API to fit the model's input constraints.
Include several images in one message by adding more image_url blocks:
Tools let the model call functions defined in your application. The model returns a tool_calls payload with function names and arguments; your code executes each function and sends the results back in a follow-up request.
Pass a tools array in your request. Each tool is a JSON Schema description of a function the model may call.
The model decides whether to call a tool based on the conversation. If it does, the response contains tool_calls instead of (or alongside) content.
tool_calls with finish_reason: "tool_calls".tool_calls) and each tool result as a tool-role message, then re-send.The model may call multiple tools in one turn or go back and forth several times before producing a final text answer.
Each tool call has a unique id used to match the result when sending it back.
Append the assistant response (with tool_calls) and a tool-role message per result. The tool result references the call id and tool_call_id.
The model will read the tool result and either produce a final answer or call another tool.
description fields — the model uses them to decide which tool to call."required".tool_calls deltas.All Deca models use adaptive thinking internally. The model automatically decides when and how much to reason through a problem before generating a response — no configuration is needed.
This happens transparently on every request. The output you receive already reflects whatever reasoning the model applied.
Prompt caching is on by default. Deca automatically caches prompt prefixes across requests, reducing latency and cost for repetitive or multi-turn workloads. Cache writes have no extra surcharge: tokens written to cache are billed at the normal input rate, and later cache hits are billed at a reduced token rate.
To opt out of caching for a specific request, set "cache_control": "none" at the top level:
The minimum cacheable prefix is 1,024 tokens. Shorter prefixes are processed normally without caching. Cached entries expire after 5 minutes of inactivity; each cache hit refreshes the TTL at no extra cost.
Check cache performance in the response usage fields:
| Field | Description |
|---|---|
cache_read_input_tokens | Tokens served from cache (billed at reduced rate). |
cache_creation_input_tokens | Tokens written to cache for the first time. |
input_tokens | Tokens after the last cache breakpoint (not cached). |
Prompt caching works well for long system instructions, large context documents, tool definitions, and multi-turn conversations where earlier turns stay stable.
Rate limits are applied per API key and depend on the requested model and account tier. Paid accounts can send up to 1,000 requests per hour for deca-2.5-mini and deca-2.5-pro, and up to 500 requests per hour for deca-2.5-ultra. Free-tier accounts receive half of those limits.
If you receive a 429 response, retry with exponential backoff and jitter. For batch jobs, queue work rather than retrying every request at once.
| Status | Meaning | What to do |
|---|---|---|
| 400 | Invalid request body. | Check JSON shape, required fields, and model name. |
| 401 | Missing or invalid API key. | Send Authorization: Bearer YOUR_API_KEY. |
| 402 | Insufficient credits. | Add credits or reduce request volume before retrying. |
| 429 | Too many requests. | Back off and retry later. |
| 500+ | Temporary service error. | Retry with backoff, then surface a graceful fallback. |