Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Tutte le API v3 restituiscono risposte di errore standardizzate per diagnosticare e risolvere rapidamente i problemi. Questa sezione illustra i codici di stato HTTP, la struttura di risposta agli errori e gli scenari comuni di risoluzione dei problemi.
Note
Tutti i valori di enumerazione stringa non fanno distinzione tra maiuscole e minuscole.
Codici di stato HTTP
| Codice di stato | Si applica a | Categoria errore | Description | Cause comuni |
|---|---|---|---|---|
| 200 | Tutte le API | Operazione completata | La richiesta è stata accolta. | - |
| 202 | Solo Esplora | Accettato | Richiesta accettata per l'elaborazione (ricerca per indicizzazione in tempo reale). | Ricerca per indicizzazione su richiesta in corso quando liveCrawl è "fallback" |
| 400 | Tutte le API | Richiesta non valida | Parametri di richiesta non validi. | Campi obbligatori mancanti, valori di parametro non validi, JSON in formato non valido |
| 401 | Tutte le API | Unauthorized | Autenticazione non riuscita o mancante. | Chiave API non valida, intestazione x-apikey mancante |
| 403 | Tutte le API | Non consentito | Credenziali valide ma autorizzazioni insufficienti. | La chiave API non dispone delle autorizzazioni necessarie |
| 403 | Solo Esplora | Non consentito | Contenuto filtrato o ESCLUSO URL. | URL bloccato da criteri o contenuto filtrato |
| 404 | Solo Esplora | Non trovato | Documento non trovato. | URL non valido o inaccessibile |
| 410 | Tutte le API | Sparito | HTTPS obbligatorio. | Richiesta effettuata tramite HTTP invece di HTTPS |
| 415 | Tutte le API | Tipo di supporto non supportato | Tipo di contenuto non supportato. | Intestazione mancante o non corretta content-type |
| 429 | Tutte le API | Troppe richieste | Limite di velocità superato. Per Sfoglia con codici di errore granulari, restituiti anche quando vengono richieste troppe ricerche per indicizzazione su richiesta. | Troppe richieste nell'intervallo di tempo o richieste di ricerca per indicizzazione in tempo reale eccessive |
| 430 | Solo Esplora | Errore del server | Troppe ricerche per indicizzazione su richiesta (codici di errore legacy). | Richieste di ricerca per indicizzazione in tempo reale eccessive |
| 500 | Tutte le API | Errore interno del server | Errore server imprevisto. | Problema temporaneo del server |
| 520 | Solo Esplora | Elaborazione del contenuto non riuscita | La pagina è stata recuperata, ma non è possibile produrre contenuto utilizzabile. | Elaborazione dei documenti non riuscita o timeout o timeout del rendering dinamico |
| 523 | Solo Esplora | Ricerca per indicizzazione annullata | L'URL non ha prodotto alcun contenuto perché la ricerca per indicizzazione non è riuscita a causa di una quota limitata di ricerca per indicizzazione del sito. | Quota di ricerca per indicizzazione limitata per l'host di origine |
| 524 | Solo Esplora | Timeout ricerca per indicizzazione | L'URL non ha prodotto alcun contenuto perché è stato eseguito il timeout della ricerca per indicizzazione. | Timeout dell'host remoto |
Gli stati 520, 523 e 524 fanno parte di codici di errore di esplorazione granulari, che sono abilitati per impostazione predefinita.
Struttura della risposta all'errore
Tutte le risposte di errore seguono questo schema:
| Field | Type | Description |
|---|---|---|
errorCode |
string | Categoria di errore più dettagliata che consente di identificare il tipo di errore. |
errorCategory |
string | Categoria generale: UserError (lato client/ non riprovabile) o SystemError (lato server/riprovabile). |
userMessage |
string | Descrizione dell'errore leggibile dall'utente. |
technicalDetails |
string (facoltativo) | Informazioni tecniche aggiuntive o dettagli di convalida dei parametri per il debug. |
retryAfter |
string (facoltativo) | Linee guida per i tentativi. Per AuthUserThrottled, AuthUserDailyUsageExceedede InternalServerError, una durata con un "s" suffisso (ad esempio, "60s"). Per Cercare errori granulari, incluso TooManyOnDemandCrawls (429), un timestamp UTC ISO 8601 (ad esempio, "2026-10-30T01:01:00Z") che è la prima volta per riprovare. Omesso quando non si applicano linee guida per i tentativi. |
requestId |
string (facoltativo) | Identificatore univoco per la richiesta. |
traceId |
string | ID traccia distribuita per il debug e il supporto Microsoft. |
Note
retryAfter usa due formati.
AuthUserThrottledLe risposte , AuthUserDailyUsageExceedede InternalServerError usano una durata, "60s"ad esempio . Esplorare le risposte e sfogliare 202 Accepted gli errori granulari usano un timestamp ISO 8601 UTC assoluto, "2026-10-30T01:01:00Z"ad esempio . Lo stato HTTP da solo non determina il formato: TooManyOnDemandCrawls restituisce 429 ma usa un timestamp. La logica di ripetizione dei tentativi deve gestire entrambi i formati.
Note
202 Accepted le risposte (ad esempio, browse live crawl polling) non sono risposte di errore e non usano lo schema di errore precedente. Includono un retryAfter timestamp per indicare quando ripetere la richiesta.
Esempio di risposta di errore:
{
"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"
}
Riferimento ai codici di errore
Errori di convalida della richiesta
| Codice di errore | Stato HTTP | Category | Description |
|---|---|---|---|
RequestInvalidFormat |
400 | UserError |
Corpo JSON in formato non valido o struttura del payload della richiesta non valida. |
RequestInvalidMethod |
400 | UserError |
Nome del metodo o dello strumento non valido specificato nella richiesta. |
HandlerInvalidInput |
400 | UserError |
Valori dei parametri di input non validi(ad esempio, query vuota, maxResults non compreso nell'intervallo [1, 50], valori di enumerazione non validi. Per sfogliare le richieste di passaggio, query manca, vuoto o più di 1000 caratteri. |
RequestBlockedHeader |
400 | UserError |
La richiesta contiene un'intestazione debug/variant bloccata , ad esempio X-Augmentations, X-DebugOptions, X-XapHostOverride. Usare invece parametri URL documentati (?p1=, ?debugoptions=, ?atlahostname=). |
RequestUnsupportedMediaType |
415 | UserError |
L'intestazione content-type è mancante o non application/json. |
MethodNotAllowed |
405 | UserError |
Metodo HTTP non consentito nella route (ad esempio, GET in un endpoint solo POST). |
Errori di autenticazione e autorizzazione
| Codice di errore | Stato HTTP | Category | Description |
|---|---|---|---|
AuthNoToken |
401 | UserError |
Autenticazione richiesta. Nessun token di connessione o chiave API fornita. |
AuthTokenParse |
401 | UserError |
Il formato del token di autenticazione o l'analisi dei token non è valida. |
AuthInvalidApiKey |
401 | UserError |
La chiave API specificata non è valida o non è riconosciuta. |
AuthenticationFailed |
401 | UserError |
Errore di autenticazione generale. |
AuthExpiredTrial |
401 | UserError |
Il periodo di valutazione è scaduto. Aggiornare la chiave. |
AuthMissingEntryId |
400 | UserError |
Identità dell'applicazione/ID voce mancante nel contesto della richiesta. |
AuthAppIdSelectionRequired |
400 | UserError |
L'identità esegue il mapping a più applicazioni. Specificare l'applicazione di destinazione usando il APPID parametro di query. Vedi Chiamata di più appID. |
AuthUnauthorizedEntryId |
401 | UserError |
ID voce non autorizzato. Impossibile risolvere l'identità dell'applicazione oppure il parametro di APPID query è stato inviato con l'autenticazione della chiave API. |
AuthUnauthorizedAppId |
403 | UserError |
L'oggetto specificato APPID non è associato all'identità. |
AuthUnauthorizedService |
403 | UserError |
Il chiamante viene autenticato ma non autorizzato ad accedere al servizio o al verticale richiesto. |
AuthBatchEndpointRequired |
403 | UserError |
L'applicazione deve usare l'endpoint batch (X-FD-Batch: 1) per la ricerca Web. |
AuthMcpWebForbidden |
403 | UserError |
L'applicazione non è autorizzata a usare lo strumento MCP web . |
AuthContentFormatForbidden |
403 | UserError |
Questa applicazione ha accesso solo ai passaggi. Usare contentFormatpassage. Vedi Passaggi e formati di contenuto. |
Errori di limitazione della frequenza
| Codice di errore | Stato HTTP | Category | Description |
|---|---|---|---|
AuthUserThrottled |
429 | UserError |
La frequenza delle richieste supera il limite di frequenza di AppID. Controllare retryAfter. |
AuthUserDailyUsageExceeded |
429 | UserError |
È stata raggiunta la quota di richiesta giornaliera (reimpostazioni alle 00:00 UTC). Controllare retryAfter. |
Esplorare gli errori specifici dell'API
I codici di errore granulari sono abilitati per impostazione predefinita per Sfoglia. Identificano il motivo specifico per cui non è stato possibile restituire una pagina, ad esempio il filtro del contenuto, un documento mancante o un errore di ricerca per indicizzazione e includere indicazioni sui tentativi, se applicabile. Non è richiesta alcuna richiesta di consenso esplicito o di supporto.
I codici granulari e legacy usano la struttura di risposta agli errori standard. Gli errori di esplorazione non elencati qui vengono segnalati come InternalServerError (HTTP 500).
Codici di errore di esplorazione legacy
Questi codici sono stati usati prima che i codici di errore granulari diventassero l'impostazione predefinita. Vengono elencati per riferimento quando si gestiscono le risposte meno recenti.
| Codice di errore | Stato HTTP | Category | Description |
|---|---|---|---|
BrowseApiDocNotFound |
404 | UserError |
Documento non trovato. Nessun contenuto disponibile per l'URL specificato. |
BrowseApiIsFilteredOut |
403 | UserError |
Il risultato è stato eliminato dai criteri di contenuto, dal filtro per adulti, dalle restrizioni di accesso o dalle restrizioni di dominio. |
BrowseApiIsUrlExcluded |
403 | UserError |
L'URL di destinazione viene escluso da robots.txt o criteri di esclusione della ricerca per indicizzazione. |
BrowseApiTooManyOnDemandCrawls |
430 | UserError |
Troppe richieste di ricerca per indicizzazione live su richiesta in corso. Ridurre la frequenza di ricerca per indicizzazione in tempo reale. |
Codici di errore di esplorazione granulare
| Codice di errore | Stato HTTP | Category | Tipico retryAfter |
userMessage |
Azione consigliata |
|---|---|---|---|---|---|
InvalidUrl |
400 | UserError |
Mancante | L'URL richiesto non è valido. | Correggere l'URL prima di riprovare. |
NotSupported |
400 | UserError |
Mancante | L'URL richiesto non è supportato. | Usare un URL che punta a un documento Web supportato. |
URLFilteredOutSpamAdult |
403 | UserError |
Circa 24 ore | L'URL richiesto è stato filtrato in base a criteri di posta indesiderata o per adulti. | Non è possibile restituire la pagina. Non riprovare prima retryAfterdi . |
URLFilteredOutEncumbrance |
403 | UserError |
Circa 24 ore | L'URL richiesto è stato filtrato in base alle restrizioni relative al contenuto. | Il criterio dell'editore o del sito, ad esempio direttive robot o regole paywall, non consente la restituzione del contenuto. Non riprovare prima retryAfterdi . |
URLFilteredOutSource403Forbidden |
403 | UserError |
Circa 24 ore | L'origine ha negato l'accesso all'URL richiesto. | Il sito di origine ha restituito HTTP 403. Non riprovare prima retryAfterdi . |
BrowseApiIsFilteredOut |
403 | UserError |
Circa 24 ore, quando fornito | L'URL richiesto è stato filtrato. | Restituito quando una pagina viene filtrata per un motivo per cui non sono inclusi codici più specifici. Non riprovare prima retryAfterdi . |
DocNotFound |
404 | UserError |
Omesso, a meno che non venga fornito dal servizio di ricerca per indicizzazione | Documento richiesto non trovato. | Verificare l'URL o impostare su liveCrawl "fallback" per richiedere una ricerca per indicizzazione dinamica. |
TooManyOnDemandCrawls |
429 | UserError |
Quando viene fornito dal servizio di ricerca per indicizzazione | Sono state richieste troppe ricerche per indicizzazione su richiesta. | Ridurre la frequenza di ricerca per indicizzazione in tempo reale. Se retryAfter è presente, attendere fino a quel momento prima di riprovare. |
FailedNoContent |
520 | SystemError |
Circa 5 minuti | L'elaborazione o la pubblicazione di documenti non è riuscita a produrre contenuto utilizzabile. | Riprovare dopo retryAfter. |
DynamicRenderingTimeout |
520 | SystemError |
Circa 5 minuti | Timeout del rendering di pagina dinamico. | Riprovare dopo retryAftero riprovare senza renderDynamicPages. |
ProcessingTimeout |
520 | SystemError |
Circa 5 minuti | Timeout dell'elaborazione dei documenti. | Riprovare dopo retryAfter. |
PolitenessCancellation |
523 | SystemError |
Circa 5 minuti | La ricerca per indicizzazione è stata annullata per rispettare i limiti di ricerca per indicizzazione dell'host di origine. | L'URL non ha prodotto alcun contenuto perché la ricerca per indicizzazione non è riuscita a causa di una quota limitata di ricerca per indicizzazione del sito. Riprovare dopo retryAfter. |
HostCrawlTimeout |
524 | SystemError |
Circa 5 minuti | Timeout della ricerca per indicizzazione dell'host di origine. | L'URL non ha prodotto alcun contenuto perché è stato eseguito il timeout della ricerca per indicizzazione: l'host remoto non ha risposto in tempo. Riprovare dopo retryAfter. |
Quando si applica un ritardo di ripetizione dei tentativi, la risposta include retryAfter come timestamp UTC ISO 8601 nel formato yyyy-MM-ddTHH:mm:ssZ, ad esempio "retryAfter": "2026-10-30T01:01:00Z". Non riprovare prima di quel momento. Quando retryAfter viene omesso, non viene applicato alcun materiale sussidiario per i tentativi.
Esempio di risposta di errore granulare:
{
"errorCode": "URLFilteredOutEncumbrance",
"errorCategory": "UserError",
"userMessage": "The requested URL was filtered by content restrictions.",
"retryAfter": "2026-10-31T01:00:00Z",
"traceId": "0123456789abcdef0123456789abcdef"
}
Esplorare gli errori di passaggio
Questi errori si applicano alle richieste Di esplorazione con contentFormat: "passage", incluse le richieste provenienti dalle applicazioni senza accesso completo al documento, per cui il formato predefinito è "passaggio". Vedere Sfogliare le richieste di passaggio.
| Condition | Codice di errore | Stato HTTP | userMessage |
|---|---|---|---|
query mancante, vuoto, solo spazi vuoti o più lungo di 1000 caratteri |
HandlerInvalidInput |
400 | Input non valido specificato. Controllare i parametri della richiesta. |
Un'applicazione senza richieste textdi accesso completo ai documenti , htmlo markdown |
AuthContentFormatForbidden |
403 | Questa applicazione ha accesso solo ai passaggi. Usare contentFormat 'passage'. |
Tutti gli altri risultati sfoglia per le richieste di passaggio usano gli stessi codici di stato e codici di errore delle textrichieste , htmle markdown . Inclusi pagine filtrate, documenti non trovati, ricerca per indicizzazione in sospeso (202 Accepted) e errori di ricerca per indicizzazione.
Errori del servizio e dell'infrastruttura
| Codice di errore | Stato HTTP | Category | Riprovabile | Description |
|---|---|---|---|---|
InternalServerError |
500 | SystemError |
Sì (30 anni) | Errore interno del server. |
Scenari di errore comuni
Errori di autenticazione (401, 403)
Sintomo: Autenticazione non riuscita o accesso negato
Soluzioni:
- Verificare che la chiave API sia corretta e inclusa nell'intestazione
x-apikey - Verificare che la chiave API non sia scaduta
- Assicurarsi di disporre delle autorizzazioni necessarie per l'endpoint
- Se i problemi persistono, contattare il rappresentante Microsoft
Esempio:
# 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"}'
Limitazione della frequenza (429)
Sintomo: Limite di velocità superato o quota giornaliera esaurita (AuthUserThrottled o AuthUserDailyUsageExceeded)
Le richieste al di sopra del limite di velocità di AppID restituiscono HTTP 429. Il limite di velocità viene visualizzato nel portale IQ Web.
Soluzioni:
- Implementare la logica di ripetizione con backoff esponenziale
- Attendere l'intervallo
retryAfternella risposta di errore (ad esempio,"60s") prima di riprovare - Ridurre la frequenza delle richieste
- Si noti che i limiti di quota giornaliera (
AuthUserDailyUsageExceeded) vengono reimpostati ogni giorno alle 00:00 UTC - Per richiedere un limite superiore, contattare il supporto di IQ Web
Risposta di esempio:
{
"errorCode": "AuthUserThrottled",
"errorCategory": "UserError",
"userMessage": "Rate limit exceeded. Please reduce your request frequency.",
"retryAfter": "60s",
"requestId": "req_123",
"traceId": "trace_456"
}
Parametri non validi (400)
Sintomo: Richiesta non valida a causa di parametri non validi
Problemi comuni:
- Campi obbligatori mancanti (ad esempio,
queryparametro) - Valori dei parametri non compresi nell'intervallo (ad esempio,
maxResults> 50) - Tipi di parametro non validi ,ad esempio stringa anziché integer
- Valori dei parametri non supportati (ad esempio, non validi
contentFormat)
Soluzioni:
- Verificare che siano presenti tutti i parametri obbligatori
- Controllare i valori dei parametri in base ai vincoli documentati
- Assicurarsi che la formattazione JSON sia corretta
Errori del server e dell'infrastruttura (500)
Sintomo: Errore imprevisto del server interno o del servizio upstream (InternalServerError)
Soluzioni:
- Controllare il
retryAftercampo (il valore predefinito è"30s") e ripetere la richiesta dopo l'attesa - Implementare nuovi tentativi con backoff esponenziale e jitter
- Se il problema persiste, contattare Microsoft supporto tecnico fornito
traceIdnella risposta
Risposta di esempio:
{
"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"
}
Sfoglia la risposta accettata dall'API (202)
Sintomo: Risposta accettata (202) con url e retryAfter campi nel corpo della risposta
Spiegazione: Quando liveCrawl è "fallback" e l'URL non viene trovato nell'indice, l'API può avviare una ricerca per indicizzazione in modo asincrono e restituire 202 Accettato. La ricerca per indicizzazione in tempo reale è soggetta a restrizioni e disponibilità dell'editore; "fallback" non garantisce una ricerca per indicizzazione effettiva. Lo stesso comportamento si applica a ogni contentFormat, incluso passage.
Manipolazione:
- Verificare lo stato HTTP 202.
- Leggere
retryAfterdal corpo della risposta. Si tratta di un timestamp UTC ISO 8601 (ad esempio,"2026-10-30T01:01:00Z") che è la prima volta per riprovare. - Aspetta fino a quel momento.
- Inviare di nuovo la stessa richiesta. Il
urlcampo contiene l'URL da richiedere. Il valore predefinito è l'URL richiesto. - Limitare il numero di tentativi di polling. Una ricerca per indicizzazione che non può essere completata restituisce un errore, ad esempio
HostCrawlTimeout(524) oFailedNoContent(520).
# 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", "contentFormat": "passage", "query": "information about this domain", "liveCrawl": "fallback"}'
# Example response when the URL isn't indexed: 202 Accepted with "retryAfter": "2026-10-30T01:01:00Z"
# Wait until that time, then send the same request again
Procedure consigliate
- Controllare sempre i codici di stato - Non presupporre l'esito positivo
- Usare traceId per il supporto - Includere traceId quando si contatta il supporto tecnico
- Implementare la logica di ripetizione dei tentativi - Usare il backoff esponenziale per gli errori temporanei
-
Gestire le risposte 202 : per l'API Sfoglia con ricerca per indicizzazione in tempo reale, attendere fino al
retryAftermomento e riprovare -
Gestire entrambi i
retryAfterformati : usare la durata perAuthUserThrottled,AuthUserDailyUsageExceededeInternalServerErrore il timestamp ISO 8601 per Browse 202 e gli errori granulari, tra cuiTooManyOnDemandCrawls(429) - Convalida prima dell'invio - Controllare i parametri in locale per evitare 400 errori
- Usare solo HTTPS : le richieste HTTP restituiranno errori 410