{
  "product": "Ainfera Inference",
  "description": "OpenAI-compatible chat-completions endpoint. Not a full OpenAI API clone — see the matrix below for exactly what is and isn't supported.",
  "canonical_url": "https://ainfera.ai/compatibility",
  "generated_at": "2026-07-16T18:08:37.024Z",
  "matrix": [
    {
      "feature": "Chat completions (subset)",
      "surface": "POST /v1/chat/completions",
      "status": "supported",
      "notes": "Core chat-completions: model, messages, max_tokens, temperature. The high-value path for agent frameworks."
    },
    {
      "feature": "Tool calls / function calling",
      "surface": "POST /v1/chat/completions",
      "status": "supported",
      "notes": "OpenAI tool-calls format. Only models declaring tool support are eligible for routing."
    },
    {
      "feature": "Structured output (response_format)",
      "surface": "POST /v1/chat/completions",
      "status": "accepted_ignored",
      "notes": "Field is accepted so SDKs don't 422. Not currently translated to provider-side structured output. Track: future enhancement."
    },
    {
      "feature": "True token streaming (SSE)",
      "surface": "POST /v1/chat/completions",
      "status": "beta",
      "notes": "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."
    },
    {
      "feature": "Buffered SSE",
      "surface": "POST /v1/chat/completions",
      "status": "supported",
      "notes": "Server-sent events with audit metadata in the final chunk. Streaming UX stays intact."
    },
    {
      "feature": "Vision (image_url blocks)",
      "surface": "POST /v1/chat/completions",
      "status": "not_supported",
      "notes": "Image_url blocks are not accepted on the chat-completions surface. Flatten to text or use a provider-direct call for vision."
    },
    {
      "feature": "Responses API",
      "surface": "POST /v1/responses",
      "status": "not_exposed",
      "notes": "Not implemented. Use /v1/chat/completions for chat-based interactions."
    },
    {
      "feature": "Embeddings",
      "surface": "POST /v1/embeddings",
      "status": "not_exposed",
      "notes": "Not exposed on the OpenAI-compatible shim. Track for future support."
    },
    {
      "feature": "Batch API",
      "surface": "POST /v1/batch",
      "status": "not_exposed",
      "notes": "Not exposed. Track for future support."
    },
    {
      "feature": "Anthropic Messages",
      "surface": "POST /v1/messages",
      "status": "supported",
      "notes": "Anthropic-compatible messages endpoint. Wire-compatible with the anthropic SDK (≥ 0.40 Python, ≥ 0.30 TypeScript)."
    },
    {
      "feature": "Anthropic tool use",
      "surface": "POST /v1/messages",
      "status": "supported",
      "notes": "Anthropic tool-use blocks returned in content_blocks."
    },
    {
      "feature": "Anthropic streaming",
      "surface": "POST /v1/messages",
      "status": "supported",
      "notes": "stream=true on the Anthropic surface."
    },
    {
      "feature": "Native inference",
      "surface": "POST /v1/inference",
      "status": "supported",
      "notes": "The ainfera SDK's default surface. Single-shot JSON only. No streaming (returns 501)."
    },
    {
      "feature": "Assistants API",
      "surface": "POST /v1/assistants",
      "status": "not_exposed",
      "notes": "Use Ainfera-native agent endpoints instead."
    },
    {
      "feature": "Files API",
      "surface": "/v1/files",
      "status": "not_exposed",
      "notes": "Not exposed."
    },
    {
      "feature": "Images (DALL-E)",
      "surface": "/v1/images",
      "status": "not_exposed",
      "notes": "Not exposed."
    },
    {
      "feature": "Audio (Whisper / TTS)",
      "surface": "/v1/audio",
      "status": "not_exposed",
      "notes": "Not exposed."
    },
    {
      "feature": "Moderation",
      "surface": "/v1/moderations",
      "status": "not_exposed",
      "notes": "Not exposed."
    },
    {
      "feature": "Fine-tuning",
      "surface": "/v1/fine_tuning",
      "status": "not_exposed",
      "notes": "Not exposed."
    },
    {
      "feature": "latency_cap_ms",
      "surface": "routing_hint on /v1/inference",
      "status": "accepted_warned",
      "notes": "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."
    },
    {
      "feature": "routing_preference (quality / cost)",
      "surface": "routing_hint on /v1/inference",
      "status": "accepted_warned",
      "notes": "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)."
    },
    {
      "feature": "budget_cap_usd",
      "surface": "routing_hint on /v1/inference",
      "status": "supported",
      "notes": "Enforced. Candidates exceeding the budget cap are excluded from the routing set."
    },
    {
      "feature": "min_quality",
      "surface": "routing_hint on /v1/inference",
      "status": "supported",
      "notes": "Enforced. Candidates below the minimum quality floor (κ-gated) are excluded from the routing set."
    }
  ]
}