Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Todas as APIs v3 devolvem respostas de erro padronizadas para o ajudar a diagnosticar e resolver problemas rapidamente. Esta secção cobre códigos de estado HTTP, estrutura de resposta a erros e cenários comuns de resolução de problemas.
Note
Todos os valores de enum da cadeia são indiferentes a maiúsculas.
Códigos de status HTTP
| Código de estado | Aplica-se a | Categoria de Erro | Description | Causas Comuns |
|---|---|---|---|---|
| 200 | Todas as APIs | Sucesso | O pedido foi bem-sucedido. | - |
| 202 | Apenas navegar | Aceito | Pedido aceite para processamento (live crawl). | Rastreamento on-demand em curso |
| 400 | Todas as APIs | Pedido Incorreto | Parâmetros de pedido inválidos. | Campos obrigatórios em falta, valores de parâmetros inválidos, JSON mal formado |
| 401 | Todas as APIs | Não autorizado | Autenticação falhada ou em falta. | Chave API inválida, falta do cabeçalho x-apikey |
| 403 | Todas as APIs | Proibido | Credenciais válidas mas permissões insuficientes. | A chave API não tem as permissões necessárias |
| 403 | Apenas navegar | Proibido | Conteúdo filtrado ou URL excluído. | URL bloqueado por política ou conteúdo filtrado |
| 404 | Apenas navegar | Não encontrado | Documento não encontrado. | URL inválida ou inacessível |
| 410 | Todas as APIs | Desapareceu | HTTPS necessário. | Pedido feito por HTTP em vez de HTTPS |
| 415 | Todas as APIs | Tipo de Media Não Suportado | Tipo de conteúdo não suportado. | Cabeçalho em falta ou incorreto content-type |
| 429 | Todas as APIs | Demasiados Pedidos | Limite de taxa ultrapassado. | Demasiados pedidos numa janela temporal |
| 430 | Apenas navegar | Erro do servidor | Demasiados crawls a pedido. | Pedidos excessivos de rastreamento ao vivo |
| 500 | Todas as APIs | Erro interno do servidor | Erro inesperado do servidor. | Problema temporário com o servidor |
Estrutura de Resposta a Erros
Todas as respostas ao erro seguem este esquema:
| Field | Tipo | Description |
|---|---|---|
errorCode |
cadeia (de caracteres) | Uma categoria de erro mais detalhada que ajuda a identificar o tipo de erro. |
errorCategory |
cadeia (de caracteres) | Categoria de alto nível: UserError (lado do cliente / não retentável) ou SystemError (lado do servidor / retentável). |
userMessage |
cadeia (de caracteres) | Descrição do erro legível por humanos. |
technicalDetails |
string (opcional) | Informação técnica adicional ou detalhes de validação de parâmetros para depuração. |
retryAfter |
string (opcional) | É hora de esperar antes de tentar novamente. |
requestId |
string (opcional) | Identificador único para o pedido. |
traceId |
cadeia (de caracteres) | ID de traço distribuído para depuração e suporte Microsoft. |
Note
202 Accepted as respostas (por exemplo, Browse live crawl polling) não são respostas de erro e não utilizam o esquema de erro acima. Ainda assim, podem incluir um retryAfter valor para indicar quando tentar novamente o pedido.
Exemplo de Resposta a Erro:
{
"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"
}
Referência de Códigos de Erro
Erros de Validação de Pedidos
| Código de Erro | Estado HTTP | Category | Description |
|---|---|---|---|
RequestInvalidFormat |
400 | UserError |
Corpo JSON mal formado ou estrutura de carga útil de pedido inválida. |
RequestInvalidMethod |
400 | UserError |
Nome inválido do método ou ferramenta especificado no pedido. |
HandlerInvalidInput |
400 | UserError |
Valores de parâmetros de entrada inválidos (por exemplo, consulta vazia, maxResults fora do intervalo [1, 50], valores de enum inválidos). |
RequestBlockedHeader |
400 | UserError |
O pedido contém um cabeçalho de depuração/variante blocklist (por exemplo, X-Augmentations, X-DebugOptions, X-XapHostOverride). Use os parâmetros de URL documentados (?p1=, ?debugoptions=, ?atlahostname=) em vez disso. |
RequestUnsupportedMediaType |
415 | UserError |
O content-type cabeçalho está em falta ou não application/json. |
MethodNotAllowed |
405 | UserError |
O método HTTP não é permitido na rota (por exemplo, GET num endpoint apenas POST). |
Erros de Autenticação e Autorização
| Código de Erro | Estado HTTP | Category | Description |
|---|---|---|---|
AuthNoToken |
401 | UserError |
É necessária autenticação. Não é fornecido token portador nem chave API. |
AuthTokenParse |
401 | UserError |
O formato ou análise de token de autenticação inválido falhou. |
AuthInvalidApiKey |
401 | UserError |
A chave API fornecida é inválida ou não reconhecida. |
AuthenticationFailed |
401 | UserError |
Falha geral de autenticação. |
AuthExpiredTrial |
401 | UserError |
O período experimental expirou. Por favor, atualiza a tua chave. |
AuthMissingEntryId |
400 | UserError |
Falta a identidade da aplicação / ID de entrada no contexto do pedido. |
AuthAppIdSelectionRequired |
400 | UserError |
A sua identidade corresponde a múltiplas aplicações. Especifique a aplicação alvo usando o APPID parâmetro de consulta. Veja Chamar mais do que um AppID. |
AuthUnauthorizedEntryId |
401 | UserError |
Identificação de entrada não autorizada. A identidade da aplicação não pôde ser resolvida, ou o APPID parâmetro de consulta foi enviado com autenticação por chave API. |
AuthUnauthorizedAppId |
403 | UserError |
O especificado APPID não está associado à sua identidade. |
AuthUnauthorizedService |
403 | UserError |
O chamador está autenticado, mas não autorizado a aceder ao serviço/vertical solicitado. |
AuthBatchEndpointRequired |
403 | UserError |
A aplicação é obrigada a usar o endpoint batch (X-FD-Batch: 1) para pesquisa web. |
AuthMcpWebForbidden |
403 | UserError |
A aplicação não é permitida para utilizar a ferramenta MCP web . |
AuthContentFormatForbidden |
403 | UserError |
Esta aplicação só tem acesso a passagens.
contentFormat
passageUse .
Ver Passagens e formatos de conteúdo. |
Erros de limitação de taxa
| Código de Erro | Estado HTTP | Category | Description |
|---|---|---|---|
AuthUserThrottled |
429 | UserError |
A frequência dos pedidos excede o limite de taxa do seu recurso. Verifique retryAfter. |
AuthUserDailyUsageExceeded |
429 | UserError |
A quota diária de pedidos foi atingida (reinício às 00:00 UTC). Verifique retryAfter. |
Navegar por Erros Específicos da API
| Código de Erro | Estado HTTP | Category | Description |
|---|---|---|---|
BrowseApiDocNotFound |
404 | UserError |
Documento não encontrado. Não há conteúdo disponível para a URL especificada. |
BrowseApiIsFilteredOut |
403 | UserError |
O resultado foi abandonado devido a políticas ou filtragem de conteúdo. |
BrowseApiIsUrlExcluded |
403 | UserError |
O URL alvo é excluído ou proibido pela política. |
BrowseApiTooManyOnDemandCrawls |
430 | UserError |
Demasiados pedidos de rastreamento ao vivo em andamento. |
Erros de Serviço e Infraestrutura
| Código de Erro | Estado HTTP | Category | Repetível | Description |
|---|---|---|---|---|
InternalServerError |
500 | SystemError |
Sim (30 e poucos anos) | Erro de servidor interno. |
Cenários de Erros Comuns
Erros de autenticação (401, 403)
Sintoma: Autenticação falhada ou acesso proibido
Soluções:
- Verifique se a sua chave API está correta e incluída no
x-apikeycabeçalho - Verifique se a sua chave API não expirou
- Assegura-te de que tens as permissões necessárias para o endpoint
- Contacte o seu representante da Microsoft se os problemas persistirem
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"}'
Limitação de taxa (429)
Sintoma: Limite de taxa ultrapassado ou quota diária esgotada (AuthUserThrottled ou AuthUserDailyUsageExceeded)
Pedidos acima do limite de taxa do seu recurso retornam HTTP 429. O seu limite de taxa é mostrado no portal Web IQ.
Soluções:
- Implementar lógica de repetição com backoff exponencial
- Aguarde pelo intervalo
retryAfterna resposta de erro (por exemplo,"60s") antes de tentar novamente - Reduzir a frequência dos pedidos
- Note que os limites diários de quotas (
AuthUserDailyUsageExceeded) são reiniciados diariamente às 00:00 UTC - Para solicitar um limite superior, contacte o Suporte Web IQ
Exemplo de Resposta:
{
"errorCode": "AuthUserThrottled",
"errorCategory": "UserError",
"userMessage": "Rate limit exceeded. Please reduce your request frequency.",
"retryAfter": "60s",
"requestId": "req_123",
"traceId": "trace_456"
}
Parâmetros inválidos (400)
Sintoma: Pedido inadequado devido a parâmetros inválidos
Problemas Comuns:
- Campos obrigatórios em falta (por exemplo,
queryparâmetro) - Valores de parâmetros fora do intervalo (por exemplo,
maxResults> 50) - Tipos de parâmetros inválidos (por exemplo, cadeia em vez de inteiro)
- Valores de parâmetros não suportados (por exemplo, inválidos
contentFormat)
Soluções:
- Validar que todos os parâmetros necessários estão presentes
- Verifique os valores dos parâmetros em relação às restrições documentadas
- Garantir a formatação JSON correta
Erros de servidor e infraestrutura (500)
Sintoma: Erro inesperado de servidor interno ou serviço a montante (InternalServerError)
Soluções:
- Verifique o
retryAftercampo (por defeito para"30s") e tente novamente o pedido após esperar - Implementar repetição com recuo exponencial e aleatoriedade
- Se o problema persistir, contacte o suporte da Microsoft com o
traceIdque foi fornecido na resposta
Exemplo de Resposta:
{
"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"
}
Resposta aceite na API Browse (202)
Sintoma: Resposta aceite com retryAfter campo
Explicação: Quando liveCrawl está definido como "fallback" e a URL precisa de ser rastreada, a API devolve 202 Aceite com um retryAfter valor que indica quando tentar novamente o pedido.
Condução:
# 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
Melhores práticas
- Verifica sempre os códigos de estado - Não assumas sucesso
- Use traceId para suporte - Inclua traceId ao contactar o suporte
- Implementar lógica de retentativa - Usar retrocesso exponencial para erros transitórios
- Lidar com 202 respostas - Para a API Browse com crawl ao vivo, espera e tenta novamente
- Valide antes de enviar - Verifique os parâmetros localmente para evitar erros 400
- Use apenas HTTPS - os pedidos HTTP devolvem erros 410