FR FR
Connexion

API

Pour accéder à notre API, contactez notre service d'assistance via Telegram au lien: @Spy_House

Récupérer la liste des langues

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Tableau Tableau des langues disponibles.
└ lang_id Nombre Identifiant unique de la langue.
└ name Chaîne Nom de la langue en anglais.
└ iso_code Chaîne Code ISO de la langue (ex., "EN" pour anglais, "FR" pour français).
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/filters/languages');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Récupérer la liste des pays

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Tableau Tableau des pays disponibles.
└ country_id Nombre Identifiant unique du pays.
└ name Chaîne Nom du pays en anglais.
└ iso_code Chaîne Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France).
└ iso_code_3 Chaîne Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France).
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/filters/countries');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Récupérer la liste des navigateurs

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Tableau Tableau des navigateurs disponibles.
└ browser_id Nombre Identifiant unique du navigateur.
└ name Chaîne Nom du navigateur.
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/filters/browsers');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Récupérer la liste des appareils

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Tableau Tableau des types d'appareils disponibles.
└ device_id Nombre Identifiant unique du type d'appareil.
└ name Chaîne Nom d'affichage du type d'appareil.
└ value Chaîne Valeur du type d'appareil pour les requêtes API.
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/filters/devices');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Récupérer la liste des systèmes d'exploitation

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Tableau Tableau des systèmes d'exploitation disponibles.
└ os_id Nombre Identifiant unique du système d'exploitation.
└ name Chaîne Nom d'affichage du système d'exploitation.
└ value Chaîne Valeur du système d'exploitation pour les requêtes API.
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/filters/operating_systems');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Récupérer la liste des réseaux publicitaires

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Tableau Tableau des réseaux publicitaires disponibles.
└ network_id Nombre Identifiant unique du réseau publicitaire.
└ name Chaîne Nom d'affichage du réseau publicitaire.
└ value Chaîne Valeur du réseau publicitaire pour les requêtes API.
└ logo Chaîne URL du logo du réseau publicitaire.
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/filters/advertising_networks');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Rechercher des créatifs Push

Recherche de créatifs push avec différents filtres.

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
limit Nombre Non Nombre d'éléments par page (10-100). Par défaut: 10.
offset Nombre Non Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0.
keyword Chaîne Non Mot-clé de recherche pour filtrer les créatifs par titre ou description.
countries Tableau Non Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]).
country_ids Tableau Non Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries.
languages Tableau Non Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]).
lang_ids Tableau Non Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages.
advertising_networks Tableau Non Tableau de noms de réseaux publicitaires.
network_ids Tableau Non Tableau d'IDs de réseaux depuis l'endpoint /api/filters/advertising-networks. Prioritaire sur advertising_networks.
browsers Tableau Non Tableau de noms de navigateurs.
browser_ids Tableau Non Tableau d'IDs de navigateurs depuis l'endpoint /api/filters/browsers. Prioritaire sur browsers.
operating_systems Tableau Non Tableau de valeurs de systèmes d'exploitation (ex., ["windows", "macos", "android"]).
devices Tableau Non Tableau de types d'appareils (ex., ["desktop", "mobile", "tablet"]).
date_from Chaîne Non Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01").
date_to Chaîne Non Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31").
sort_by Chaîne Non Champ de tri: creation, activity, popularity.
sort_order Chaîne Non Direction du tri: asc ou desc.
only_adult Boolean Non Filtrer uniquement le contenu adulte. Booléen (true/false).
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Object Tableau de données de flux correspondant à la requête.
└ format Chaîne Format du créatif (push, inpage, facebook, tiktok).
└ items Tableau Tableau d'objets créatifs.
  └ id Nombre Identifiant unique du créatif.
  └ title Chaîne Texte du titre du créatif.
  └ description Chaîne Texte de description du créatif.
  └ category Chaîne Format/catégorie du créatif (push, inpage, facebook, tiktok).
  └ country Object Objet d'informations sur le pays (code, name, iso_code_3).
    └ code Chaîne Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France).
    └ name Chaîne Nom du pays en anglais.
    └ iso_code_3 Chaîne Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France).
  └ file_size Chaîne Taille totale du fichier formatée.
  └ icon_url Chaîne URL de l'image d'icône du créatif.
  └ landing_url Chaîne URL de la page de destination.
  └ created_at Chaîne Date de création du créatif (format Y-m-d).
  └ advertising_networks Tableau Tableau de noms de réseaux publicitaires.
  └ languages Tableau Tableau de codes ISO de langues.
  └ operating_systems Tableau Tableau de valeurs de systèmes d'exploitation.
  └ browsers Tableau Tableau de noms de navigateurs.
  └ devices Tableau Tableau de types d'appareils.
  └ main_image_url Chaîne URL de l'image principale du créatif.
  └ is_adult Boolean Si le créatif contient du contenu adulte.
  └ is_active Boolean Si le créatif est actuellement actif.
