API Access¶
uniGPT provides an OpenAI-compatible API that allows researchers and developers to integrate AI models into their own applications, scripts, and workflows.
The API is available at:
https://gpt.uni-muenster.de/v1
Getting an API Key¶
To use the API, you need an API key (starting with sk-...). API keys are currently available for two use cases:
Research Projects¶
API keys for research projects are issued upon request. Contact the uniGPT team via our support channel:
Please briefly describe your project and intended usage so we can set appropriate quotas.
AI-Assisted Coding (OpenCode, Roo Code, etc.)¶
API keys for use with coding assistants are available through a self-service portal at https://gpt-api.uni-muenster.de, where you can generate your own key without manual approval. The portal is open to all employees. A small guide for OpenCode and VSCode is shown below.
Currently the following models are enabled for all employees via the portal:
- DeepSeek-v4-flash
- Qwen3.8-27B
Additional models are enabled on request — contact the team via the support channel. If you generated your key before a model was added, you may need to regenerate your key to pick it up.
Beta
The self-service portal is currently in beta. Access and functionality may change. Stay tuned for announcements in the support channel.
Using the Python OpenAI Client¶
Install the OpenAI Python library:
pip install openai
Basic Example¶
from openai import OpenAI
client = OpenAI(
api_key="sk-YOUR_API_KEY",
base_url="https://gpt.uni-muenster.de/v1"
)
completion = client.chat.completions.create(
model="gemma-4-31B-it",
messages=[
{"role": "user", "content": "What is the capital of France?"}
]
)
print(completion.choices[0].message.content)
Streaming Example¶
stream = client.chat.completions.create(
model="gemma-4-31B-it",
messages=[{"role": "user", "content": "Explain quantum computing briefly."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
Using curl¶
curl https://gpt.uni-muenster.de/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-YOUR_API_KEY" \
-d '{
"model": "gemma-4-31B-it",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Checking Your Key & Quotas¶
You can inspect your API key and its quotas using the /key/info endpoint:
curl https://gpt.uni-muenster.de/key/info \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-ENTER-KEY-HERE"
This returns information about your key and the configured quotas/limits.
Limits, Concurrency & Caching¶
- Parallel requests: By default, each API key allows 4 parallel requests. Contact the team if you need more.
- Input caching: Prompt caching is enabled, but the discount is not yet billed — you currently pay the full input price even for cached tokens.
- Reasoning: Reasoning is returned via the OpenAI Chat Completions format as the
reasoning_contentfield alongsidecontent.
Limits are separate from the chat balance
The API rate limits are managed independently of the token balance shown in the web chat interface. Your API key's quotas are queryable via /key/info.
Available Models via API¶
You can use any of the internal models listed on the Available Models page by specifying their name in the model parameter, including specialized models such as medgemma-1.5-4b-it for medical text and image tasks. Through the self-service portal, DeepSeek-v4-flash and Qwen3.8-27B are currently enabled for all employees; additional models are enabled on request.
Model access
Access to a model is granted per team/group. If you receive the error team not allowed to access model, the requested model is not enabled for your account.
Drop-in replacement
Since the API is OpenAI-compatible, you can use it as a drop-in replacement in any tool or library that supports the OpenAI API — just change the base_url and api_key.
Using Coding Assistants¶
You can connect uniGPT to your ide and coding agents via the OpenAI-compatible API. You will need an API key from the self-service portal.
Visual Studio Code¶
Since version 1.104, Visual Studio Code can connect to uniGPT in the built-in Chat view via a custom provider. No extra extension is required.
This uses VS Code's custom endpoint provider. Chat works with your uniGPT API key and does not require a GitHub Copilot plan.
- Open the Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) and run Chat: Manage Language Models. - Select Add Models, then Custom Endpoint.
- Enter a group name such as
uniGPTand paste your uniGPT API key when prompted. - Select Chat Completions as the API type.
- VS Code opens the
chatLanguageModels.jsonfile. Fill in the model fields as shown below and save it. Do not replace theapiKeyvalue. Keep the${input:...}variable that VS Code generated.
[
{
"name": "uniGPT",
"vendor": "customendpoint",
"apiKey": "${input:chat.lm.secret.xxxxxxxxx}",
"apiType": "chat-completions",
"models": [
{
"id": "DeepSeek-V4-Flash",
"name": "uniGPT DeepSeek V4 Flash",
"url": "https://gpt.uni-muenster.de/v1/chat/completions",
"toolCalling": true,
"vision": true,
"maxInputTokens": 128000,
"maxOutputTokens": 8000
},
{
"id": "Qwen3.8-27B",
"name": "uniGPT Qwen3.8 27B",
"url": "https://gpt.uni-muenster.de/v1/chat/completions",
"toolCalling": true,
"vision": false,
"maxInputTokens": 128000,
"maxOutputTokens": 8000
}
]
}
]
Set id to an internal model name from the Available Models page. You can add further objects to the models array to switch between them in the picker.
Use maxInputTokens 128000 and maxOutputTokens 8000. For a multimodal model such as DeepSeek V4 Flash, set "vision": true.
If the model does not appear in the picker immediately, restart VS Code.
OpenCode¶
OpenCode can use uniGPT as a custom OpenAI-compatible provider. You need an API key from the self-service portal.
- Start OpenCode and run
/connect. - Select Other, then enter
unigptas the provider ID. - Paste your uniGPT API key when prompted. OpenCode stores it in its auth file. Do not put the key in
opencode.json. - Create or update your OpenCode config (
~/.config/opencode/opencode.jsonfor all projects, oropencode.jsonin a project root):
{
"$schema": "https://opencode.ai/config.json",
"model": "unigpt/DeepSeek-V4-Flash",
"provider": {
"unigpt": {
"npm": "@ai-sdk/openai-compatible",
"name": "uniGPT",
"options": {
"baseURL": "https://gpt.uni-muenster.de/v1"
},
"models": {
"DeepSeek-V4-Flash": {
"name": "uniGPT DeepSeek V4 Flash",
"limit": {
"context": 128000,
"output": 8000
}
},
"Qwen3.8-27B": {
"name": "uniGPT Qwen3.8 27B",
"limit": {
"context": 128000,
"output": 8000
}
}
}
}
}
}
The provider ID in /connect must match the key in provider (unigpt). Use @ai-sdk/openai-compatible because uniGPT speaks the Chat Completions API.
If you already have an opencode.json, merge the provider.unigpt block into it rather than replacing the whole file.
- Run
/modelsand select uniGPT DeepSeek V4 Flash.