> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dari.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Responses API

> Send a routed OpenAI Responses request

<ParamField header="Authorization" type="string" required>
  `Bearer` plus a Routing API key.
</ParamField>

<ParamField body="model" type="string" required>
  Must be `dari/routing`.
</ParamField>

<ParamField body="input" type="string | array" required>
  Text or Responses input items.
</ParamField>

<ParamField body="instructions" type="string">
  System or developer instructions.
</ParamField>

<ParamField body="stream" type="boolean">
  Stream Responses events.
</ParamField>

<ParamField body="tools" type="array">
  Function, custom, or namespace tools.
</ParamField>

<ParamField body="reasoning.effort" type="string">
  Require the selected model to use exactly `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, or `max`. Models that do not support that level are ineligible. Responses uses `none` where Chat Completions uses `off`.
</ParamField>

<ParamField body="max_output_tokens" type="number">
  Maximum output tokens.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl https://routing.dari.dev/v1/responses \
    -H "Authorization: Bearer $DARI_ROUTING_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "dari/routing",
      "input": "Hello from Dari"
    }'
  ```
</RequestExample>

The response follows the OpenAI Responses shape. `dari_routing` adds `selected_model`, `reasoning_effort`, `reason`, and `conversation_id`.

The `/v1` endpoint uses your organization's default router. To address a specific router instead, send the same request to `https://routing.dari.dev/{router_id}/v1/responses`.

This endpoint uses HTTP, not WebSockets. `previous_response_id` is unsupported; resend the full input history.
