Compatible endpoints

Two additional doors onto the same Vedika AI query. Both are stateless adapters on top of the harness pipeline; both share the same auth, the same public model ids, and the same error envelope shapes.

Chat Completions-compatible door

Base URL: https://harness.example.com/openai/v1

bash
curl https://harness.example.com/openai/v1/chat/completions \
  -H "Authorization: Bearer <VEDIKA_AGENT_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "vedika-standard",
    "messages": [
      {"role": "user", "content": "What does my chart say about 2026?"}
    ]
  }'

Messages-compatible door

Base URL: https://harness.example.com/anthropic

bash
curl https://harness.example.com/anthropic/v1/messages \
  -H "Authorization: Bearer <VEDIKA_AGENT_KEY>" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "vedika-standard",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "What does my chart say about 2026?"}
    ]
  }'

What each door accepts and rejects

Streaming v1

Both doors accept stream: true, but the answer is one-shot: the full validated answer is delivered in a single delta after settlement. Token-by-token streaming is reserved for the chat-app door and is not advertised on the compat surface.

Extension fields

Send Vedika-specific inputs through an extension object. The Chat Completions door accepts a top-level vedika field; the Messages door accepts the same shape via extra_body or top-level prop.

json
{
  "vedika": {
    "birth_details": { "date": "1990-06-15", "time": "08:30", "place": "Mumbai" },
    "language": "en",
    "system": "vedic",
    "conversation_id": "conv_..."
  }
}