└ pagination Object Objet d'informations de pagination.
  └ total Nombre Nombre total de créatifs correspondant aux filtres.
  └ limit Nombre Nombre d'éléments par page.
  └ offset Nombre Décalage actuel.
  └ has_more Boolean S'il y a plus d'éléments disponibles.
  └ returned_count Nombre Nombre d'éléments retournés dans cette réponse.
└ filters_applied Object Objet contenant les filtres appliqués.
└ timestamp Chaîne Horodatage de la réponse au format ISO 8601.
<?php

function searchPushCreatives($params = [])
{
    
$ch curl_init('https://spy.house/api/search/push');

    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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' => [123],              // IDs from /api/filters/countries
    
'lang_ids' => [1],                      // IDs from /api/filters/languages
    
'network_ids' => [510],              // IDs from /api/filters/advertising-networks
    
'browser_ids' => [12],               // 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

Rechercher des créatifs Inpage

Recherche de créatifs inpage avec différents filtres.

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
limit Nombre Non Nombre d'éléments par page (10-100). Par défaut: 10.
offset Nombre Non Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0.
keyword Chaîne Non Mot-clé de recherche pour filtrer les créatifs par titre ou description.
countries Tableau Non Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]).
country_ids Tableau Non Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries.
languages Tableau Non Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]).
lang_ids Tableau Non Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages.
advertising_networks Tableau Non Tableau de noms de réseaux publicitaires.
network_ids Tableau Non Tableau d'IDs de réseaux depuis l'endpoint /api/filters/advertising-networks. Prioritaire sur advertising_networks.
browsers Tableau Non Tableau de noms de navigateurs.
browser_ids Tableau Non Tableau d'IDs de navigateurs depuis l'endpoint /api/filters/browsers. Prioritaire sur browsers.
operating_systems Tableau Non Tableau de valeurs de systèmes d'exploitation (ex., ["windows", "macos", "android"]).
devices Tableau Non Tableau de types d'appareils (ex., ["desktop", "mobile", "tablet"]).
date_from Chaîne Non Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01").
date_to Chaîne Non Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31").
sort_by Chaîne Non Champ de tri: creation, activity, popularity.
sort_order Chaîne Non Direction du tri: asc ou desc.
only_adult Boolean Non Filtrer uniquement le contenu adulte. Booléen (true/false).
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Object Tableau de données de flux correspondant à la requête.
└ format Chaîne Format du créatif (push, inpage, facebook, tiktok).
└ items Tableau Tableau d'objets créatifs.
  └ id Nombre Identifiant unique du créatif.
  └ title Chaîne Texte du titre du créatif.
  └ description Chaîne Texte de description du créatif.
  └ category Chaîne Format/catégorie du créatif (push, inpage, facebook, tiktok).
  └ country Object Objet d'informations sur le pays (code, name, iso_code_3).
    └ code Chaîne Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France).
    └ name Chaîne Nom du pays en anglais.
    └ iso_code_3 Chaîne Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France).
  └ file_size Chaîne Taille totale du fichier formatée.
  └ icon_url Chaîne URL de l'image d'icône du créatif.
  └ landing_url Chaîne URL de la page de destination.
  └ created_at Chaîne Date de création du créatif (format Y-m-d).
  └ advertising_networks Tableau Tableau de noms de réseaux publicitaires.
  └ languages Tableau Tableau de codes ISO de langues.
  └ operating_systems Tableau Tableau de valeurs de systèmes d'exploitation.
  └ browsers Tableau Tableau de noms de navigateurs.
  └ devices Tableau Tableau de types d'appareils.
  └ main_image_url Chaîne URL de l'image principale du créatif.
  └ is_adult Boolean Si le créatif contient du contenu adulte.
  └ is_active Boolean Si le créatif est actuellement actif.
