Авторизация
В API партнерской сети авторизация производится при помощи специального авторизационного ключа. При отправке запросов ключ нужно передавать в HTTP‑заголовке Authorization
.
Получение ключа
-
Если вы партнер Яндекс.Маркета, напишите нам через форму обратной связи:
Написать
Примечание
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 используется идентификатор площадки, которой соответствует используемый ключ.