Авторизация

В API партнерской сети авторизация производится при помощи специального авторизационного ключа. При отправке запросов ключ нужно передавать в HTTP‑заголовке Authorization.

  1. Получение ключа
  2. Использование ключа
  3. Работа с несколькими площадками

Получение ключа

  • Если вы партнер Яндекс.Маркета, напишите нам через форму обратной связи:

    Примечание. API партнерской сети доступен только партнерам Яндекс.Маркета, которые отправили анкету и получили идентификатор партнерского трафика (CLID). Если вы сотрудничаете с Яндекс.Маркетом в тестовом режиме, вы не сможете получить доступ к API.
  • Если вы работаете с Яндекс.Маркетом как производитель, свяжитесь со своим менеджером и сообщите ему IP-адреса, с которых будете отправлять запросы.

Использование ключа

Авторизационный ключ необходимо передавать во всех запросах в HTTP‑заголовке Authorization. Если запрос отправлен без авторизационного ключа или с недействительным ключом, сервер партнерской сети возвращает HTTP‑статус 401 Authorization failed.

Пример запроса с HTTP‑заголовком Authorization на языке PHP:

// Входные данные
$authKey = '<ваш авторизационный ключ>';
$requestURL = 'https://api.content.market.yandex.ru/v3/affiliate/search?geo_id=213&text=iphone';

// Установка HTTP-заголовков запроса
$headers = array("Authorization: $authKey");

// Инициализация c URL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $requestURL);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);

// Выполнение запроса, получение результата
$result = curl_exec($curl);

// Обработка результата выполнения запроса
if(!$result) {
    echo 'Ошибка cURL: ' . curl_errno($curl) . ' - ' . curl_error($curl); 
}
else {
    // Разделение полученных HTTP-заголовков и тела ответа
    $responseHeadersSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
    $responseHeaders = substr($result, 0, $responseHeadersSize);
    $responseBody = substr($result, $responseHeadersSize);
    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    
    if ($httpCode == 200) {
        // Если HTTP-код ответа равен 200, то выводится отформатированное тело ответа 
        // в формате JSON
        echo 'Запрос: ' . $requestURL;
        $decodedBody = json_decode($responseBody);
        echo '<br>Тело ответа: <pre>' . json_encode(
            $decodedBody, 
            JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
        ) . '</pre>'; 
    }
    else {
        echo 'HTTP-код ответа: ' . $httpCode;
        // Если тело ответа не пустое, то производится попытка декодирования JSON-кода
        if (!empty($responseBody)) {
            $decodedBody = json_decode($responseBody);
            if ($decodedBody != null) {
                // Если ответ содержит тело в формате JSON, 
                // то выводится отформатированное тело в формате JSON
                echo '<br>Тело ответа: <pre>' . json_encode(
                    $decodedBody, 
                    JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
                ) . '</pre>'; 
            }
            else {
                // Если не удалось декодировать JSON либо тело имеет другой формат, 
                // то выводится преобразованное тело ответа
                echo '<br>Тело ответа: <pre>' . htmlspecialchars($responseBody) . "</pre>"; 
            }
        }
    }

    // Вывод необработанных HTTP-заголовков запроса и ответа
    echo '<hr>Заголовки запроса: <pre>' . curl_getinfo($curl, CURLINFO_HEADER_OUT) . '</pre>';
    echo 'Заголовки ответа: <pre>' . $responseHeaders . '</pre>';
}

curl_close($curl);

Работа с несколькими площадками

Если у вас есть несколько площадок, каждая со своим идентификатором CLID, то для каждой из них вы получите отдельный авторизационный ключ. Любой из полученных ключей можно использовать для любой площадки, если в запросе указан входной параметр clid с идентификатором площадки. В запросах без указания CLID используется идентификатор площадки, которой соответствует используемый ключ.