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

# Readiness check for an orchestrator

> Whether this instance can reach the dependencies it needs. The status code is the verdict, so a plain probe suffices, and each dependency reports one word only.

Use this as an orchestrator's readiness probe. It takes no credential. The status code is the verdict: `200` when every dependency answered, `503` when at least one did not, so a plain HTTP probe is enough and nothing has to parse the body.

Each dependency in `checks` is reported as exactly `ok` or `unavailable`, never with a reason. The reason is written to the server logs.

Unlike [Health check](/api-reference/operations/health), this route is rate limited, by the caller's network address, because every request does real work against the database and the rate-limit store. If the rate-limit store itself is unreachable, this route returns `429`.

## Response

<ResponseField name="status" type="string" required>
  `ready` when every entry in `checks` is `ok`, otherwise `not_ready`.
</ResponseField>

<ResponseField name="checks" type="object" required>
  One entry per dependency that decides readiness. Each value is `ok` or `unavailable`.

  <Expandable title="properties">
    <ResponseField name="database" type="string">
      Whether the database answers a query.
    </ResponseField>

    <ResponseField name="rate_limit_store" type="string">
      Whether the store that rate limiting counts in answers.
    </ResponseField>

    <ResponseField name="vector_dimensions" type="string">
      Whether the configured embedding size matches the one the database was set up with. A mismatch
      reports `unavailable`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="scheduler" type="string" required>
  Whether the background scheduler is running: `ok`, `stalled` (it stopped reporting in) or
  `unavailable` (its state could not be read). Reported for monitoring only. It never affects
  `status` or the status code.
</ResponseField>

<ResponseField name="providers" type="string" required>
  Whether this deployment can answer questions with its default models: `ok`; `unconfigured` when no
  model provider key is configured at all; `incomplete` when at least one key is configured but the
  default assistant model or the default embedding model cannot be served by a configured provider;
  `unavailable` when the state could not be assessed. Reported for monitoring only. It never affects
  `status` or the status code: a deployment that cannot answer can still sign people in, serve
  administration and accept knowledge sources.
</ResponseField>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl --request GET "$MITHUNAI_URL/arukz/api/v1/ready"
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import os, requests

  response = requests.get(f"{os.environ['MITHUNAI_URL']}/arukz/api/v1/ready", timeout=10)
  print(response.status_code, response.json())
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const response = await fetch(`${process.env.MITHUNAI_URL}/arukz/api/v1/ready`)
  console.log(response.status, await response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "status": "ready",
    "checks": {
      "database": "ok",
      "rate_limit_store": "ok",
      "vector_dimensions": "ok"
    },
    "scheduler": "ok",
    "providers": "ok"
  }
  ```

  ```json 503 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "status": "not_ready",
    "checks": {
      "database": "unavailable",
      "rate_limit_store": "ok",
      "vector_dimensions": "unavailable"
    },
    "scheduler": "ok",
    "providers": "unconfigured"
  }
  ```

  ```json 429 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  { "code": "rate_limit_exceeded", "message": "Too many requests. Please retry later." }
  ```
</ResponseExample>