└ pagination Object Objet d'informations de pagination.
  └ total Nombre Nombre total de créatifs correspondant aux filtres.
  └ limit Nombre Nombre d'éléments par page.
  └ offset Nombre Décalage actuel.
  └ has_more Boolean S'il y a plus d'éléments disponibles.
  └ returned_count Nombre Nombre d'éléments retournés dans cette réponse.
└ filters_applied Object Objet contenant les filtres appliqués.
└ timestamp Chaîne Horodatage de la réponse au format ISO 8601.
<?php

function searchInpageCreatives($params = [])
{
    
$ch curl_init('https://spy.house/api/search/inpage');

    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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' => [123],              // IDs from /api/filters/countries
    
'lang_ids' => [1],                      // IDs from /api/filters/languages
    
'network_ids' => [510],              // IDs from /api/filters/advertising-networks
    
'browser_ids' => [12],               // 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

Rechercher des créatifs Native

Recherche de créatifs Native (MGID/Taboola) avec différents filtres.

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
limit Nombre Non Nombre d'éléments par page (10-100). Par défaut: 10.
offset Nombre Non Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0.
keyword Chaîne Non Mot-clé de recherche pour filtrer les créatifs par titre ou description.
countries Tableau Non Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]).
country_ids Tableau Non Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries.
languages Tableau Non Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]).
lang_ids Tableau Non Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages.
advertising_networks Tableau Non Tableau de noms de réseaux publicitaires.
network_ids Tableau Non Tableau d'IDs de réseaux depuis l'endpoint /api/filters/advertising-networks. Prioritaire sur advertising_networks.
browsers Tableau Non Tableau de noms de navigateurs.
browser_ids Tableau Non Tableau d'IDs de navigateurs depuis l'endpoint /api/filters/browsers. Prioritaire sur browsers.
operating_systems Tableau Non Tableau de valeurs de systèmes d'exploitation (ex., ["windows", "macos", "android"]).
devices Tableau Non Tableau de types d'appareils (ex., ["desktop", "mobile", "tablet"]).
date_from Chaîne Non Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01").
date_to Chaîne Non Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31").
sort_by Chaîne Non Champ de tri: creation, activity, popularity.
sort_order Chaîne Non Direction du tri: asc ou desc.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Object Tableau de données de flux correspondant à la requête.
└ format Chaîne Format du créatif (push, inpage, facebook, tiktok).
└ items Tableau Tableau d'objets créatifs.
  └ id Nombre Identifiant unique du créatif.
  └ title Chaîne Texte du titre du créatif.
  └ description Chaîne Texte de description du créatif.
  └ category Chaîne Format/catégorie du créatif (push, inpage, facebook, tiktok).
  └ country Object Objet d'informations sur le pays (code, name, iso_code_3).
    └ code Chaîne Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France).
    └ name Chaîne Nom du pays en anglais.
    └ iso_code_3 Chaîne Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France).
  └ file_size Chaîne Taille totale du fichier formatée.
  └ icon_url Chaîne URL de l'image d'icône du créatif.
  └ main_image_url Chaîne URL de l'image principale du créatif.
  └ landing_url Chaîne URL de la page de destination.
  └ created_at Chaîne Date de création du créatif (format Y-m-d).
  └ advertising_networks Tableau Tableau de noms de réseaux publicitaires.
  └ languages Tableau Tableau de codes ISO de langues.
  └ operating_systems Tableau Tableau de valeurs de systèmes d'exploitation.
  └ browsers Tableau Tableau de noms de navigateurs.
  └ devices Tableau Tableau de types d'appareils.
  └ is_adult Boolean Si le créatif contient du contenu adulte.
  └ is_active Boolean Si le créatif est actuellement actif.
└ pagination Object Objet d'informations de pagination.
  └ total Nombre Nombre total de créatifs correspondant aux filtres.
  └ limit Nombre Nombre d'éléments par page.
  └ offset Nombre Décalage actuel.
  └ has_more Boolean S'il y a plus d'éléments disponibles.
  └ returned_count Nombre Nombre d'éléments retournés dans cette réponse.
└ filters_applied Object Objet contenant les filtres appliqués.
└ timestamp Chaîne Horodatage de la réponse au format ISO 8601.
<?php

