# Change rotation settings (/docs/api-reference/bulk-calls/setBulkCallRotation)

> Change how a campaign uses its number pool. Send only the fields you want to change. At least one field is required.

**PUT** `/calls/bulk_call/{bulk_call_id}/rotation`

Change how a campaign uses its number pool. Send only the fields you
want to change. At least one field is required.

This works while the campaign status is `draft`, `scheduled`,
`in_progress`, `waiting`, `paused`, `auto_paused` or `retry_scheduled`.
Any other status is refused with `Cannot edit rotation for status:
<status>`. To change which numbers are in the pool, use the numbers
endpoints.

```yaml
operationId: setBulkCallRotation
parameters:
  - in: path
    name: bulk_call_id
    required: true
    schema:
      type: integer
    description: Id of the bulk call campaign.
requestBody:
  required: true
  content:
    application/json:
      schema:
        type: object
        properties:
          user_id:
            type: integer
            description: |
              Reseller keys only: act as one of your clients by its user id. Omit
              it to act on your own account.
              [How acting for a client works](/docs/reseller/your-clients/acting-as-clients).
            example: 1234
          strategy:
            type: string
            enum:
              - fixed_count
              - cpr_threshold
              - both
              - none
            description: |
              When to move to the next number: every `calls_per_number`
              calls, on low health score, both, or never.
          calls_per_number:
            type: integer
            description: Calls before moving on. Used by `fixed_count` and `both`.
          health_threshold:
            type: number
            description: |
              Health score below which a number is rotated away from.
              Used by `cpr_threshold` and `both`.
          fallback:
            type: string
            enum:
              - pause
              - continue_best
            description: |
              When every number is unhealthy: `pause` the campaign, or
              `continue_best` with the healthiest one.
          call_back_from_different_number:
            type: boolean
            description: |
              When on, a repeat call to the same person goes out from a
              different number than the one that called them last. Needs
              two or more numbers in the pool. Must be `true` or `false`.
          skip_known_invalid_numbers:
            type: boolean
            description: |
              When on, a contact is not dialed if the carrier said its
              number does not exist, in any campaign of your organization
              in the last 14 days. Must be `true` or `false`.
responses:
  '200':
    description: Rotation settings updated.
    content:
      application/json:
        schema:
          type: object
          properties:
            status:
              type: string
            message:
              type: string
        example:
          status: success
          message: Rotation settings updated
```

**cURL**

```bash
curl -X PUT "https://omnidim.io/api/v1/calls/bulk_call/314/rotation" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"calls_per_number": 30, "call_back_from_different_number": true}'
```

**curl**

```bash
curl -X PUT "https://omnidim.io/api/v1/calls/bulk_call/{bulk_call_id}/rotation" \
  -H "Authorization: Bearer $OMNIDIM_API_KEY"
```