Your First Request
The Basics
TULIP exposes a single, unified API at https://api.tulip.tudelft.nl with OpenAI-compatible endpoints for three capabilities:
| Capability | Base Path | Use Case |
|---|---|---|
| Chat | /chat/v1 |
Conversational AI with reasoning & tool calling |
| Code | /code/v1 |
Code generation and reasoning |
| Embeddings | /embed/v1 |
Text vectorization for semantic search & RAG |
TU Delft Network Access Required
TULIP is only reachable from the TU Delft network. Off campus, you must connect via eduVPN.
Authentication
Every request carries a credential in the Authorization: Bearer header. TULIP accepts two kinds:
- SRAM personal token (recommended): join the
tudelfttulipcollaboration in SURF Research Access Management, then create a personal token on your SRAM profile page. Your access tier follows your group membership in the collaboration. Tokens are self-service: you can create and revoke them without contacting the TULIP team. - Legacy API key (
sk-tulip-...): keys issued before the SRAM migration keep working until September 15, 2026, when they are disabled. All users must switch to SRAM tokens before that date.
The examples below work identically with either credential; set it as TUDELFT_TULIP_API_KEY.
Your First Request
Both examples below use the Chat Completions API.
If you want configurable model selection (for example via TUDELFT_TULIP_MODEL_ALIAS), continue with Chat & General Inference.
Using cURL
Try It Yourself
This shell example expects TUDELFT_TULIP_API_KEY to be set and also uses jq.
To keep setup simple, it uses the default chat model in the request body.
And simply run:
Using Python (OpenAI SDK)
Try It Yourself
The Python example reads TUDELFT_TULIP_API_KEY from .env if present and assumes openai and python-dotenv are installed.
To keep setup simple, it uses the default chat model in the request body.
And run: