API Integrations
OpenAI & Anthropic Compatible APIs
UMVA AI provides both an OpenAI-compatible chat/completions API and an Anthropic-compatible messages API. Use whichever format your tool supports — no adapter needed. All requests are non-thinking by default; enable thinking with the thinking parameter.
API Endpoints & Authentication
Connect to UMVA AI from any tool, library, or editor
Base URLs
https://umva.nethttps://umva.usAuthentication
Authorization: Bearer umva_ai_YOUR_API_KEY_HEREx-api-key: umva_ai_YOUR_API_KEY_HEREList Available Models
Fetch the list of models you can use — both endpoints return the same model catalog
OpenAI-compatible (GET)
Returns a standard OpenAI models list
GET https://umva.net/v1/modelsGET https://umva.us/v1/modelscurl https://umva.net/v1/models \
-H "Authorization: Bearer ${UMVA_API_KEY}"Anthropic-compatible (GET)
Returns models in Anthropic format
GET https://umva.net/v1/modelsGET https://umva.us/v1/modelscurl https://umva.net/v1/models \
-H "Authorization: Bearer ${UMVA_API_KEY}"
Both the OpenAI SDK base_url and the Anthropic SDK base_url point to https://umva.net . Available model IDs include umva-code-pro, umva-code-architect, umva-code-fast
OpenAI-Compatible API
Drop-in replacement for OpenAI's /v1/chat/completions — works with any OpenAI SDK or tool. Compatible with DeepSeek, OpenAI, and any SDK designed for the OpenAI protocol.
Simple cURL — Non-thinking (Default)
At UMVA, requests are non-thinking by default. No extra parameter needed.
curl -L -X POST https://umva.net/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer ${UMVA_API_KEY}" \
-d '{
"model": "umva-code-fast",
"messages": [
{
"content": "You are a helpful assistant",
"role": "system"
},
{
"content": "Hi",
"role": "user"
}
],
"max_tokens": 4096,
"response_format": {"type": "text"},
"stop": null,
"stream": false,
"stream_options": null,
"temperature": 1,
"top_p": 1,
"tools": null,
"tool_choice": "none",
"logprobs": false,
"top_logprobs": null
}'Simple cURL — With Thinking / Reasoning Enabled
Add the thinking parameter to enable chain-of-thought reasoning (DeepSeek-style extended thinking)
curl -L -X POST https://umva.net/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer ${UMVA_API_KEY}" \
-d '{
"model": "umva-code-pro",
"messages": [
{
"content": "You are a helpful assistant",
"role": "system"
},
{
"content": "Solve a complex math problem step by step",
"role": "user"
}
],
"thinking": {
"type": "enabled"
},
"reasoning_effort": "high",
"max_tokens": 4096,
"response_format": {"type": "text"},
"stop": null,
"stream": false,
"stream_options": null,
"temperature": 1,
"top_p": 1,
"tools": null,
"tool_choice": "none",
"logprobs": false,
"top_logprobs": null
}'Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://umva.net",
api_key=umva_ai_YOUR_API_KEY_HERE
)
# Non-thinking (default)
response = client.chat.completions.create(
model=umva-code-fast,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
print(response.choices[0].message.content)
# With thinking enabled
response = client.chat.completions.create(
model=umva-code-fast,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Solve this step by step"}
],
extra_body={
"thinking": {"type": "enabled"},
"reasoning_effort": "high"
}
)
print(response.choices[0].message.content)Node.js (OpenAI SDK)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://umva.net",
apiKey: "umva_ai_YOUR_API_KEY_HERE"
});
// Non-thinking (default)
const response = await client.chat.completions.create({
model: "umva-code-fast",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Hello!" }
]
});
console.log(response.choices[0].message.content);
// With thinking enabled
const response2 = await client.chat.completions.create({
model: "umva-code-fast",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Solve this step by step" }
],
thinking: { type: "enabled" },
reasoning_effort: "high"
});
console.log(response2.choices[0].message.content);
Also available via the fallback endpoint: https://umva.us/v1/chat/completions
Anthropic-Compatible API
Drop-in replacement for Anthropic's /v1/messages API — works with any Anthropic SDK or tool
Simple cURL — Non-thinking (Default)
At UMVA, requests are non-thinking by default. No extra parameter needed.
curl https://umva.net/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: ${UMVA_API_KEY}" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "umva-code-pro",
"max_tokens": 4096,
"messages": [
{"role": "user", "content": "Hello!"}
]
}'Simple cURL — With Thinking / Extended Thinking
Add the thinking parameter to enable chain-of-thought reasoning
curl https://umva.net/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: ${UMVA_API_KEY}" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "umva-code-pro",
"max_tokens": 8192,
"thinking": {"type": "enabled", "budget_tokens": 4096},
"messages": [
{"role": "user", "content": "Solve a complex math problem step by step"}
]
}'Python (Anthropic SDK)
from anthropic import Anthropic
client = Anthropic(
base_url="https://umva.net",
api_key=umva_ai_YOUR_API_KEY_HERE
)
# Non-thinking (default)
response = client.messages.create(
model=umva-code-fast,
max_tokens=4096,
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(response.content[0].text)
# With thinking enabled
response = client.messages.create(
model=umva-code-fast,
max_tokens=8192,
thinking={"type": "enabled", "budget_tokens": 4096},
messages=[
{"role": "user", "content": "Walk through the solution step by step"}
]
)
for block in response.content:
if block.type == "thinking":
print(f"Thinking: {block.thinking}")
elif block.type == "text":
print(f"Answer: {block.text}")Node.js (Anthropic SDK)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://umva.net",
apiKey: "umva_ai_YOUR_API_KEY_HERE"
});
// Non-thinking (default)
const response = await client.messages.create({
model: "umva-code-fast",
max_tokens: 4096,
messages: [
{ role: "user", content: "Hello!" }
]
});
console.log(response.content[0].text);
// With thinking enabled
const response2 = await client.messages.create({
model: "umva-code-fast",
max_tokens: 8192,
thinking: { type: "enabled", budget_tokens: 4096 },
messages: [
{ role: "user", content: "Walk through the solution step by step" }
]
});
for (const block of response2.content) {
if (block.type === "thinking") {
console.log("Thinking:", block.thinking);
} else if (block.type === "text") {
console.log("Answer:", block.text);
}
}
Also available via the fallback endpoint: https://umva.us/v1/messages
API Endpoint Reference
All available endpoints at a glance
| API | Method | Endpoint | Auth | Purpose |
|---|---|---|---|---|
| OpenAI | GET | /v1/models | Bearer | List available models |
| OpenAI | POST | /v1/chat/completions | Bearer | Chat completions (OpenAI format) |
| OpenAI | POST | /v1/completions | Bearer | Legacy completions (OpenAI format) |
| Anthropic | POST | /v1/messages | x-api-key | Messages (Anthropic format) |
Request Body Parameters
Full reference for the /v1/chat/completions request body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
model | string | Yes | - | ID of the model to use. Options: umva-code-pro, umva-code-architect, umva-code-fast |
messages | object[] | Yes | - | A list of messages comprising the conversation. Each message has role (system, user, assistant, tool), content (string, the message text), and optional name (participant identifier, a-z, A-Z, 0-9, dashes, underscores, max 64 chars). |
thinking | object | null | No | null | Controls thinking mode. Object with type ("enabled" or "disabled". At UMVA, default is disabled.) |
thinking.type | string | No | "disabled" | Values: "enabled" (enable chain-of-thought reasoning), "disabled" (standard response). |
reasoning_effort | string | No | "high" | Controls reasoning effort. Values: "high", "max". "low" and "medium" map to "high". "xhigh" maps to "max". For complex agent requests (Claude Code, OpenCode), effort is automatically set to "max". |
max_tokens | int | null | No | model default | Maximum number of tokens to generate. Total length of input + generated tokens limited by model context length. |
response_format | object | null | No | {"type": "text"} | Specifies output format. "text" for plain text, "json_object" for valid JSON. When using json_object, you must instruct the model to produce JSON via system/user message. |
stop | string | string[] | null | No | null | Up to 16 sequences where the API will stop generating further tokens. Pass null for no custom stop. |
stream | bool | null | No | false | If true, partial message deltas are sent as SSE. Stream terminated by data: [DONE]. |
stream_options | object | null | No | null | Options for streaming. Only set when stream: true. Use {"include_usage": true} to get token usage before [DONE]. |
temperature | number | null | No | 1 | Sampling temperature, 0 to 2. Higher values (e.g. 0.8) make output more random, lower values (e.g. 0.2) more deterministic. Alter this or top_p, not both. |
top_p | number | null | No | 1 | Nucleus sampling. Consider tokens with top_p probability mass. 0.1 means top 10% probability mass. Alter this or temperature, not both. |
tools | object[] | null | No | null | List of tools the model may call. Currently only "function" type supported. Each tool has type (function) and function object with name, description, parameters (JSON Schema). Max 128 functions. |
tool_choice | string | object | null | No | "none" (no tools) / "auto" (tools present) | "none": model won't call tools, "auto": model decides, "required": model must call a tool, or {"type": "function", "function": {"name": "my_function"}}: force specific tool. |
logprobs | bool | null | No | false | If true, returns log probabilities of each output token in message.content. |
top_logprobs | int | null | No | null | Integer 0-20 specifying number of most likely tokens to return at each position with log probabilities. Requires logprobs: true. |
| Deprecated / No Longer Supported | ||||
frequency_penalty | - | No | - | deprecated This parameter is no longer supported. Passing it will have no effect. |
presence_penalty | - | No | - | deprecated This parameter is no longer supported. Passing it will have no effect. |
| Additional Optional Parameters | ||||
user_id | string | No | null | Custom user identifier. Allowed chars: [a-zA-Z0-9\-_], max 512 chars. Used for content safety review, KVCache isolation, and scheduling isolation. Do not include user privacy information. |
At UMVA, all requests are non-thinking by default. You must explicitly pass thinking: {"type": "enabled"} to enable reasoning. This differs from providers where thinking is enabled by default.
Works With Your Workflow
OpenAI and Anthropic compatible — UMVA AI fits right in. Start integrating today.