# Compliance

The **Compliance API** allows third-party suppliers to verify whether their contact lists are compliant with your campaign’s targeting rules before sending messages. This ensures that sends respect opt-outs and campaign restrictions.


---

## Check a List of Cell Numbers

**Endpoint:**

`POST /compliance/send `

**Description:**  
Checks a list of cell numbers against a campaign’s targeting criteria and global opt-out list. Useful for suppliers who need to confirm compliance before sending.


:::info
**Permissions Required:**

`["compliance:send.create"] `

:::



:::info
**Billing:**  
💵 Paid endpoint — **0.14 credits per cell queried**

:::


---

### Request

**URL Parameters:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| campaign_id | string | No       | If provided, checks compliance against a specific campaign’s targeting criteria. If omitted, only global opt-outs will be checked. |

**Body:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| cells | string[] | Yes      | List of MSISDNs to check. |
| country | string | Yes      | Country code of the numbers. |

**Example Request:**

```javascript
{
  "country": "ZA",
  "cell": ["1234567890", "1234567234"]
}
```


---

### Response

**Success (200):**

```javascript
{
  ok: true;
  data: {
    /** Propagate the campaign_id param */
    campaign_id?: string;
    /** The number of credits used for the check */
    credits_used: number;
    /** The results of the query */
    results: {
      cell: string;
      /** Whether the cell number is authorised to be sent to */
      can_send: boolean;
    }
    [];
  }
} 
```

**Error (402 – Insufficient Balance):**

```javascript
{
  ok: false;
  error: "Insufficient balance";
} 
```


---


:::tip
## Notes

* Each compliance check consumes **0.14 credits per cell number**.
* If `campaign_id` is not supplied, only global opt-outs are validated.
* The `can_send` flag indicates whether a given MSISDN is authorised for sending.
* Ensure your balance is topped up before calling this endpoint to avoid `402` errors.

:::