Free rounds
Search free rounds campaigns
Paginated search over your campaigns.
campaignCode and campaignName match on substring, not exact equality — filter client side if you need an exact hit.
POST
/
api
/
v1
/
free-rounds
/
campaigns
/
search
Search free rounds campaigns
curl --request POST \
--url https://{host}/api/v1/free-rounds/campaigns/search \
--header 'Content-Type: application/json' \
--header 'X-Operator: <api-key>' \
--header 'X-Zd-Signature: <api-key>' \
--header 'X-Zd-Timestamp: <api-key>' \
--data '
{
"page": 1,
"perPage": 100,
"currencyCode": "USD",
"campaignCode": "XMAS",
"from": "2026-05-15T11:25:16Z",
"to": "2026-08-15T11:25:16Z"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{host}/api/v1/free-rounds/campaigns/search"
payload := strings.NewReader("{\n \"page\": 1,\n \"perPage\": 100,\n \"currencyCode\": \"USD\",\n \"campaignCode\": \"XMAS\",\n \"from\": \"2026-05-15T11:25:16Z\",\n \"to\": \"2026-08-15T11:25:16Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Operator", "<api-key>")
req.Header.Add("X-Zd-Signature", "<api-key>")
req.Header.Add("X-Zd-Timestamp", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}const options = {
method: 'POST',
headers: {
'X-Operator': '<api-key>',
'X-Zd-Signature': '<api-key>',
'X-Zd-Timestamp': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
page: 1,
perPage: 100,
currencyCode: 'USD',
campaignCode: 'XMAS',
from: '2026-05-15T11:25:16Z',
to: '2026-08-15T11:25:16Z'
})
};
fetch('https://{host}/api/v1/free-rounds/campaigns/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/free-rounds/campaigns/search"
payload = {
"page": 1,
"perPage": 100,
"currencyCode": "USD",
"campaignCode": "XMAS",
"from": "2026-05-15T11:25:16Z",
"to": "2026-08-15T11:25:16Z"
}
headers = {
"X-Operator": "<api-key>",
"X-Zd-Signature": "<api-key>",
"X-Zd-Timestamp": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://{host}/api/v1/free-rounds/campaigns/search")
.header("X-Operator", "<api-key>")
.header("X-Zd-Signature", "<api-key>")
.header("X-Zd-Timestamp", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"page\": 1,\n \"perPage\": 100,\n \"currencyCode\": \"USD\",\n \"campaignCode\": \"XMAS\",\n \"from\": \"2026-05-15T11:25:16Z\",\n \"to\": \"2026-08-15T11:25:16Z\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{host}/api/v1/free-rounds/campaigns/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'page' => 1,
'perPage' => 100,
'currencyCode' => 'USD',
'campaignCode' => 'XMAS',
'from' => '2026-05-15T11:25:16Z',
'to' => '2026-08-15T11:25:16Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Operator: <api-key>",
"X-Zd-Signature: <api-key>",
"X-Zd-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"list": [
{
"campaignCode": "XMAS-2026",
"campaignName": "XMAS 2026",
"amount": 2.5,
"currencyCode": "USD",
"gameSlugs": [
"lucky-duck"
],
"createdAt": "2026-05-15T11:25:16Z",
"isDisabled": false,
"startDate": "2026-05-15T11:25:16Z",
"endDate": "2026-08-15T11:25:16Z",
"maxRounds": 1
}
],
"pagination": {
"page": 1,
"perPage": 100,
"total": 150,
"totalPages": 2
}
}
}{
"message": "invalid currency code"
}{
"message": "invalid signature"
}{
"message": "internal error"
}Authorizations
Your operator identifier, issued by Zero-Dash during onboarding.
Hex-encoded HMAC-SHA512(apiPath|timestamp|data, secretKey). See Request signature.
Unix time in milliseconds, and the exact value signed. Requests older than 5 minutes are rejected.
Body
application/json
Page to retrieve. The first page is 1.
Required range:
x >= 1Results per page.
Required range:
1 <= x <= 100Filter by campaign currency.
Substring match on the campaign code.
Substring match on the campaign name.
Return campaigns whose startDate is greater than or equal to this value.
Return campaigns whose endDate is less than or equal to this value.
Response
A page of matching campaigns.
Show child attributes
Show child attributes
⌘I
Search free rounds campaigns
curl --request POST \
--url https://{host}/api/v1/free-rounds/campaigns/search \
--header 'Content-Type: application/json' \
--header 'X-Operator: <api-key>' \
--header 'X-Zd-Signature: <api-key>' \
--header 'X-Zd-Timestamp: <api-key>' \
--data '
{
"page": 1,
"perPage": 100,
"currencyCode": "USD",
"campaignCode": "XMAS",
"from": "2026-05-15T11:25:16Z",
"to": "2026-08-15T11:25:16Z"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{host}/api/v1/free-rounds/campaigns/search"
payload := strings.NewReader("{\n \"page\": 1,\n \"perPage\": 100,\n \"currencyCode\": \"USD\",\n \"campaignCode\": \"XMAS\",\n \"from\": \"2026-05-15T11:25:16Z\",\n \"to\": \"2026-08-15T11:25:16Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Operator", "<api-key>")
req.Header.Add("X-Zd-Signature", "<api-key>")
req.Header.Add("X-Zd-Timestamp", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}const options = {
method: 'POST',
headers: {
'X-Operator': '<api-key>',
'X-Zd-Signature': '<api-key>',
'X-Zd-Timestamp': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
page: 1,
perPage: 100,
currencyCode: 'USD',
campaignCode: 'XMAS',
from: '2026-05-15T11:25:16Z',
to: '2026-08-15T11:25:16Z'
})
};
fetch('https://{host}/api/v1/free-rounds/campaigns/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/free-rounds/campaigns/search"
payload = {
"page": 1,
"perPage": 100,
"currencyCode": "USD",
"campaignCode": "XMAS",
"from": "2026-05-15T11:25:16Z",
"to": "2026-08-15T11:25:16Z"
}
headers = {
"X-Operator": "<api-key>",
"X-Zd-Signature": "<api-key>",
"X-Zd-Timestamp": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://{host}/api/v1/free-rounds/campaigns/search")
.header("X-Operator", "<api-key>")
.header("X-Zd-Signature", "<api-key>")
.header("X-Zd-Timestamp", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"page\": 1,\n \"perPage\": 100,\n \"currencyCode\": \"USD\",\n \"campaignCode\": \"XMAS\",\n \"from\": \"2026-05-15T11:25:16Z\",\n \"to\": \"2026-08-15T11:25:16Z\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{host}/api/v1/free-rounds/campaigns/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'page' => 1,
'perPage' => 100,
'currencyCode' => 'USD',
'campaignCode' => 'XMAS',
'from' => '2026-05-15T11:25:16Z',
'to' => '2026-08-15T11:25:16Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Operator: <api-key>",
"X-Zd-Signature: <api-key>",
"X-Zd-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"list": [
{
"campaignCode": "XMAS-2026",
"campaignName": "XMAS 2026",
"amount": 2.5,
"currencyCode": "USD",
"gameSlugs": [
"lucky-duck"
],
"createdAt": "2026-05-15T11:25:16Z",
"isDisabled": false,
"startDate": "2026-05-15T11:25:16Z",
"endDate": "2026-08-15T11:25:16Z",
"maxRounds": 1
}
],
"pagination": {
"page": 1,
"perPage": 100,
"total": 150,
"totalPages": 2
}
}
}{
"message": "invalid currency code"
}{
"message": "invalid signature"
}{
"message": "internal error"
}