Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Toutes les API v3 retournent des réponses d’erreur standardisées pour vous aider à diagnostiquer et résoudre rapidement les problèmes. Cette section traite des codes d’état HTTP, de la structure de réponse aux erreurs et des scénarios de résolution des problèmes courants.
Note
Toutes les valeurs d’énumération de chaîne ne respectent pas la casse.
Codes d’état HTTP
| Code de statut | S’applique à | Catégorie d’erreur | Description | Causes courantes |
|---|---|---|---|---|
| 200 | Toutes les API | Success | La demande a abouti. | - |
| 202 | Parcourir uniquement | Accepté | Demande acceptée pour le traitement (analyse dynamique). | Analyse à la demande en cours |
| 400 | Toutes les API | Demande incorrecte | Paramètres de requête non valides. | Champs obligatoires manquants, valeurs de paramètre non valides, JSON mal formé |
| 401 | Toutes les API | Unauthorized | Échec ou absence de l’authentification. | Clé API non valide, en-tête x-apikey manquant |
| 403 | Toutes les API | Interdit | Informations d’identification valides, mais autorisations insuffisantes. | La clé API ne dispose pas des autorisations requises |
| 403 | Parcourir uniquement | Interdit | Contenu filtré ou URL exclu. | URL bloquée par stratégie ou contenu filtré |
| 404 | Parcourir uniquement | Introuvable | Document introuvable. | URL non valide ou inaccessible |
| 410 | Toutes les API | Non disponible (Gone) | HTTPS requis. | Requête effectuée sur HTTP au lieu de HTTPS |
| 415 | Toutes les API | Type de média non pris en charge | Type de contenu non pris en charge. | En-tête manquant ou incorrect content-type |
| 429 | Toutes les API | Trop de demandes | Limite de débit dépassée. | Trop de requêtes dans la fenêtre de temps |
| 430 | Parcourir uniquement | Erreur du serveur | Trop d’analyses à la demande. | Demandes d’analyse dynamique excessives |
| 500 | Toutes les API | Erreur interne du serveur | Erreur de serveur inattendue. | Problème de serveur temporaire |
Structure de la réponse d’erreur
Toutes les réponses d’erreur suivent ce schéma :
| Champ | Type | Description |
|---|---|---|
errorCode |
string | Catégorie d’erreur plus détaillée qui permet d’identifier le type d’erreur. |
errorCategory |
string | Catégorie de haut niveau : UserError (côté client / non retenable) ou SystemError (côté serveur / retentable). |
userMessage |
string | Description lisible de l’erreur. |
technicalDetails |
chaîne (facultatif) | Informations techniques supplémentaires ou détails de validation des paramètres pour le débogage. |
retryAfter |
chaîne (facultatif) | Délai d’attente avant de réessayer. |
requestId |
chaîne (facultatif) | Identificateur unique de la requête. |
traceId |
string | ID de trace distribué pour le débogage et Microsoft prise en charge. |
Note
202 Accepted Les réponses (par exemple, Parcourir l’interrogation d’analyse dynamique) ne sont pas des réponses d’erreur et n’utilisent pas le schéma d’erreur ci-dessus. Ils peuvent toujours inclure une retryAfter valeur pour indiquer quand réessayer la demande.
Exemple de réponse d’erreur :
{
"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"
}
Informations de référence sur les codes d’erreur
Erreurs de validation de requête
| Code d’erreur | État HTTP | Category | Description |
|---|---|---|---|
RequestInvalidFormat |
400 | UserError |
Corps JSON mal formé ou structure de charge utile de requête non valide. |
RequestInvalidMethod |
400 | UserError |
Nom de méthode ou d’outil non valide spécifié dans la requête. |
HandlerInvalidInput |
400 | UserError |
Valeurs de paramètre d’entrée non valides (par exemple, requête vide, maxResults hors plage [1, 50], valeurs d’énumération non valides). |
RequestBlockedHeader |
400 | UserError |
La requête contient un en-tête de débogage/variant bloqué (par exemple, , X-AugmentationsX-DebugOptions, X-XapHostOverride). Utilisez les paramètres d’URL documentés (?p1=, ?debugoptions=, ?atlahostname=) à la place. |
RequestUnsupportedMediaType |
415 | UserError |
L’en-tête content-type est manquant ou non application/json. |
MethodNotAllowed |
405 | UserError |
Méthode HTTP non autorisée sur l’itinéraire (par exemple, GET sur un point de terminaison POST uniquement). |
Erreurs d’authentification et d’autorisation
| Code d’erreur | État HTTP | Category | Description |
|---|---|---|---|
AuthNoToken |
401 | UserError |
Authentification requise. Aucun jeton du porteur ni clé API fournie. |
AuthTokenParse |
401 | UserError |
Échec de l’analyse du jeton d’authentification ou du format de jeton d’authentification non valide. |
AuthInvalidApiKey |
401 | UserError |
La clé API fournie n’est pas valide ou n’est pas reconnue. |
AuthenticationFailed |
401 | UserError |
Échec général de l’authentification. |
AuthExpiredTrial |
401 | UserError |
La période d’essai a expiré. Mettez à niveau votre clé. |
AuthMissingEntryId |
400 | UserError |
Identité de l’application manquante / ID d’entrée dans le contexte de la demande. |
AuthAppIdSelectionRequired |
400 | UserError |
Votre identité est mappée à plusieurs applications. Spécifiez l’application cible à l’aide du APPID paramètre de requête. Voir Appeler plusieurs AppID. |
AuthUnauthorizedEntryId |
401 | UserError |
ID d’entrée non autorisé. L’identité de l’application n’a pas pu être résolue ou le paramètre de requête a été envoyé avec l’authentification APPID par clé API. |
AuthUnauthorizedAppId |
403 | UserError |
La valeur spécifiée APPID n’est pas associée à votre identité. |
AuthUnauthorizedService |
403 | UserError |
L’appelant est authentifié mais non autorisé à accéder au service/vertical demandé. |
AuthBatchEndpointRequired |
403 | UserError |
L’application est nécessaire pour utiliser le point de terminaison de lot (X-FD-Batch: 1) pour la recherche web. |
AuthMcpWebForbidden |
403 | UserError |
L’application n’est pas autorisée à utiliser l’outil MCP web . |
AuthContentFormatForbidden |
403 | UserError |
Cette application a uniquement accès aux passages. Utiliser contentFormatpassage. Consultez passages et formats de contenu. |
Erreurs de limitation de débit
| Code d’erreur | État HTTP | Category | Description |
|---|---|---|---|
AuthUserThrottled |
429 | UserError |
La fréquence des requêtes dépasse la limite de débit de votre ressource. Vérifiez retryAfter. |
AuthUserDailyUsageExceeded |
429 | UserError |
Le quota de demandes quotidiennes a été atteint (réinitialise à 00:00 UTC). Vérifiez retryAfter. |
Parcourir les erreurs spécifiques à l’API
| Code d’erreur | État HTTP | Category | Description |
|---|---|---|---|
BrowseApiDocNotFound |
404 | UserError |
Document introuvable. Aucun contenu disponible pour l’URL spécifiée. |
BrowseApiIsFilteredOut |
403 | UserError |
Le résultat a été supprimé en raison du filtrage de stratégie ou de contenu. |
BrowseApiIsUrlExcluded |
403 | UserError |
L’URL cible est exclue ou non autorisée par la stratégie. |
BrowseApiTooManyOnDemandCrawls |
430 | UserError |
Trop de demandes d’analyse dynamique à la demande en cours. |
Erreurs de service et d’infrastructure
| Code d’erreur | État HTTP | Category | Réessayable | Description |
|---|---|---|---|---|
InternalServerError |
500 | SystemError |
Oui (30s) | Erreur interne du serveur. |
Scénarios d’erreurs courants
Erreurs d’authentification (401, 403)
Symptôme : Échec de l’authentification ou accès interdit
Solutions :
- Vérifiez que votre clé API est correcte et incluse dans l’en-tête
x-apikey - Vérifiez que votre clé API n’a pas expiré
- Vérifiez que vous disposez des autorisations requises pour le point de terminaison
- Contactez votre représentant Microsoft si les problèmes persistent
Exemple :
# 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"}'
Limitation du débit (429)
Symptôme : Limite de débit dépassée ou quota quotidien épuisé (AuthUserThrottled ou AuthUserDailyUsageExceeded)
Les requêtes au-dessus de la limite de débit de votre ressource retournent HTTP 429. Votre limite de taux s’affiche dans le portail Web IQ.
Solutions :
- Implémenter une logique de nouvelle tentative avec temporisation exponentielle
- Attendez l’intervalle dans la
retryAfterréponse d’erreur (par exemple,"60s") avant de réessayer - Réduire la fréquence des demandes
- Notez que les limites de quota quotidiennes (
AuthUserDailyUsageExceeded) sont réinitialisées quotidiennement à 00:00 UTC - Pour demander une limite plus élevée, contactez le support web IQ
Exemple de réponse :
{
"errorCode": "AuthUserThrottled",
"errorCategory": "UserError",
"userMessage": "Rate limit exceeded. Please reduce your request frequency.",
"retryAfter": "60s",
"requestId": "req_123",
"traceId": "trace_456"
}
Paramètres non valides (400)
Symptôme : Demande incorrecte en raison de paramètres non valides
Problèmes courants
- Champs obligatoires manquants (par exemple,
queryparamètre) - Valeurs des paramètres hors plage (par exemple,
maxResults> 50) - Types de paramètres non valides (par exemple, chaîne au lieu d’entier)
- Valeurs de paramètre non prises en charge (par exemple, non valides
contentFormat)
Solutions :
- Valider tous les paramètres requis sont présents
- Vérifier les valeurs des paramètres par rapport aux contraintes documentées
- Garantir une mise en forme JSON appropriée
Erreurs de serveur et d’infrastructure (500)
Symptôme : Erreur inattendue du serveur interne ou du service en amont (InternalServerError)
Solutions :
- Vérifiez le
retryAfterchamp (par défaut"30s") et réessayez la requête après avoir attendu - Implémenter une stratégie de nouvelle tentative avec temporisation exponentielle et gigue
- Si le problème persiste, contactez Microsoft support avec le
traceIdsupport fourni dans la réponse
Exemple de réponse :
{
"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"
}
Parcourir la réponse acceptée par l’API (202)
Symptôme : Réponse acceptée avec retryAfter le champ
Explication : Lorsqu’elle liveCrawl est définie sur « secours » et que l’URL doit être analysée, l’API retourne 202 Accepté avec une retryAfter valeur indiquant quand réessayer la requête.
Gestion :
# 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
Bonnes pratiques
- Toujours vérifier les codes d’état - Ne supposez pas la réussite
- Utiliser traceId pour la prise en charge - Inclure traceId lors du contact avec le support technique
- Implémenter une logique de nouvelle tentative - Utiliser une interruption exponentielle pour les erreurs temporaires
- Gérer les réponses 202 : pour l’API Parcourir avec analyse dynamique, attente et nouvelle tentative
- Valider avant l’envoi - Vérifier les paramètres localement pour éviter 400 erreurs
- Utiliser HTTPS uniquement - Les requêtes HTTP retournent 410 erreurs