Campaign clicks
http
GET https://smsprovider-web.vercel.app/api/v1/campaigns/{id}/clicksUnique and total clicks, CTR, hourly breakdown and clickers (bots and link previews excluded).
Authentication: Authorization: Bearer bm_live_… · Required scope: reports
Path parameters
| Field | Type |
|---|---|
id | string (uuid) |
Response
200 — CampaignClicks
Errors
| Status | Code |
|---|---|
| 404 | not_found |
| 401 | unauthorized |
| 403 | insufficient_scope |
| 429 | rate_limited |
| 500 | internal_error |
Examples
curl
bash
curl -X GET "https://smsprovider-web.vercel.app/api/v1/campaigns/{id}/clicks" \
-H "Authorization: Bearer $BATLER_API_KEY"Node.js
ts
import { BatlerSMS } from "@batler/sms";
const sms = new BatlerSMS({ apiKey: process.env.BATLER_API_KEY! });
const result = await sms.campaigns.clicks(id);PHP
php
<?php
$ch = curl_init("https://smsprovider-web.vercel.app/api/v1/campaigns/{id}/clicks");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("BATLER_API_KEY"),
"Content-Type: application/json",
],
]);
$result = json_decode(curl_exec($ch), true);Python
python
import os, uuid, requests
resp = requests.request(
"GET", "https://smsprovider-web.vercel.app/api/v1/campaigns/{id}/clicks",
headers={"Authorization": f"Bearer {os.environ['BATLER_API_KEY']}"},
timeout=30,
)
resp.raise_for_status()
result = resp.json()C#
csharp
using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("BATLER_API_KEY"));
var req = new HttpRequestMessage(HttpMethod.Get, "https://smsprovider-web.vercel.app/api/v1/campaigns/{id}/clicks");
var res = await http.SendAsync(req);
var result = await res.Content.ReadAsStringAsync();