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

# Batch requests

> Run multiple decisions in a single request.

Each entry in `requests` is a **group**: one `content` plus a list of `questions` about it — so asking several questions about the same content sends that content only once, and a single call can still mix groups with different content.

<Note>
  `/decide/batch` requires the same API key header as `/decide`. See [Authentication](/decision-model/authentication).
</Note>

## Request

Each question can carry its own optional `grounding` (grounding is no longer part of the group; `sort` questions still reject it).

```json theme={null}
{
  "requests": [
    {
      "content": "User post: 'Selling verified Instagram accounts, DM for bulk pricing.'",
      "questions": [
        {"id": "policy_violation", "kind": "yesno", "instructions": "Does this post violate marketplace policy?"},
        {
          "id": "harm_level",
          "kind": "scale",
          "instructions": "How harmful is this content to the platform?",
          "levels": [
            {"level": 0, "description": "No meaningful harm — safe to leave published"},
            {"level": 1, "description": "Low harm — minor policy edge case"},
            {"level": 2, "description": "Moderate harm — misleading or low-grade abuse"},
            {"level": 3, "description": "High harm — fraud, spam, or user safety risk"},
            {"level": 4, "description": "Severe harm — active scam or imminent user damage"}
          ]
        }
      ]
    }
  ]
}
```

To batch decisions about *different* content, add more groups:

```json theme={null}
{
  "requests": [
    {"content": "doc A", "questions": [{"id": "a1", "kind": "yesno", "instructions": "urgent?"}]},
    {"content": "doc B", "questions": [{"id": "b1", "kind": "yesno", "instructions": "urgent?"}]}
  ]
}
```

## Response

Batch responses are nested by group, then by question:

* `results`: one item per **group** (matches `requests` 1:1)
* `results[i].answers`: one item per question in that group's `questions`, in order
* `results[i].answers[j].ok`: success flag for that question (`.result` holds the decision, or `.error` the message)
* `meta.request_count`: number of groups
* `meta.question_count`: total questions across all groups (the billing unit — see [Pricing](/pricing))