function searchNativeCreatives($params = [])
{
    
$ch curl_init('https://spy.house/api/search/native');

    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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' => [123],              // IDs from /api/filters/countries
    
'lang_ids' => [1],                      // IDs from /api/filters/languages
    
'network_ids' => [510],              // IDs from /api/filters/advertising-networks
    
'browser_ids' => [12],               // 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

Rechercher des créatifs Facebook

Recherche de créatifs Facebook avec différents filtres. Lorsque les résultats sont peu nombreux, l'API peut démarrer une recherche en direct et renvoyer un scrapingJob pour le polling.

Si scrapingJob.needStartPolling est true, appelez le même endpoint avec isPolling=true et job_id pour recevoir de nouveaux éléments. Si le statut est recently_completed ou rejected, aucun job n'est créé et le polling ne doit pas être démarré.

La recherche en direct ne démarre que lorsqu'exactement un pays est spécifié dans le tableau countries.

La recherche en direct ne démarre que lorsqu'un mot-clé non vide est fourni.

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
limit Nombre Non Nombre d'éléments par page (10-100). Par défaut: 10.
offset Nombre Non Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0.
keyword Chaîne Non Mot-clé de recherche pour filtrer les créatifs par titre ou description.
countries Tableau Non Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]).
country_ids Tableau Non Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries.
languages Tableau Non Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]).
lang_ids Tableau Non Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages.
date_from Chaîne Non Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01").
date_to Chaîne Non Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31").
sort_by Chaîne Non Champ de tri: creation, activity, popularity.
sort_order Chaîne Non Direction du tri: asc ou desc.
status Chaîne Non Filtre de statut publicitaire: ALL, ACTIVE, INACTIVE.
media_type Chaîne Non Filtre de type de média: ALL, IMAGE, VIDEO.
search_type Chaîne Non Type de recherche: keyword_unordered, keyword_exact_phrase.
isPolling Boolean Non Activer le polling pour les mises à jour de recherche en direct. À utiliser avec job_id.
lastId Nombre Non Dernier ID de créatif reçu pour le polling incrémentiel (optionnel).
perPage Nombre Non Taille de page attendue pour la détection de résultats faibles (12-96).
job_id Chaîne Non ID de job de recherche en direct depuis scrapingJob. Requis quand isPolling=true.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Object Tableau de données de flux correspondant à la requête.
└ format Chaîne Format du créatif (push, inpage, facebook, tiktok).
└ items Tableau Tableau d'objets créatifs.
  └ id Nombre Identifiant unique du créatif.
  └ title Chaîne Texte du titre du créatif.
  └ description Chaîne Texte de description du créatif.
  └ category Chaîne Format/catégorie du créatif (push, inpage, facebook, tiktok).
  └ country Object Objet d'informations sur le pays (code, name, iso_code_3).
    └ code Chaîne Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France).
    └ name Chaîne Nom du pays en anglais.
    └ iso_code_3 Chaîne Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France).
  └ file_size Chaîne Taille totale du fichier formatée.
  └ icon_url Chaîne URL de l'image d'icône du créatif.
  └ landing_url Chaîne URL de la page de destination.
  └ created_at Chaîne Date de création du créatif (format Y-m-d).
  └ advertising_networks Tableau Tableau de noms de réseaux publicitaires.
  └ languages Tableau Tableau de codes ISO de langues.
  └ operating_systems Tableau Tableau de valeurs de systèmes d'exploitation.
  └ browsers Tableau Tableau de noms de navigateurs.
  └ devices Tableau Tableau de types d'appareils.
  └ main_image_url Chaîne URL de l'image principale du créatif.
  └ has_video Boolean Si le créatif contient une vidéo.
  └ video_url Chaîne URL de la vidéo (si has_video est true).
  └ video_duration Nombre Durée de la vidéo en secondes (si applicable).
  └ social_likes Nombre Nombre de likes (pour les publicités sociales).
  └ social_comments Nombre Nombre de commentaires (pour les publicités sociales).
  └ social_shares Nombre Nombre de partages (pour les publicités sociales).
  └ is_adult Boolean Si le créatif contient du contenu adulte.
  └ is_active Boolean Si le créatif est actuellement actif.
