---
title: "✨ Bulk replace review routing rules"
method: POST
path: "/api/projects/{id}/review-routing-rules/bulk/"
tags: ["Review Routing Rules"]
---

# ✨ Bulk replace review routing rules

`POST /api/projects/{id}/review-routing-rules/bulk/`

<Card href="https://humansignal.com/goenterprise">
        <img style="pointer-events: none; margin-left: 0px; margin-right: 0px;" src="https://docs.humansignal.com/images/badge.svg" alt="Label Studio Enterprise badge"/>
        <p style="margin-top: 10px; font-size: 14px;">
            This endpoint is not available in Label Studio Community Edition. [Learn more about Label Studio Enterprise](https://humansignal.com/goenterprise)
        </p>
    </Card>
Atomically replace the ordered review routing rules for a project. Rules with an `id` update the existing project rule. Rules without an `id` are created. Existing project rules omitted from the request are deleted, and request order becomes rule order.

## Path parameters

- `id` integer, required

## Request body

- ReviewRoutingRulesReplaceRequest
  - `rules` ReviewRoutingRuleRequestRequest[], required
    - `agreement_threshold` string, decimal, nullable, required
    - `dimension` integer, nullable, required
    - `id` integer
    - `operator` 'lt' | 'lte' | 'gt' | 'gte' | 'eq', required — * `lt` - < * `lte` - <= * `gt` - > * `gte` - >= * `eq` - =
    - `sample_rate` string, decimal, required

## Response `200`

- ReviewRoutingRule[]
  - `agreement_threshold` string, decimal, nullable — Agreement threshold (0..1) compared against the rule operator. Required when operator is set.
  - `created_at` string, date-time, required — Time this rule was created
  - `dimension` integer, nullable — Dimension whose agreement is compared. Null => compare overall task agreement. Deleting the dimension cascades to the rule (a dimension-scoped rule has no meaning without its dimension; falling back to overall agreement would silently change the cohort).
  - `id` integer
  - `operator` 'lt' | 'lte' | 'gt' | 'gte' | 'eq' — * `lt` - < * `lte` - <= * `gt` - > * `gte` - >= * `eq` - =
  - `order` integer, required — Position in the rule list (rules are evaluated in ascending order)
  - `sample_rate` string, decimal — Sample rate (0..1) of matching tasks routed for review. 1 always routes, 0 never routes.
  - `updated_at` string, date-time, required — Last time this rule was updated

---

[API](https://skmtc.net/humansignal/apis/label-studio-api.md) · [All operations](https://skmtc.net/humansignal/apis/label-studio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/humansignal/label-studio-api/revisions/1b113b8df950/schema)
