# Verified Campaigns Bulk API

{% hint style="danger" %}
Maximum 500 campaigns can be pushed in a single API call
{% endhint %}

{% hint style="success" %}
Replace the `{{BaseURL}}` with the one mentioned [here ](/truecaller-for-business/verified-campaigns/api-webhook-documentation/webhook-connectors.md)
{% endhint %}

<mark style="color:green;">`POST`</mark> `{{BaseURL}/organisations/{organisationid}/campaigns/bulk-upload`

{% hint style="success" %}
{organisationid} : This can be taken directly from the self serve portal under the API Setup Page
{% endhint %}

<figure><img src="/files/4eadYD7FZQ8UorsohLlm" alt=""><figcaption></figcaption></figure>

**Headers**

| Name          | Value                                                            |
| ------------- | ---------------------------------------------------------------- |
| Content-Type  | <p><code>Required</code></p><p><code>application/json</code></p> |
| Authorization | <p><code>Required</code></p><p><code>Bearer \<token></code></p>  |

**Body**

{% hint style="success" %}
In case of single object we can pass it as a raw json and we need not add the request in the file format.
{% endhint %}

File in below format -for multiple user records

{% file src="/files/i9I4HIbbmic7dwNcEGiU" %}

<table><thead><tr><th>Name</th><th>Type</th><th width="139.703125">Validations</th><th>Description</th></tr></thead><tbody><tr><td>campaigns</td><td>array of objects</td><td>min:1<br>max: 500</td><td>Campaign Details Object</td></tr><tr><td>campaign_id</td><td>string</td><td>min:1<br>max: 500</td><td>This can be taken from the self serve portal under the Campaigns tab</td></tr><tr><td>receiver_number</td><td>string</td><td>NA</td><td><p>Receiver Number,</p><p>It is a 12 digit number with country code and without + sign ,also we can pass the number in the SHA256 format ,it also should be a 12 digit number with country code but without + sign</p></td></tr><tr><td>contents</td><td>array of object</td><td>min:1<br>max: 5</td><td>Depends on the number of touchpoints set up in selfserve portal</td></tr><tr><td>display_unit</td><td>string</td><td><p>enums<br>cid </p><p>acs-answered </p><p>acs-missed-rejected mid </p><p>business-profile</p></td><td>The display unit where the campaign will be played</td></tr><tr><td>deeplink</td><td>string</td><td>valid link</td><td>The external link to which the request should be routed</td></tr><tr><td>ttl</td><td>string</td><td>min:1<br>max: 365</td><td>Time to live (in days)</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200 OK" %}

```json
{
    "message": "Payload received successfully for processing"
}
```

{% endtab %}

{% tab title="500 Internal Server Error" %}

```json
{
    "slug": "internal-server-error",
    "message": "500/50011 - Failed to parse token"
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.truecaller.com/truecaller-for-business/verified-campaigns/api-webhook-documentation/bulk-api/verified-campaigns-bulk-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