└ pagination Object Objet d'informations de pagination.
  └ total Nombre Nombre total de créatifs correspondant aux filtres.
  └ limit Nombre Nombre d'éléments par page.
  └ offset Nombre Décalage actuel.
  └ has_more Boolean S'il y a plus d'éléments disponibles.
  └ returned_count Nombre Nombre d'éléments retournés dans cette réponse.
└ filters_applied Object Objet contenant les filtres appliqués.
└ scrapingJob Object Objet de job de recherche en direct (présent quand la recherche en direct est démarrée ou active).
  └ type Chaîne Identifiant de type de recherche en direct (ex., facebook_search).
  └ status Chaîne Statut du job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected.
  └ needStartPolling Boolean Si le client doit commencer le polling pour les mises à jour.
  └ needStopPolling Boolean Si le client doit arrêter le polling.
  └ job_id Chaîne Identifiant de job pour le polling (absent quand le statut est recently_completed ou rejected).
  └ polling_interval_seconds Nombre Intervalle de polling recommandé en secondes.
  └ estimatedDuration Nombre Durée estimée en secondes (0 quand completed ou recently_completed).
  └ message Chaîne Message de statut supplémentaire du serveur ou du parser.
  └ retry_after_seconds Nombre Combien attendre avant de réessayer quand recently_completed/rejected (si fourni).
  └ error Chaîne Détails de l'erreur (présent quand le statut est failed ou error).
└ timestamp Chaîne Horodatage de la réponse au format ISO 8601.
<?php

function searchFacebookCreatives($params = [])
{
    
$ch curl_init('https://spy.house/api/search/facebook');

    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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.

Rechercher des créatifs TikTok

Recherche de créatifs TikTok avec différents filtres. Lorsque les résultats sont peu nombreux, l'API peut démarrer une recherche en direct et renvoyer un scrapingJob pour le polling.

Si scrapingJob.needStartPolling est true, appelez le même endpoint avec isPolling=true et job_id pour recevoir de nouveaux éléments. Si le statut est recently_completed ou rejected, aucun job n'est créé et le polling ne doit pas être démarré.

La recherche en direct ne démarre que lorsqu'exactement un pays est spécifié dans le tableau countries.

La recherche en direct ne démarre que lorsqu'un mot-clé non vide est fourni.

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
limit Nombre Non Nombre d'éléments par page (10-100). Par défaut: 10.
offset Nombre Non Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0.
keyword Chaîne Non Mot-clé de recherche pour filtrer les créatifs par titre ou description.
countries Tableau Non Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]).
country_ids Tableau Non Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries.
languages Tableau Non Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]).
lang_ids Tableau Non Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages.
date_from Chaîne Non Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01").
date_to Chaîne Non Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31").
sort_by Chaîne Non Champ de tri: creation, activity, popularity.
sort_order Chaîne Non Direction du tri: asc ou desc.
video_duration Chaîne Non Filtre de durée vidéo TikTok: ALL, SHORT, MEDIUM, LONG.
isPolling Boolean Non Activer le polling pour les mises à jour de recherche en direct. À utiliser avec job_id.
lastId Nombre Non Dernier ID de créatif reçu pour le polling incrémentiel (optionnel).
perPage Nombre Non Taille de page attendue pour la détection de résultats faibles (12-96).
job_id Chaîne Non ID de job de recherche en direct depuis scrapingJob. Requis quand isPolling=true.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data Object Tableau de données de flux correspondant à la requête.
└ format Chaîne Format du créatif (push, inpage, facebook, tiktok).
└ items Tableau Tableau d'objets créatifs.
  └ id Nombre Identifiant unique du créatif.
  └ title Chaîne Texte du titre du créatif.
  └ description Chaîne Texte de description du créatif.
  └ category Chaîne Format/catégorie du créatif (push, inpage, facebook, tiktok).
  └ country Object Objet d'informations sur le pays (code, name, iso_code_3).
    └ code Chaîne Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France).
    └ name Chaîne Nom du pays en anglais.
    └ iso_code_3 Chaîne Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France).
  └ file_size Chaîne Taille totale du fichier formatée.
  └ icon_url Chaîne URL de l'image d'icône du créatif.
  └ landing_url Chaîne URL de la page de destination.
  └ created_at Chaîne Date de création du créatif (format Y-m-d).
  └ advertising_networks Tableau Tableau de noms de réseaux publicitaires.
  └ languages Tableau Tableau de codes ISO de langues.
  └ operating_systems Tableau Tableau de valeurs de systèmes d'exploitation.
  └ browsers Tableau Tableau de noms de navigateurs.
  └ devices Tableau Tableau de types d'appareils.
  └ main_image_url Chaîne URL de l'image principale du créatif.
  └ has_video Boolean Si le créatif contient une vidéo.
  └ video_url Chaîne URL de la vidéo (si has_video est true).
  └ video_duration Nombre Durée de la vidéo en secondes (si applicable).
  └ social_likes Nombre Nombre de likes (pour les publicités sociales).
  └ social_comments Nombre Nombre de commentaires (pour les publicités sociales).
  └ social_shares Nombre Nombre de partages (pour les publicités sociales).
  └ is_adult Boolean Si le créatif contient du contenu adulte.
  └ is_active Boolean Si le créatif est actuellement actif.
