Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Все API версии 3 возвращают стандартизированные ответы на ошибки, чтобы быстро диагностировать и устранять проблемы. В этом разделе рассматриваются коды состояния HTTP, структура ответа об ошибках и распространенные сценарии устранения неполадок.
Note
Все значения перечисления строк являются нечувствительными к регистру.
Коды состояния HTTP
| Код состояния | Применимо к | Категория ошибки | Description | Распространенные причины |
|---|---|---|---|---|
| 200 | Все API | Success | Запрос был выполнен успешно. | - |
| 202 | Только обзор | Акцептировано | Запрос, принятый для обработки (динамический обход). | Выполняется обход по запросу |
| 400 | Все API | ошибка запроса | Недопустимые параметры запроса. | Отсутствующие обязательные поля, недопустимые значения параметров, некорректный JSON |
| 401 | Все API | Unauthorized | Сбой проверки подлинности или отсутствие. | Недопустимый ключ API, отсутствующий заголовок x-apikey |
| 403 | Все API | Forbidden | Допустимые учетные данные, но недостаточно разрешений. | Ключ API не имеет необходимых разрешений |
| 403 | Только обзор | Forbidden | Содержимое, отфильтрованное или исключенное URL-адрес. | URL-адрес, заблокированный политикой или содержимым, отфильтрованным |
| 404 | Только обзор | Не найдено | Документ не найден. | Недопустимый или недоступный URL-адрес |
| 410 | Все API | Отсутствует (Gone) | Требуется ПРОТОКОЛ HTTPS. | Запрос, сделанный по протоколу HTTP вместо HTTPS |
| 415 | Все API | Неподдерживаемый тип носителя | Тип контента не поддерживается. | Отсутствующий или неправильный content-type заголовок |
| 429 | Все API | Слишком много запросов | Превышено ограничение скорости. | Слишком много запросов в период времени |
| 430 | Только обзор | Ошибка сервера | Слишком много обходов по запросу. | Чрезмерные запросы динамического обхода |
| 500 | Все API | Внутренняя ошибка сервера | Непредвиденная ошибка сервера. | Проблема с временным сервером |
Структура ответа об ошибках
Все ответы на ошибки соответствуют этой схеме:
| Field | Type | Description |
|---|---|---|
errorCode |
string | Более подробная категория ошибок, которая помогает определить тип ошибки. |
errorCategory |
string | Высокоуровневая категория: UserError (клиентская или неизменяемая для повторных попыток) или (серверная или SystemError повторная попытка). |
userMessage |
string | Описание ошибки в понятном для человека формате. |
technicalDetails |
строка (необязательно) | Дополнительные технические сведения или сведения о проверке параметров для отладки. |
retryAfter |
строка (необязательно) | Время ожидания перед повтором. |
requestId |
строка (необязательно) | Уникальный идентификатор запроса. |
traceId |
string | Идентификатор распределенной трассировки для отладки и поддержки Microsoft. |
Note
202 Accepted ответы (например, обзор динамического опроса обхода контента) не являются ответами на ошибки и не используют схему ошибок выше. Они по-прежнему retryAfter могут включать значение, указывающее, когда повторить запрос.
Пример ответа об ошибке:
{
"errorCode": "HandlerInvalidInput",
"errorCategory": "UserError",
"userMessage": "Invalid input provided. Please check your request parameters.",
"technicalDetails": "Parameter validation failed: maxResults=100 exceeds maximum=50",
"requestId": "req_abc123",
"traceId": "trace_xyz789"
}
Справочник по кодам ошибок
Ошибки проверки запроса
| Код ошибки | Состояние HTTP | Category | Description |
|---|---|---|---|
RequestInvalidFormat |
400 | UserError |
Неправильно сформированный текст JSON или недопустимая структура полезных данных запроса. |
RequestInvalidMethod |
400 | UserError |
Недопустимое имя метода или средства, указанное в запросе. |
HandlerInvalidInput |
400 | UserError |
Недопустимые значения входных параметров (например, пустой запрос, maxResults вне диапазона [1, 50], недопустимые значения перечисления). |
RequestBlockedHeader |
400 | UserError |
Запрос содержит заголовок блочной отладки и варианта (например, , X-Augmentations, X-DebugOptionsX-XapHostOverride). Вместо этого используйте параметры задокументированного URL-адреса (?p1=, ?debugoptions=, ?atlahostname=). |
RequestUnsupportedMediaType |
415 | UserError |
Заголовок content-type отсутствует или нет application/json. |
MethodNotAllowed |
405 | UserError |
Метод HTTP не разрешен для маршрута (например, GET в конечной точке только для POST). |
Ошибки проверки подлинности и авторизации
| Код ошибки | Состояние HTTP | Category | Description |
|---|---|---|---|
AuthNoToken |
401 | UserError |
Требуется проверка подлинности. Маркер носителя или ключ API не указан. |
AuthTokenParse |
401 | UserError |
Недопустимый формат маркера проверки подлинности или синтаксический анализ маркера завершился ошибкой. |
AuthInvalidApiKey |
401 | UserError |
Указанный ключ API недопустим или не распознается. |
AuthenticationFailed |
401 | UserError |
Общий сбой проверки подлинности. |
AuthExpiredTrial |
401 | UserError |
Срок пробной версии истек. Обновите ключ. |
AuthMissingEntryId |
400 | UserError |
Отсутствует удостоверение приложения / идентификатор записи в контексте запроса. |
AuthAppIdSelectionRequired |
400 | UserError |
Удостоверение сопоставляется с несколькими приложениями. Укажите целевое приложение с помощью APPID параметра запроса. Ознакомьтесь с вызовом нескольких идентификаторов appID. |
AuthUnauthorizedEntryId |
401 | UserError |
Несанкционированный идентификатор записи. Удостоверение приложения не удалось устранить, или APPID параметр запроса был отправлен с проверкой подлинности ключа API. |
AuthUnauthorizedAppId |
403 | UserError |
Указанный параметр APPID не связан с удостоверением. |
AuthUnauthorizedService |
403 | UserError |
Вызывающий объект проходит проверку подлинности, но несанкционированный доступ к запрошенной службе или вертикали. |
AuthBatchEndpointRequired |
403 | UserError |
Приложение требуется для использования пакетной конечной точки (X-FD-Batch: 1) для поиска в Интернете. |
AuthMcpWebForbidden |
403 | UserError |
Приложению не разрешено использовать средство MCP web . |
AuthContentFormatForbidden |
403 | UserError |
Это приложение имеет доступ только к проходам. Используйте contentFormatpassage. См. фрагменты и форматы содержимого. |
Ошибки ограничения скорости
| Код ошибки | Состояние HTTP | Category | Description |
|---|---|---|---|
AuthUserThrottled |
429 | UserError |
Частота запроса превышает ограничение скорости ресурса. Проверьте retryAfter. |
AuthUserDailyUsageExceeded |
429 | UserError |
Достигнута квота ежедневного запроса (сбрасывается в 00:00 UTC). Проверьте retryAfter. |
Просмотр определенных ошибок API
| Код ошибки | Состояние HTTP | Category | Description |
|---|---|---|---|
BrowseApiDocNotFound |
404 | UserError |
Документ не найден. Содержимое не доступно для указанного URL-адреса. |
BrowseApiIsFilteredOut |
403 | UserError |
Результат был удален из-за политики или фильтрации содержимого. |
BrowseApiIsUrlExcluded |
403 | UserError |
Целевой URL-адрес исключен или запрещен политикой. |
BrowseApiTooManyOnDemandCrawls |
430 | UserError |
Слишком много запросов динамического обхода по запросу. |
Ошибки службы и инфраструктуры
| Код ошибки | Состояние HTTP | Category | Возможность повторной попытки | Description |
|---|---|---|---|---|
InternalServerError |
500 | SystemError |
Да (30-е) | Внутренняя ошибка сервера. |
Распространенные сценарии ошибок
Ошибки проверки подлинности (401, 403)
Симптом: Сбой проверки подлинности или запрещенный доступ
Решения:
- Проверка правильности ключа API и включения в
x-apikeyзаголовок - Убедитесь, что срок действия ключа API не истек
- Убедитесь, что у вас есть необходимые разрешения для конечной точки
- Обратитесь к представителю Microsoft, если проблемы сохраняются
Example:
# Correct authentication
curl -X POST "https://api.microsoft.ai/v3/search/web" \
-H "x-apikey: your-valid-key-here" \
-H "content-type: application/json" \
-d '{"query": "test"}'
Ограничение скорости (429)
Симптом: Превышено ограничение скорости или превышено ежедневное ограничение квоты (AuthUserThrottled или AuthUserDailyUsageExceeded)
Запросы, превышающие ограничение скорости ресурса, возвращают HTTP 429. Ограничение скорости отображается на портале веб-IQ.
Решения:
- Реализуйте логику повторных попыток с экспоненциальной задержкой
-
retryAfterДождитесь интервала в ответе об ошибке (например,"60s") перед повтором - Уменьшение частоты запросов
- Обратите внимание, что ежедневные ограничения квот (
AuthUserDailyUsageExceeded) сбрасываются ежедневно в 00:00 UTC - Чтобы запросить более высокое ограничение, обратитесь в службу поддержки веб-IQ
Пример ответа:
{
"errorCode": "AuthUserThrottled",
"errorCategory": "UserError",
"userMessage": "Rate limit exceeded. Please reduce your request frequency.",
"retryAfter": "60s",
"requestId": "req_123",
"traceId": "trace_456"
}
Недопустимые параметры (400)
Симптом: Недопустимый запрос из-за недопустимых параметров
Распространенные проблемы:
- Обязательные поля отсутствуют (например,
queryпараметр) - Значения параметров вне диапазона (например,
maxResults> 50) - Недопустимые типы параметров (например, строка вместо целого числа)
- Неподдерживаемые значения параметров (например, недопустимые
contentFormat)
Решения:
- Проверка всех необходимых параметров присутствует
- Проверка значений параметров на основе документированных ограничений
- Обеспечение правильного форматирования JSON
Ошибки сервера и инфраструктуры (500)
Симптом: Непредвиденная внутренняя ошибка сервера или вышестоящей службы (InternalServerError)
Решения:
-
retryAfterПроверьте поле (по умолчанию"30s") и повторите запрос после ожидания - Реализуйте повторные попытки с экспоненциальной задержкой и случайным разбросом
- Если проблема сохраняется, обратитесь в службу поддержки Microsoft с
traceIdпредоставленным в ответе
Пример ответа:
{
"errorCode": "InternalServerError",
"errorCategory": "SystemError",
"userMessage": "The service is temporarily unavailable. Please try again later.",
"technicalDetails": "An internal service error occurred. Please contact support if the issue persists.",
"retryAfter": "30s",
"traceId": "trace_456"
}
Просмотр принятого ответа API (202)
Симптом: Принятый ответ с полем retryAfter
Объяснение: Если liveCrawl задано значение "резервное копирование" и URL-адрес необходимо выполнить обход, API возвращает значение 202 Accepted со retryAfter значением, указывающим, когда повторить запрос.
Обработка:
# Initial request
curl -X POST "https://api.microsoft.ai/v3/browse" \
-H "x-apikey: your-key" \
-H "content-type: application/json" \
-d '{"url": "https://example.com", "liveCrawl": "fallback"}'
# Response: 202 Accepted with retryAfter
# Wait for the specified time, then retry the same request
Лучшие практики
- Всегда проверяйте коды состояния . Не предполагайте успешность
- Использование traceId для поддержки — включение traceId при обращении в службу поддержки
- Реализация логики повторных попыток . Использование экспоненциального обратного выхода для временных ошибок
- Обработка ответов 202 . Для просмотра API с помощью динамического обхода, ожидания и повтора
- Проверка перед отправкой . Проверьте параметры локально, чтобы избежать 400 ошибок
- Использовать только HTTPS . HTTP-запросы возвращают 410 ошибок