Carrot LabsCarrot Docs
API Reference

Chat Completions

POST /v1/chat/completions

POST /v1/chat/completions

OpenAI-compatible chat completions. Supports streaming via stream: true.

Request

Headers

HeaderRequiredDescription
AuthorizationYesBearer sk-...
Content-TypeYesapplication/json
X-Carrot-TraceNoSet to "true" to capture a trace

Body

{
  "model": "my-custom-model",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ],
  "stream": false,
  "temperature": 0.7,
  "max_tokens": 1024
}
FieldTypeRequiredDescription
modelstringYesYour Carrot model name
messagesarrayYesArray of message objects with role and content
streambooleanNoStream response as SSE. Default: false
temperaturenumberNoSampling temperature (0-2)
max_tokensintegerNoMaximum tokens to generate

Response

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 10,
    "total_tokens": 30
  }
}

Streaming

When stream: true, the response is a stream of SSE events:

data: {"id":"chatcmpl-abc123","choices":[{"delta":{"role":"assistant"},"index":0}]}

data: {"id":"chatcmpl-abc123","choices":[{"delta":{"content":"Hello"},"index":0}]}

data: [DONE]

Example

curl https://api.carrotlabs.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "my-custom-model",
    "messages": [{"role": "user", "content": "What is 2+2?"}]
  }'

Errors

StatusMeaning
401Invalid or missing API key
404Model not found
502Inference provider temporarily unavailable

On this page