└ pagination Object Objet d'informations de pagination.
  └ total Nombre Nombre total de créatifs correspondant aux filtres.
  └ limit Nombre Nombre d'éléments par page.
  └ offset Nombre Décalage actuel.
  └ has_more Boolean S'il y a plus d'éléments disponibles.
  └ returned_count Nombre Nombre d'éléments retournés dans cette réponse.
└ filters_applied Object Objet contenant les filtres appliqués.
└ scrapingJob Object Objet de job de recherche en direct (présent quand la recherche en direct est démarrée ou active).
  └ type Chaîne Identifiant de type de recherche en direct (ex., facebook_search).
  └ status Chaîne Statut du job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected.
  └ needStartPolling Boolean Si le client doit commencer le polling pour les mises à jour.
  └ needStopPolling Boolean Si le client doit arrêter le polling.
  └ job_id Chaîne Identifiant de job pour le polling (absent quand le statut est recently_completed ou rejected).
  └ polling_interval_seconds Nombre Intervalle de polling recommandé en secondes.
  └ estimatedDuration Nombre Durée estimée en secondes (0 quand completed ou recently_completed).
  └ message Chaîne Message de statut supplémentaire du serveur ou du parser.
  └ retry_after_seconds Nombre Combien attendre avant de réessayer quand recently_completed/rejected (si fourni).
  └ error Chaîne Détails de l'erreur (présent quand le statut est failed ou error).
└ timestamp Chaîne Horodatage de la réponse au format ISO 8601.
<?php

