model you name, and Gloo adds nothing between your prompt and the provider.
Direct endpoints add no platform fee. You pay the model’s published rate (see the Models page and GET /platform/v2/models). Coming from another gateway? Direct endpoints cost what you would pay going straight to the model providers.
Use it when you already have tooling built on the Chat Completions request shape and your application owns its own safety and prompting. If you are starting fresh, prefer Direct Responses — same directness, a more capable request shape, and vision and image generation as first-class citizens.
If you want Gloo’s guarded pipeline — guardrails, output moderation, values-alignment (tradition), model_family selection, auto-routing — use Completions instead. The two share a request shape; they differ in what runs around it.
Quick start
URL:https://platform.ai.gloo.com/ai/v2/direct/chat/completions
What runs, and what doesn’t
Identical to every direct endpoint — see Endpoint Types for the full list. In short: authentication, entitlement, metering, the model catalog, provider resiliency and rate limits all still apply; guardrails, output moderation, values-alignment and routing deliberately do not.Reasoning summaries
Sendreasoning_effort (none, minimal, low, medium, high, and xhigh or max on models that take them) to set how much a reasoning model thinks. A graded effort also asks for a summary of the model’s reasoning. When the model returns one, a non-streamed answer carries it in choices[0].message.reasoning_content, and a stream carries it in delta.reasoning_content. none asks for no reasoning and no summary. The model catalog shows which efforts each model takes (reasoning.effort_levels) and whether it returns a summary (reasoning.returns_summary).
Claude models that always think
Claude Opus 5.5, Sonnet 5.5 and Haiku 5.5, and the earlier Opus 5, Sonnet 5, Fable 5 and Fable 5.1, return a reasoning summary when you send areasoning_effort other than none, on streamed and non-streamed requests.
- They always think. Without
reasoning_effortthese Claude models still reason, and return no summary.nonecannot turn reasoning off: it runs atlowand returns no summary (an answer from a fallback provider may still include reasoning).minimalalso runs atlow, and returns the summary. - They decide how much to reason. At a low effort on an easy prompt, the model may return no summary.
- Streamed reasoning can repeat. If the provider fails after a stream has sent reasoning but no answer text, Gloo can send the request to another provider instead of ending the stream with an error. The new provider’s reasoning then arrives in the same stream, starting from the beginning. No chunk marks the switch. If you show reasoning as it arrives, be ready for it to start over, or show only the answer in
delta.content. Once answer text has been sent, the stream is not switched this way.
Example
A request to Claude Opus 5.5 with a reasoning effort:"stream": true, the summary arrives before the answer, in chunks whose delta has reasoning_content and a null content, followed by the answer in delta.content:
When a request fails
Most errors use the standard error object; the content-policy refusal below does not. Two cases are worth handling explicitly:- No provider could serve the model —
503with2002 / PROVIDER_UNAVAILABLEandretryable: true, or on a stream, a2002stream error event. Gloo tries every provider that serves the model first. It is not your request, key, credit, or spend limit: retry with exponential backoff. See Every provider unavailable. - The provider declined the request under its content policy —
400whose body hasdetail.code: "provider_content_policy_violation"anddetail.retryable: falseand no top-levelerrorobject, or afinish_reason: "content_filter"ending on a stream. Rephrase the request or choose a different model; do not retry it unchanged. See Content Policy Refusals.

