Авторизация

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

Внимание. С 26 декабря 2018 года новые авторизационные ключи для доступа к контентному API не выдаются.

Использование авторизационного ключа

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

Примечание. В примерах обращений к ресурсам API авторизационные данные не указываются.

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

// Входные данные
$authKey = '<ваш авторизационный ключ>';
$requestURL = 'https://api.content.market.yandex.ru/v2/geo/suggest?geo_id=213&name_part=мос';

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

// Инициализация cURL
$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);