function searchTikTokCreatives($params = [])
{
    
$ch curl_init('https://spy.house/api/search/tiktok');

    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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.

Transférer des fonds

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
amount Nombre Oui Montant du transfert (minimum 10 USD).
email Chaîne Oui Email du destinataire du transfert. Doit être valide.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
transaction_number Chaîne Numéro de transaction unique associé au transfert.
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/accounts/transfer_funds');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Récupérer le solde du compte

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
balance Nombre Solde actuel du compte utilisateur.
<?php


    
function api_request($data = [])
    {
        
$ch curl_init('https://spy.house/api/accounts/balance');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }

Retrieving a list of white pages

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
search Chaîne Non String for searching by White Page name.
date_from Chaîne Non Start date for filtering (format: Y-m-d). (YYYY-MM-DD)
date_to Chaîne Non End date for filtering (format: Y-m-d). (YYYY-MM-DD)
limit Nombre Non Number of items per page (1 to 100). Default: 10.
page Nombre Non Page number, starting from 1. Default: 1.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data.items Tableau Array of user's White Pages.
data.items[].id Nombre Unique identifier of the White Page.
data.items[].name Chaîne Name of the White Page.
data.items[].status Chaîne Status value: generating, pending, in_progress, completed, failed, error.
data.items[].status_label Chaîne Translated status description.
data.items[].generator_label Chaîne AI generator name.
data.items[].vertical_label Chaîne Selected niche/vertical name.
data.items[].language_label Chaîne Target language.
data.items[].theme_label Chaîne Selected template/theme name.
data.items[].amount Nombre Price charged for generation (e.g., 5.00) or null.
data.items[].can_retry Boolean Whether generation can be retried.
data.items[].can_download Boolean Whether the zip archive is ready to download.
data.items[].error_message Chaîne Localized error reason if generation failed.
data.items[].created_at Chaîne Creation date and time.
<?php

function get_white_pages($apiKey)
    {
        
$ch curl_init('https://spy.house/api/white-pages?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_white_pages('YOUR_API_KEY');
    
print_r($result);

Retrieving generator configuration options

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data.generators Tableau List of available AI generators for id_generator param.
data.generators[].id Nombre Numeric ID of the option.
data.generators[].slug Chaîne Slug/value of the option.
data.generators[].label Chaîne Translated name of the option.
data.verticals Tableau List of available niche verticals for id_vertical param.
data.verticals[].id Nombre Numeric ID of the option.
data.verticals[].slug Chaîne Slug/value of the option.
data.verticals[].label Chaîne Translated name of the option.
data.languages Tableau List of target languages for id_language param.
data.languages[].id Nombre Numeric ID of the option.
data.languages[].slug Chaîne Slug/value of the option.
data.languages[].label Chaîne Translated name of the option.
data.themes Object Templates map grouped by id_generator key.
<?php

function get_generator_options($apiKey)
    {
        
$ch curl_init('https://spy.house/api/white-pages/options?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($chcurl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_generator_options('YOUR_API_KEY');
    
print_r($result);

Generating a white page

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
name Chaîne Oui Name of the White Page (for reference, max 64 chars).
id_generator Nombre Oui Generator ID from options endpoint.
id_vertical Nombre Oui Vertical ID from options endpoint.
id_language Nombre Oui Language ID from options endpoint.
theme Chaîne Oui Theme slug string corresponding to the selected generator.
wp_domain Chaîne Non Optional target domain name.
wp_company Chaîne Non Optional company name for copy/legal page sections.
wp_phone Chaîne Non Optional contact phone number.
wp_email Chaîne Non Optional contact email address.
wp_keywords Chaîne Non Optional comma-separated keywords to tailor site content.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data.id Nombre Unique identifier of the White Page.
data.name Chaîne Name of the White Page.
data.status Chaîne Status value: generating, pending, in_progress, completed, failed, error.
data.status_label Chaîne Translated status description.
<?php

function generate_white_page($apiKey$params)
    {
        
$ch curl_init('https://spy.house/api/white-pages/generate?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_POSTTRUE);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($params));
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$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);

Retrieving generation status

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data.id Nombre Unique identifier of the White Page.
data.status Chaîne Status value: generating, pending, in_progress, completed, failed, error.
data.status_label Chaîne Translated status description.
data.can_retry Boolean Whether generation can be retried.
data.can_download Boolean Whether the zip archive is ready to download.
data.error_message Chaîne Localized error reason if generation failed.
<?php

function get_white_page_status($apiKey$id)
    {
        
$ch curl_init('https://spy.house/api/white-pages/' $id '/status?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_white_page_status('YOUR_API_KEY'123);
    
print_r($result);

Retrieving download link

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data.download_url Chaîne Temporary authenticated URL to download the zip file.
<?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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_white_page_download_url('YOUR_API_KEY'123);
    
print_r($result);

Downloading white page file

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.

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($chCURLOPT_FILE$fp);
        
curl_setopt($chCURLOPT_TIMEOUT300);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
curl_exec($chcurl_close($ch);
        
fclose($fp);
    }

    
download_white_page_file('YOUR_API_KEY'123'/path/to/save/archive.zip');

Deleting a white page

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data.deleted Boolean True if deletion succeeded.
<?php

function delete_white_page($apiKey$id)
    {
        
$ch curl_init('https://spy.house/api/white-pages/' $id '?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'DELETE');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result delete_white_page('YOUR_API_KEY'123);
    
print_r($result);

Retrying failed generation

URL de requête

Paramètre Type de données Requis Description
api_key Chaîne Oui Clé API unique pour l'authentification des requêtes.
Paramètre Type de données Description
status Chaîne Champ indiquant l'exécution réussie ("success") ou une erreur ("error").
msg Chaîne Message d'erreur ou informations supplémentaires sur la requête.
code Nombre Code de réponse, ex., 200 pour une requête réussie.
data.id Nombre Unique identifier of the White Page.
data.status Chaîne Status value: generating, pending, in_progress, completed, failed, error.
data.generating_label Chaîne Translated label for the new generating status.
<?php

function retry_white_page($apiKey$id)
    {
        
$ch curl_init('https://spy.house/api/white-pages/' $id '/retry?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_POSTTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result retry_white_page('YOUR_API_KEY'123);
    
print_r($result);