Docs

beServe is OpenAI-compatible. If your code talks to OpenAI, it already talks to beServe — you only change where it points.

Quick start

  1. Create an account. Sign up and choose a plan — you can change it later.
  2. Generate an API key. On the API keys page. Keys start with bs_live_ and are shown once.
  3. Point your client at beServe. Base URL https://api.beserve.eu/v1, your key as the bearer token.

Code examples

curl https://api.beserve.eu/v1/chat/completions \
  -H "Authorization: Bearer bs_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash-0731",
    "messages": [{"role": "user", "content": "Bonjour!"}],
    "stream": true
  }'

API reference

beServe implements the OpenAI Chat Completions API, including streaming. Refer to OpenAI's API reference and use your beServe key and base URL.

EndpointDescription
POST /v1/chat/completionsCreate a chat completion. Supports stream: true.
GET /v1/modelsList available models with EUR pricing.
GET /healthLiveness check.

Model catalog

All models are included with every plan — switch between them freely by changing the model field. You pay your flat subscription, never per token.

ModelContextHighlights
deepseek-v4-flash-0731256KAgentic, reasoning, tools
gpt-oss-120b128KReasoning, tools
pixtral-12b-2409128KVision, tools
gemma-4-26b-a4b-it256KMultilingual, reasoning
qwen3.6-35b-a3b256KReasoning, tools
mistral-medium-3.5-128b256K24 languages, tools
glm-5.2256KCoding, agentic, tools

Rate limits

PlanRequests / minRequests / dayContextAPI keys
Starter — €29/mo10500256K1
Pro — €79/mo303,000256K+5
Team — €149/seat/mo606,000 / seat256K+Unlimited

Every response carries X-RateLimit-Limit-Requests, X-RateLimit-Remaining-Requests and X-RateLimit-Reset-Requests. When you hit a limit you get a 429 with Retry-After.

Errors

Errors follow the OpenAI format, so your existing error handling keeps working:

{
  "error": {
    "message": "Rate limit exceeded. Try again in 12 seconds.",
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded"
  }
}

Every response also carries X-beServe-Request-Id — include it in support requests and we can find the exact call in our logs.