# Send Campaign With Daily Limits

Campaign daily limits allow you to restrict how many messages can be accepted for a specific batch campaign within a single day. This is useful for throttling large sends or enforcing volume controls.

If the daily limit is reached, any further requests for that campaign on the same day will be rejected.

If no daily limit is required, use the standard [Batch SMS endpoint](https://wiki.mobivatebulksms.com/sending-sms/send-batch-sms-messages) instead.

### <mark style="color:green;">`POST`</mark> `/send/campaign/limited/{dailyLimit}`

Replace {dailyLimit} with the maximum number of messages that may be accepted per day for the campaign.

#### Required Permission

```
create:BatchSMS
```

Your API key must have this permission enabled to use this endpoint.

### Example Request

```bash
curl --location 'https://<hostname>/send/campaign/limited/5' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
    "name": "test",
    "recipients": [
      {
        "recipient": "447000000000",
        "reference": "aaa",
        "meta": {
          "NAME": "John"
        }
      },
      {
        "recipient": "447000000001",
        "reference": "bbb",
        "meta": {
          "NAME": "Mike"
        }
      }
    ],
    "text": "Hello {{NAME}}",
    "originator": "test",
    "shortenUrls": false,
    "excludeDuplicates": false,
    "excludeOptOuts": true,
    "spreadHours": 0
  }'
```

Replace `YOUR_API_KEY` with your API key.

{% hint style="info" %}
All endpoints shown in this documentation use a **sample base URL**. The production API endpoint is provided by our team upon request.
{% endhint %}

### How Daily Limits Work

* The `{dailyLimit}` value defines the maximum number of messages that can be **accepted** for the campaign per day.
* The limit is evaluated per campaign name.
* Limits reset automatically at **midnight UTC**.
* Messages that would exceed the daily limit are rejected and not queued for delivery.

#### Request Parameters

| Field            | Type                       | Required | Description                                                                                                                                                                                                   |
| ---------------- | -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| text             | string                     | Yes      | The SMS message content.                                                                                                                                                                                      |
| originator       | string                     | Yes      | The sender ID displayed on the recipient’s handset.                                                                                                                                                           |
| recipient        | string                     | Yes      | The destination phone number in international format.                                                                                                                                                         |
| shortenUrls      | boolean                    | No       | Whether URLs in the message should be automatically shortened.                                                                                                                                                |
| excludeOptouts   | boolean                    | No       | Whether opted-out recipients should be excluded from delivery.                                                                                                                                                |
| spreadHours      | number                     | No       | Spread message delivery evenly over the specified number of hours.                                                                                                                                            |
| scheduleDateTime | string (ISO 8601 datetime) | No       | Schedules the message or campaign to be sent at a future date and time. The value must be provided in ISO 8601 format (e.g. `2025-03-01T14:30:00Z`). If omitted, the message or campaign is sent immediately. |

#### Success (HTTP 200)

Returned when the campaign is accepted and within the configured daily limit.

The response format matches a standard Batch SMS response.

#### Daily Limit Reached (HTTP 429)

Returned when the campaign has reached its daily message limit.

```json
{
  "success": false,
  "campaignName": "test",
  "dailyLimit": 6,
  "sentToday": 5,
  "error": "Daily limit of 6 reached for 'test'!"
}
```

This response indicates that no additional messages were accepted for the campaign on the current day.

{% hint style="info" %}
Daily limits apply only to message **acceptance**, not delivery completion.
{% endhint %}
