API
Получение списка языков
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Массив | Массив доступных языков. |
| └ lang_id | Число | Уникальный идентификатор языка. |
| └ name | Строка | Название языка на английском. |
| └ iso_code | Строка | ISO код языка (например, "EN" для английского, "RU" для русского). |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/languages');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Получение списка стран
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Массив | Массив доступных стран. |
| └ country_id | Число | Уникальный идентификатор страны. |
| └ name | Строка | Название страны на английском. |
| └ iso_code | Строка | ISO 3166-1 alpha-2 код страны (например, "US" для США). |
| └ iso_code_3 | Строка | ISO 3166-1 alpha-3 код страны (например, "USA" для США). |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/countries');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Получение списка браузеров
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Массив | Массив доступных браузеров. |
| └ browser_id | Число | Уникальный идентификатор браузера. |
| └ name | Строка | Название браузера. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/browsers');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Получение списка устройств
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Массив | Массив доступных типов устройств. |
| └ device_id | Число | Уникальный идентификатор типа устройства. |
| └ name | Строка | Отображаемое название типа устройства. |
| └ value | Строка | Значение типа устройства для API запросов. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/devices');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Получение списка операционных систем
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Массив | Массив доступных операционных систем. |
| └ os_id | Число | Уникальный идентификатор операционной системы. |
| └ name | Строка | Отображаемое название операционной системы. |
| └ value | Строка | Значение операционной системы для API запросов. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/operating_systems');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Получение списка рекламных сетей
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Массив | Массив доступных рекламных сетей. |
| └ network_id | Число | Уникальный идентификатор рекламной сети. |
| └ name | Строка | Отображаемое название рекламной сети. |
| └ value | Строка | Значение рекламной сети для API запросов. |
| └ logo | Строка | URL логотипа рекламной сети. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/advertising_networks');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Поиск Push креативов
Поиск push-креативов с возможностью фильтрации по различным параметрам.
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| limit | Число | Нет | Максимальное количество возвращаемых записей (1-100). По умолчанию: 20. |
| offset | Число | Нет | Смещение для пагинации. По умолчанию: 0. |
| keyword | Строка | Нет | Ключевое слово для поиска в заголовке и описании креатива. |
| countries | Массив | Нет | Массив ISO-2 кодов стран для фильтрации (например, ["US", "GB"]). |
| country_ids | Массив | Нет | Массив ID стран для фильтрации (из /api/filters/countries). |
| languages | Массив | Нет | Массив ISO кодов языков для фильтрации (например, ["EN", "RU"]). |
| lang_ids | Массив | Нет | Массив ID языков для фильтрации (из /api/filters/languages). |
| advertising_networks | Массив | Нет | Массив названий рекламных сетей для фильтрации. |
| network_ids | Массив | Нет | Массив ID рекламных сетей для фильтрации (из /api/filters/advertising-networks). |
| browsers | Массив | Нет | Массив названий браузеров для фильтрации. |
| browser_ids | Массив | Нет | Массив ID браузеров для фильтрации (из /api/filters/browsers). |
| operating_systems | Массив | Нет | Массив значений операционных систем (например, ["windows", "macos", "android"]). |
| devices | Массив | Нет | Массив типов устройств для фильтрации (например, ["desktop", "mobile"]). |
| date_from | Строка | Нет | Начальная дата для фильтрации в формате YYYY-MM-DD. |
| date_to | Строка | Нет | Конечная дата для фильтрации в формате YYYY-MM-DD. |
| sort_by | Строка | Нет | Поле сортировки: creation, activity, popularity, likes, comments, shares. |
| sort_order | Строка | Нет | Порядок сортировки: asc или desc. По умолчанию: desc. |
| only_adult | Boolean | Нет | Фильтровать только креативы для взрослых. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Object | Массив данных потоков, соответствующих запросу. |
| └ format | Строка | Формат креативов в ответе (push, inpage, facebook, tiktok). |
| └ items | Массив | Массив объектов креативов. |
| └ id | Число | Уникальный идентификатор креатива. |
| └ title | Строка | Заголовок креатива. |
| └ description | Строка | Описание креатива. |
| └ category | Строка | Формат/категория креатива (push, inpage, facebook, tiktok). |
| └ country | Object | Объект с информацией о стране (code, name, iso_code_3). |
| └ code | Строка | ISO 3166-1 alpha-2 код страны (например, "US" для США). |
| └ name | Строка | Название страны на английском. |
| └ iso_code_3 | Строка | ISO 3166-1 alpha-3 код страны (например, "USA" для США). |
| └ file_size | Строка | Форматированный общий размер файла. |
| └ icon_url | Строка | URL иконки креатива. |
| └ landing_url | Строка | URL целевой страницы. |
| └ created_at | Строка | Дата создания креатива (формат Y-m-d). |
| └ advertising_networks | Массив | Массив названий рекламных сетей. |
| └ languages | Массив | Массив ISO кодов языков. |
| └ operating_systems | Массив | Массив значений операционных систем. |
| └ browsers | Массив | Массив названий браузеров. |
| └ devices | Массив | Массив типов устройств. |
| └ main_image_url | Строка | URL основного изображения креатива. |
| └ is_adult | Boolean | Содержит ли креатив контент для взрослых. |
| └ is_active | Boolean | Активен ли креатив в данный момент. |
| └ pagination | Object | Информация о пагинации. |
| └ total | Число | Общее количество креативов, соответствующих фильтрам. |
| └ limit | Число | Примененный лимит. |
| └ offset | Число | Примененное смещение. |
| └ has_more | Boolean | Есть ли ещё записи после текущей страницы. |
| └ returned_count | Число | Количество креативов в текущем ответе. |
| └ filters_applied | Object | Объект с примененными фильтрами. |
| └ timestamp | Строка | Метка времени ответа в формате ISO 8601. |
<?php
function searchPushCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/push');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchPushCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchPushCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchPushCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
Поиск Inpage креативов
Поиск inpage-креативов с возможностью фильтрации по различным параметрам.
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| limit | Число | Нет | Максимальное количество возвращаемых записей (1-100). По умолчанию: 20. |
| offset | Число | Нет | Смещение для пагинации. По умолчанию: 0. |
| keyword | Строка | Нет | Ключевое слово для поиска в заголовке и описании креатива. |
| countries | Массив | Нет | Массив ISO-2 кодов стран для фильтрации (например, ["US", "GB"]). |
| country_ids | Массив | Нет | Массив ID стран для фильтрации (из /api/filters/countries). |
| languages | Массив | Нет | Массив ISO кодов языков для фильтрации (например, ["EN", "RU"]). |
| lang_ids | Массив | Нет | Массив ID языков для фильтрации (из /api/filters/languages). |
| advertising_networks | Массив | Нет | Массив названий рекламных сетей для фильтрации. |
| network_ids | Массив | Нет | Массив ID рекламных сетей для фильтрации (из /api/filters/advertising-networks). |
| browsers | Массив | Нет | Массив названий браузеров для фильтрации. |
| browser_ids | Массив | Нет | Массив ID браузеров для фильтрации (из /api/filters/browsers). |
| operating_systems | Массив | Нет | Массив значений операционных систем (например, ["windows", "macos", "android"]). |
| devices | Массив | Нет | Массив типов устройств для фильтрации (например, ["desktop", "mobile"]). |
| date_from | Строка | Нет | Начальная дата для фильтрации в формате YYYY-MM-DD. |
| date_to | Строка | Нет | Конечная дата для фильтрации в формате YYYY-MM-DD. |
| sort_by | Строка | Нет | Поле сортировки: creation, activity, popularity, likes, comments, shares. |
| sort_order | Строка | Нет | Порядок сортировки: asc или desc. По умолчанию: desc. |
| only_adult | Boolean | Нет | Фильтровать только креативы для взрослых. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Object | Массив данных потоков, соответствующих запросу. |
| └ format | Строка | Формат креативов в ответе (push, inpage, facebook, tiktok). |
| └ items | Массив | Массив объектов креативов. |
| └ id | Число | Уникальный идентификатор креатива. |
| └ title | Строка | Заголовок креатива. |
| └ description | Строка | Описание креатива. |
| └ category | Строка | Формат/категория креатива (push, inpage, facebook, tiktok). |
| └ country | Object | Объект с информацией о стране (code, name, iso_code_3). |
| └ code | Строка | ISO 3166-1 alpha-2 код страны (например, "US" для США). |
| └ name | Строка | Название страны на английском. |
| └ iso_code_3 | Строка | ISO 3166-1 alpha-3 код страны (например, "USA" для США). |
| └ file_size | Строка | Форматированный общий размер файла. |
| └ icon_url | Строка | URL иконки креатива. |
| └ landing_url | Строка | URL целевой страницы. |
| └ created_at | Строка | Дата создания креатива (формат Y-m-d). |
| └ advertising_networks | Массив | Массив названий рекламных сетей. |
| └ languages | Массив | Массив ISO кодов языков. |
| └ operating_systems | Массив | Массив значений операционных систем. |
| └ browsers | Массив | Массив названий браузеров. |
| └ devices | Массив | Массив типов устройств. |
| └ main_image_url | Строка | URL основного изображения креатива. |
| └ is_adult | Boolean | Содержит ли креатив контент для взрослых. |
| └ is_active | Boolean | Активен ли креатив в данный момент. |
| └ pagination | Object | Информация о пагинации. |
| └ total | Число | Общее количество креативов, соответствующих фильтрам. |
| └ limit | Число | Примененный лимит. |
| └ offset | Число | Примененное смещение. |
| └ has_more | Boolean | Есть ли ещё записи после текущей страницы. |
| └ returned_count | Число | Количество креативов в текущем ответе. |
| └ filters_applied | Object | Объект с примененными фильтрами. |
| └ timestamp | Строка | Метка времени ответа в формате ISO 8601. |
<?php
function searchInpageCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/inpage');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchInpageCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchInpageCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchInpageCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
Поиск Native креативов
Поиск Native-креативов (MGID/Taboola) с возможностью фильтрации по различным параметрам.
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| limit | Число | Нет | Максимальное количество возвращаемых записей (1-100). По умолчанию: 20. |
| offset | Число | Нет | Смещение для пагинации. По умолчанию: 0. |
| keyword | Строка | Нет | Ключевое слово для поиска в заголовке и описании креатива. |
| countries | Массив | Нет | Массив ISO-2 кодов стран для фильтрации (например, ["US", "GB"]). |
| country_ids | Массив | Нет | Массив ID стран для фильтрации (из /api/filters/countries). |
| languages | Массив | Нет | Массив ISO кодов языков для фильтрации (например, ["EN", "RU"]). |
| lang_ids | Массив | Нет | Массив ID языков для фильтрации (из /api/filters/languages). |
| advertising_networks | Массив | Нет | Массив названий рекламных сетей для фильтрации. |
| network_ids | Массив | Нет | Массив ID рекламных сетей для фильтрации (из /api/filters/advertising-networks). |
| browsers | Массив | Нет | Массив названий браузеров для фильтрации. |
| browser_ids | Массив | Нет | Массив ID браузеров для фильтрации (из /api/filters/browsers). |
| operating_systems | Массив | Нет | Массив значений операционных систем (например, ["windows", "macos", "android"]). |
| devices | Массив | Нет | Массив типов устройств для фильтрации (например, ["desktop", "mobile"]). |
| date_from | Строка | Нет | Начальная дата для фильтрации в формате YYYY-MM-DD. |
| date_to | Строка | Нет | Конечная дата для фильтрации в формате YYYY-MM-DD. |
| sort_by | Строка | Нет | Поле сортировки: creation, activity, popularity, likes, comments, shares. |
| sort_order | Строка | Нет | Порядок сортировки: asc или desc. По умолчанию: desc. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Object | Массив данных потоков, соответствующих запросу. |
| └ format | Строка | Формат креативов в ответе (push, inpage, facebook, tiktok). |
| └ items | Массив | Массив объектов креативов. |
| └ id | Число | Уникальный идентификатор креатива. |
| └ title | Строка | Заголовок креатива. |
| └ description | Строка | Описание креатива. |
| └ category | Строка | Формат/категория креатива (push, inpage, facebook, tiktok). |
| └ country | Object | Объект с информацией о стране (code, name, iso_code_3). |
| └ code | Строка | ISO 3166-1 alpha-2 код страны (например, "US" для США). |
| └ name | Строка | Название страны на английском. |
| └ iso_code_3 | Строка | ISO 3166-1 alpha-3 код страны (например, "USA" для США). |
| └ file_size | Строка | Форматированный общий размер файла. |
| └ icon_url | Строка | URL иконки креатива. |
| └ main_image_url | Строка | URL основного изображения креатива. |
| └ landing_url | Строка | URL целевой страницы. |
| └ created_at | Строка | Дата создания креатива (формат Y-m-d). |
| └ advertising_networks | Массив | Массив названий рекламных сетей. |
| └ languages | Массив | Массив ISO кодов языков. |
| └ operating_systems | Массив | Массив значений операционных систем. |
| └ browsers | Массив | Массив названий браузеров. |
| └ devices | Массив | Массив типов устройств. |
| └ is_adult | Boolean | Содержит ли креатив контент для взрослых. |
| └ is_active | Boolean | Активен ли креатив в данный момент. |
| └ pagination | Object | Информация о пагинации. |
| └ total | Число | Общее количество креативов, соответствующих фильтрам. |
| └ limit | Число | Примененный лимит. |
| └ offset | Число | Примененное смещение. |
| └ has_more | Boolean | Есть ли ещё записи после текущей страницы. |
| └ returned_count | Число | Количество креативов в текущем ответе. |
| └ filters_applied | Object | Объект с примененными фильтрами. |
| └ timestamp | Строка | Метка времени ответа в формате ISO 8601. |
<?php
function searchNativeCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/native');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchNativeCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchNativeCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchNativeCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
Поиск Facebook креативов
Поиск Facebook-креативов с возможностью фильтрации по различным параметрам. При малом количестве результатов API может инициировать живой поиск и вернуть scrapingJob для опроса.
Если scrapingJob.needStartPolling равен true, вызовите тот же endpoint с isPolling=true и job_id для получения новых элементов. Если статус recently_completed или rejected, задание не создаётся и опрос не следует начинать.
Живой поиск запускается только когда в массиве countries указана ровно одна страна.
Живой поиск запускается только при указании непустого ключевого слова.
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| limit | Число | Нет | Максимальное количество возвращаемых записей (1-100). По умолчанию: 20. |
| offset | Число | Нет | Смещение для пагинации. По умолчанию: 0. |
| keyword | Строка | Нет | Ключевое слово для поиска в заголовке и описании креатива. |
| countries | Массив | Нет | Массив ISO-2 кодов стран для фильтрации (например, ["US", "GB"]). |
| country_ids | Массив | Нет | Массив ID стран для фильтрации (из /api/filters/countries). |
| languages | Массив | Нет | Массив ISO кодов языков для фильтрации (например, ["EN", "RU"]). |
| lang_ids | Массив | Нет | Массив ID языков для фильтрации (из /api/filters/languages). |
| date_from | Строка | Нет | Начальная дата для фильтрации в формате YYYY-MM-DD. |
| date_to | Строка | Нет | Конечная дата для фильтрации в формате YYYY-MM-DD. |
| sort_by | Строка | Нет | Поле сортировки: creation, activity, popularity, likes, comments, shares. |
| sort_order | Строка | Нет | Порядок сортировки: asc или desc. По умолчанию: desc. |
| status | Строка | Нет | Фильтр статуса объявления: ALL, ACTIVE, INACTIVE. |
| media_type | Строка | Нет | Фильтр типа медиа: ALL, IMAGE, VIDEO. |
| search_type | Строка | Нет | Тип поиска: keyword_unordered, keyword_exact_phrase. |
| isPolling | Boolean | Нет | Включить опрос для обновлений живого поиска. Используется вместе с job_id. |
| lastId | Число | Нет | ID последнего полученного креатива для инкрементального опроса (необязательно). |
| perPage | Число | Нет | Ожидаемый размер страницы для определения малого количества результатов (12-96). |
| job_id | Строка | Нет | ID задания живого поиска из scrapingJob. Обязателен при isPolling=true. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Object | Массив данных потоков, соответствующих запросу. |
| └ format | Строка | Формат креативов в ответе (push, inpage, facebook, tiktok). |
| └ items | Массив | Массив объектов креативов. |
| └ id | Число | Уникальный идентификатор креатива. |
| └ title | Строка | Заголовок креатива. |
| └ description | Строка | Описание креатива. |
| └ category | Строка | Формат/категория креатива (push, inpage, facebook, tiktok). |
| └ country | Object | Объект с информацией о стране (code, name, iso_code_3). |
| └ code | Строка | ISO 3166-1 alpha-2 код страны (например, "US" для США). |
| └ name | Строка | Название страны на английском. |
| └ iso_code_3 | Строка | ISO 3166-1 alpha-3 код страны (например, "USA" для США). |
| └ file_size | Строка | Форматированный общий размер файла. |
| └ icon_url | Строка | URL иконки креатива. |
| └ landing_url | Строка | URL целевой страницы. |
| └ created_at | Строка | Дата создания креатива (формат Y-m-d). |
| └ advertising_networks | Массив | Массив названий рекламных сетей. |
| └ languages | Массив | Массив ISO кодов языков. |
| └ operating_systems | Массив | Массив значений операционных систем. |
| └ browsers | Массив | Массив названий браузеров. |
| └ devices | Массив | Массив типов устройств. |
| └ main_image_url | Строка | URL основного изображения креатива. |
| └ has_video | Boolean | Содержит ли креатив видео. |
| └ video_url | Строка | URL видео (если has_video равен true). |
| └ video_duration | Число | Длительность видео в секундах (если применимо). |
| └ social_likes | Число | Количество лайков (для социальных креативов). |
| └ social_comments | Число | Количество комментариев (для социальных креативов). |
| └ social_shares | Число | Количество репостов (для социальных креативов). |
| └ is_adult | Boolean | Содержит ли креатив контент для взрослых. |
| └ is_active | Boolean | Активен ли креатив в данный момент. |
| └ pagination | Object | Информация о пагинации. |
| └ total | Число | Общее количество креативов, соответствующих фильтрам. |
| └ limit | Число | Примененный лимит. |
| └ offset | Число | Примененное смещение. |
| └ has_more | Boolean | Есть ли ещё записи после текущей страницы. |
| └ returned_count | Число | Количество креативов в текущем ответе. |
| └ filters_applied | Object | Объект с примененными фильтрами. |
| └ scrapingJob | Object | Объект задания живого поиска (присутствует, когда живой поиск запущен или активен). |
| └ type | Строка | Идентификатор типа живого поиска (например, facebook_search). |
| └ status | Строка | Статус задания: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Должен ли клиент начать опрос для обновлений. |
| └ needStopPolling | Boolean | Должен ли клиент прекратить опрос. |
| └ job_id | Строка | Идентификатор задания для опроса (отсутствует при статусе recently_completed или rejected). |
| └ polling_interval_seconds | Число | Рекомендуемый интервал опроса в секундах. |
| └ estimatedDuration | Число | Ожидаемая продолжительность в секундах (0 при completed или recently_completed). |
| └ message | Строка | Дополнительное сообщение о статусе от сервера или парсера. |
| └ retry_after_seconds | Число | Время ожидания перед повторной попыткой при recently_completed/rejected (если указано). |
| └ error | Строка | Детали ошибки (присутствует при статусе failed или error). |
| └ timestamp | Строка | Метка времени ответа в формате ISO 8601. |
<?php
function searchFacebookCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/facebook');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: Social filters (status/media_type/search_type)
$paramsWithSocialFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
'media_type' => 'VIDEO',
'search_type' => 'keyword_unordered',
];
$result = searchFacebookCreatives($paramsWithSocialFilters);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
Поиск TikTok креативов
Поиск TikTok-креативов с возможностью фильтрации по различным параметрам. При малом количестве результатов API может инициировать живой поиск и вернуть scrapingJob для опроса.
Если scrapingJob.needStartPolling равен true, вызовите тот же endpoint с isPolling=true и job_id для получения новых элементов. Если статус recently_completed или rejected, задание не создаётся и опрос не следует начинать.
Живой поиск запускается только когда в массиве countries указана ровно одна страна.
Живой поиск запускается только при указании непустого ключевого слова.
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| limit | Число | Нет | Максимальное количество возвращаемых записей (1-100). По умолчанию: 20. |
| offset | Число | Нет | Смещение для пагинации. По умолчанию: 0. |
| keyword | Строка | Нет | Ключевое слово для поиска в заголовке и описании креатива. |
| countries | Массив | Нет | Массив ISO-2 кодов стран для фильтрации (например, ["US", "GB"]). |
| country_ids | Массив | Нет | Массив ID стран для фильтрации (из /api/filters/countries). |
| languages | Массив | Нет | Массив ISO кодов языков для фильтрации (например, ["EN", "RU"]). |
| lang_ids | Массив | Нет | Массив ID языков для фильтрации (из /api/filters/languages). |
| date_from | Строка | Нет | Начальная дата для фильтрации в формате YYYY-MM-DD. |
| date_to | Строка | Нет | Конечная дата для фильтрации в формате YYYY-MM-DD. |
| sort_by | Строка | Нет | Поле сортировки: creation, activity, popularity, likes, comments, shares. |
| sort_order | Строка | Нет | Порядок сортировки: asc или desc. По умолчанию: desc. |
| video_duration | Строка | Нет | Фильтр длительности видео TikTok: ALL, SHORT, MEDIUM, LONG. |
| isPolling | Boolean | Нет | Включить опрос для обновлений живого поиска. Используется вместе с job_id. |
| lastId | Число | Нет | ID последнего полученного креатива для инкрементального опроса (необязательно). |
| perPage | Число | Нет | Ожидаемый размер страницы для определения малого количества результатов (12-96). |
| job_id | Строка | Нет | ID задания живого поиска из scrapingJob. Обязателен при isPolling=true. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data | Object | Массив данных потоков, соответствующих запросу. |
| └ format | Строка | Формат креативов в ответе (push, inpage, facebook, tiktok). |
| └ items | Массив | Массив объектов креативов. |
| └ id | Число | Уникальный идентификатор креатива. |
| └ title | Строка | Заголовок креатива. |
| └ description | Строка | Описание креатива. |
| └ category | Строка | Формат/категория креатива (push, inpage, facebook, tiktok). |
| └ country | Object | Объект с информацией о стране (code, name, iso_code_3). |
| └ code | Строка | ISO 3166-1 alpha-2 код страны (например, "US" для США). |
| └ name | Строка | Название страны на английском. |
| └ iso_code_3 | Строка | ISO 3166-1 alpha-3 код страны (например, "USA" для США). |
| └ file_size | Строка | Форматированный общий размер файла. |
| └ icon_url | Строка | URL иконки креатива. |
| └ landing_url | Строка | URL целевой страницы. |
| └ created_at | Строка | Дата создания креатива (формат Y-m-d). |
| └ advertising_networks | Массив | Массив названий рекламных сетей. |
| └ languages | Массив | Массив ISO кодов языков. |
| └ operating_systems | Массив | Массив значений операционных систем. |
| └ browsers | Массив | Массив названий браузеров. |
| └ devices | Массив | Массив типов устройств. |
| └ main_image_url | Строка | URL основного изображения креатива. |
| └ has_video | Boolean | Содержит ли креатив видео. |
| └ video_url | Строка | URL видео (если has_video равен true). |
| └ video_duration | Число | Длительность видео в секундах (если применимо). |
| └ social_likes | Число | Количество лайков (для социальных креативов). |
| └ social_comments | Число | Количество комментариев (для социальных креативов). |
| └ social_shares | Число | Количество репостов (для социальных креативов). |
| └ is_adult | Boolean | Содержит ли креатив контент для взрослых. |
| └ is_active | Boolean | Активен ли креатив в данный момент. |
| └ pagination | Object | Информация о пагинации. |
| └ total | Число | Общее количество креативов, соответствующих фильтрам. |
| └ limit | Число | Примененный лимит. |
| └ offset | Число | Примененное смещение. |
| └ has_more | Boolean | Есть ли ещё записи после текущей страницы. |
| └ returned_count | Число | Количество креативов в текущем ответе. |
| └ filters_applied | Object | Объект с примененными фильтрами. |
| └ scrapingJob | Object | Объект задания живого поиска (присутствует, когда живой поиск запущен или активен). |
| └ type | Строка | Идентификатор типа живого поиска (например, facebook_search). |
| └ status | Строка | Статус задания: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Должен ли клиент начать опрос для обновлений. |
| └ needStopPolling | Boolean | Должен ли клиент прекратить опрос. |
| └ job_id | Строка | Идентификатор задания для опроса (отсутствует при статусе recently_completed или rejected). |
| └ polling_interval_seconds | Число | Рекомендуемый интервал опроса в секундах. |
| └ estimatedDuration | Число | Ожидаемая продолжительность в секундах (0 при completed или recently_completed). |
| └ message | Строка | Дополнительное сообщение о статусе от сервера или парсера. |
| └ retry_after_seconds | Число | Время ожидания перед повторной попыткой при recently_completed/rejected (если указано). |
| └ error | Строка | Детали ошибки (присутствует при статусе failed или error). |
| └ timestamp | Строка | Метка времени ответа в формате ISO 8601. |
<?php
function searchTikTokCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/tiktok');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: TikTok filter (video_duration)
$paramsWithVideoDuration = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'video_duration' => 'SHORT',
];
$result = searchTikTokCreatives($paramsWithVideoDuration);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
Перевод средств
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| amount | Число | Да | Сумма перевода (минимум 10 USD). |
| Строка | Да | Email получателя перевода. Должен быть действительным. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| transaction_number | Строка | Уникальный номер транзакции, связанный с переводом. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/accounts/transfer_funds');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = [
'api_key' => 'YOUR_API_KEY',
'amount' => 100,
'email' => '[email protected]'
];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Получение баланса аккаунта
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| balance | Число | Текущий баланс аккаунта пользователя. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/accounts/balance');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = [
'api_key' => 'YOUR_API_KEY'
];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Получение списка белых страниц
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| search | Строка | Нет | Строка для поиска по названию белой страницы. |
| date_from | Строка | Нет | Начальная дата создания для фильтрации (формат: Y-m-d). (YYYY-MM-DD) |
| date_to | Строка | Нет | Конечная дата создания для фильтрации (формат: Y-m-d). (YYYY-MM-DD) |
| limit | Число | Нет | Количество записей на странице (от 1 до 100). По умолчанию: 10. |
| page | Число | Нет | Номер страницы, начиная с 1. По умолчанию: 1. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data.items | Массив | Массив белых страниц пользователя. |
| data.items[].id | Число | Уникальный идентификатор белой страницы. |
| data.items[].name | Строка | Название белой страницы. |
| data.items[].status | Строка | Статус генерации: generating, pending, in_progress, completed, failed, error. |
| data.items[].status_label | Строка | Локализованное описание статуса. |
| data.items[].generator_label | Строка | Название AI генератора. |
| data.items[].vertical_label | Строка | Выбранная вертикаль (тематика). |
| data.items[].language_label | Строка | Язык контента сайта. |
| data.items[].theme_label | Строка | Выбранный шаблон/тема. |
| data.items[].amount | Число | Стоимость генерации (например, 5.00) или null. |
| data.items[].can_retry | Boolean | Доступен ли повторный запуск генерации. |
| data.items[].can_download | Boolean | Готов ли zip-архив к скачиванию. |
| data.items[].error_message | Строка | Локализованная причина ошибки, если генерация провалилась. |
| data.items[].created_at | Строка | Дата и время создания. |
<?php
function get_white_pages($apiKey)
{
$ch = curl_init('https://spy.house/api/white-pages?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$body = curl_exec($ch);
curl_close($ch);
return json_decode($body, TRUE);
}
$result = get_white_pages('YOUR_API_KEY');
print_r($result);
Получение настроек генератора
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data.generators | Массив | Список доступных AI-генераторов для параметра id_generator. |
| data.generators[].id | Число | Числовой идентификатор опции. |
| data.generators[].slug | Строка | Слаг/значение опции. |
| data.generators[].label | Строка | Локализованное имя опции. |
| data.verticals | Массив | Список доступных тематик/вертикалей для параметра id_vertical. |
| data.verticals[].id | Число | Числовой идентификатор опции. |
| data.verticals[].slug | Строка | Слаг/значение опции. |
| data.verticals[].label | Строка | Локализованное имя опции. |
| data.languages | Массив | Список доступных языков для параметра id_language. |
| data.languages[].id | Число | Числовой идентификатор опции. |
| data.languages[].slug | Строка | Слаг/значение опции. |
| data.languages[].label | Строка | Локализованное имя опции. |
| data.themes | Object | Карта тем/шаблонов, сгруппированных по ключу id_generator. |
<?php
function get_generator_options($apiKey)
{
$ch = curl_init('https://spy.house/api/white-pages/options?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$body = curl_exec($chcurl_close($ch);
return json_decode($body, TRUE);
}
$result = get_generator_options('YOUR_API_KEY');
print_r($result);
Генерация белой страницы
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| name | Строка | Да | Название белой страницы (для удобства, макс 64 символа). |
| id_generator | Число | Да | ID генератора из эндпоинта настроек. |
| id_vertical | Число | Да | ID вертикали из эндпоинта настроек. |
| id_language | Число | Да | ID языка из эндпоинта настроек. |
| theme | Строка | Да | Слаг темы (строка), соответствующий выбранному генератору. |
| wp_domain | Строка | Нет | Опциональное доменное имя сайта. |
| wp_company | Строка | Нет | Опциональное название компании для копирайтов/политик сайта. |
| wp_phone | Строка | Нет | Опциональный контактный телефон. |
| wp_email | Строка | Нет | Опциональный контактный email. |
| wp_keywords | Строка | Нет | Опциональные ключевые слова через запятую для генерации контента. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data.id | Число | Уникальный идентификатор белой страницы. |
| data.name | Строка | Название белой страницы. |
| data.status | Строка | Статус генерации: generating, pending, in_progress, completed, failed, error. |
| data.status_label | Строка | Локализованное описание статуса. |
<?php
function generate_white_page($apiKey, $params)
{
$ch = curl_init('https://spy.house/api/white-pages/generate?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$body = curl_exec($ch);
curl_close($ch);
return json_decode($body, TRUE);
}
$params = [
'name' => 'My First WhitePage',
'id_generator' => 1,
'id_vertical' => 2,
'id_language' => 1,
'theme' => 'travel'
];
$result = generate_white_page('YOUR_API_KEY', $params);
print_r($result);
Получение статуса генерации
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data.id | Число | Уникальный идентификатор белой страницы. |
| data.status | Строка | Статус генерации: generating, pending, in_progress, completed, failed, error. |
| data.status_label | Строка | Локализованное описание статуса. |
| data.can_retry | Boolean | Доступен ли повторный запуск генерации. |
| data.can_download | Boolean | Готов ли zip-архив к скачиванию. |
| data.error_message | Строка | Локализованная причина ошибки, если генерация провалилась. |
<?php
function get_white_page_status($apiKey, $id)
{
$ch = curl_init('https://spy.house/api/white-pages/' . $id . '/status?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$body = curl_exec($ch);
curl_close($ch);
return json_decode($body, TRUE);
}
$result = get_white_page_status('YOUR_API_KEY'123);
print_r($result);
Получение ссылки на скачивание
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data.download_url | Строка | Временный авторизованный URL для скачивания zip-файла. |
<?php
function get_white_page_download_url($apiKey$id)
{
$ch = curl_init('https://spy.house/api/white-pages/' . $id . '/download?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$body = curl_exec($ch);
curl_close($ch);
return json_decode($body, TRUE);
}
$result = get_white_page_download_url('YOUR_API_KEY', 123);
print_r($result);
Скачивание архива белой страницы
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
Returns the zip archive payload as binary stream with `Content-Type: application/zip` and `Content-Disposition: attachment` headers.
<?php
function download_white_page_file($apiKey, $id, $saveToPath)
{
$fp = fopen($saveToPath, 'w+');
$ch = curl_init('https://spy.house/api/white-pages/' . $id . '/file?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_exec($chcurl_close($ch);
fclose($fp);
}
download_white_page_file('YOUR_API_KEY', 123, '/path/to/save/archive.zip');
Удаление белой страницы
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data.deleted | Boolean | True в случае успешного удаления. |
<?php
function delete_white_page($apiKey, $id)
{
$ch = curl_init('https://spy.house/api/white-pages/' . $id . '?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$body = curl_exec($ch);
curl_close($ch);
return json_decode($body, TRUE);
}
$result = delete_white_page('YOUR_API_KEY', 123);
print_r($result);
Повторный запуск генерации
URL для запроса
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
| api_key | Строка | Да | Уникальный API ключ для аутентификации запроса. |
| Параметр | Тип данных | Описание |
|---|---|---|
| status | Строка | Поле, указывающее на успешное выполнение запроса ("success") или ошибку ("error"). |
| msg | Строка | Сообщение об ошибке или дополнительная информация о запросе. |
| code | Число | Код ответа, например, 200 для успешного запроса. |
| data.id | Число | Уникальный идентификатор белой страницы. |
| data.status | Строка | Статус генерации: generating, pending, in_progress, completed, failed, error. |
| data.generating_label | Строка | Локализованная подпись нового статуса генерации. |
<?php
function retry_white_page($apiKey, $id)
{
$ch = curl_init('https://spy.house/api/white-pages/' . $id . '/retry?api_key=' . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$body = curl_exec($ch);
curl_close($ch);
return json_decode($body, TRUE);
}
$result = retry_white_page('YOUR_API_KEY', 123);
print_r($result);