/// truth-lock · precise compatibility
Compatibility matrix
Ainfera exposes an OpenAI-compatible chat-completions endpoint — not a full OpenAI API clone. This is exactly what is and isn't supported. Machine-readable: /compatibility.json
✅ Supported🟡 Beta❌ Not supported⚠️ Accepted, ignored— Not exposed
| Feature | Surface | Status | Notes |
|---|---|---|---|
| Chat completions (subset) | POST /v1/chat/completions | ✅ Supported | Core chat-completions: model, messages, max_tokens, temperature. The high-value path for agent frameworks. |
| Tool calls / function calling | POST /v1/chat/completions | ✅ Supported | OpenAI tool-calls format. Only models declaring tool support are eligible for routing. |
| Structured output (response_format) | POST /v1/chat/completions | ⚠️ Accepted, ignored | Field is accepted so SDKs don't 422. Not currently translated to provider-side structured output. Track: future enhancement. |
| True token streaming (SSE) | POST /v1/chat/completions | 🟡 Beta | stream=true returns server-sent events. Audit metadata arrives in the final chunk. Currently buffered SSE — not true per-token streaming from the provider. True token streaming is in beta. |
| Buffered SSE | POST /v1/chat/completions | ✅ Supported | Server-sent events with audit metadata in the final chunk. Streaming UX stays intact. |
| Vision (image_url blocks) | POST /v1/chat/completions | ❌ Not supported | Image_url blocks are not accepted on the chat-completions surface. Flatten to text or use a provider-direct call for vision. |
| Responses API | POST /v1/responses | — Not exposed | Not implemented. Use /v1/chat/completions for chat-based interactions. |
| Embeddings | POST /v1/embeddings | — Not exposed | Not exposed on the OpenAI-compatible shim. Track for future support. |
| Batch API | POST /v1/batch | — Not exposed | Not exposed. Track for future support. |
| Anthropic Messages | POST /v1/messages | ✅ Supported | Anthropic-compatible messages endpoint. Wire-compatible with the anthropic SDK (≥ 0.40 Python, ≥ 0.30 TypeScript). |
| Anthropic tool use | POST /v1/messages | ✅ Supported | Anthropic tool-use blocks returned in content_blocks. |
| Anthropic streaming | POST /v1/messages | ✅ Supported | stream=true on the Anthropic surface. |
| Native inference | POST /v1/inference | ✅ Supported | The ainfera SDK's default surface. Single-shot JSON only. No streaming (returns 501). |
| Assistants API | POST /v1/assistants | — Not exposed | Use Ainfera-native agent endpoints instead. |
| Files API | /v1/files | — Not exposed | Not exposed. |
| Images (DALL-E) | /v1/images | — Not exposed | Not exposed. |
| Audio (Whisper / TTS) | /v1/audio | — Not exposed | Not exposed. |
| Moderation | /v1/moderations | — Not exposed | Not exposed. |
| Fine-tuning | /v1/fine_tuning | — Not exposed | Not exposed. |
| latency_cap_ms | routing_hint on /v1/inference | ⚠️ Accepted, warned | Accepted on the wire. The brain drops candidates with known expected latency exceeding the cap, but most catalog models lack the AA latency metrics needed to compute it. Returns a structured warning {"warning":{"code":"latency_cap_not_enforced","policy_field":"latency_cap_ms"}} — not a guaranteed hard SLO today. |
| routing_preference (quality / cost) | routing_hint on /v1/inference | ⚠️ Accepted, warned | Accepted on the wire. When AINFERA_ROUTING_PREFERENCE_LIVE is OFF (default), quality/cost dials do not change the resolved policy floor. Returns a structured warning. The `balanced` value is never inert (default behavior). |
| budget_cap_usd | routing_hint on /v1/inference | ✅ Supported | Enforced. Candidates exceeding the budget cap are excluded from the routing set. |
| min_quality | routing_hint on /v1/inference | ✅ Supported | Enforced. Candidates below the minimum quality floor (κ-gated) are excluded from the routing set. |
Machine-readable surface
GET /compatibility.json — JSON, no auth required. Consumed by the parity gate and linked from /llms.txt. Versioned with the API; breaking changes are semver-major.
GET /compatibility.json — JSON, no auth required. Consumed by the parity gate and linked from /llms.txt. Versioned with the API; breaking changes are semver-major.