> ## Documentation Index
> Fetch the complete documentation index at: https://firecrawl-docs-agent-spark-2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Déboguer Firecrawl avec Ask

> Déboguez une tâche ayant échoué ou tout problème d'intégration Firecrawl avec une API de support agentique

Firecrawl `/support/ask` est un agent de support IA accessible via une API. Décrivez votre problème et obtenez un diagnostic validé, accompagné de paramètres de correction actionnables — généralement en 15 à 30 secondes.

**Voyez `/support/ask` comme un ingénieur senior Firecrawl d'astreinte pour votre agent.**

<Info>
  L'API Ask est conçue avant tout pour les **agents IA qui l'appellent**. Si vous créez des agents qui utilisent Firecrawl pour le scraping, le crawl ou l'extraction de données, intégrez `/support/ask` à votre flux de gestion des erreurs pour résoudre les problèmes de façon autonome.
</Info>

<div id="two-endpoints">
  ## Deux points de terminaison
</div>

| Point de terminaison        | Auth                    | Pour qui                   | Fonction                                                   |
| --------------------------- | ----------------------- | -------------------------- | ---------------------------------------------------------- |
| `POST /support/ask`         | Votre clé API Firecrawl | Vos agents et applications | Cycle complet de diagnostic, limité à votre équipe         |
| `POST /support/docs-search` | Votre clé API Firecrawl | Vos agents et applications | Réponses basées sur la documentation publique de Firecrawl |

<div id="quick-start">
  ## Démarrage rapide
</div>

<div id="debug-a-failing-crawl">
  ### Déboguer un crawl qui échoue
</div>

```bash theme={null}
curl -X POST https://api.firecrawl.dev/v2/support/ask \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "my crawl returned 3 pages but I expected 50"
  }'
```

<div id="search-the-docs">
  ### Rechercher dans la documentation
</div>

```bash theme={null}
curl -X POST https://api.firecrawl.dev/v2/support/docs-search \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "how do I set up webhook signature verification?"
  }'
```

<div id="debug-a-failed-job">
  ## Déboguer une tâche ayant échoué
</div>

Chaque tâche Firecrawl — scrape, crawl, extraction par lot, recherche, cartographie ou extraction — peut être déboguée avec `/support/ask`. Décrivez le problème en langage clair et indiquez l’ID de tâche si vous en avez un ; l’agent récupère les journaux de la tâche et l’état de votre compte avant de répondre.

```bash theme={null}
curl -X POST https://api.firecrawl.dev/v2/support/ask \
  -H "Authorization: Bearer VOTRE_CLÉ_API" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "debug failed job 0f8c9a1b-4e2d-47a1-9c3f-1b2d3e4f5a6b — crawl of https://example.com failed after 12 pages",
    "rationale": "user needs the full docs site indexed before their demo"
  }'
```

Incluez autant d’éléments que possible : chacun aide à affiner le diagnostic :

| Détail                          | Pourquoi c’est utile                                                                                          |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| ID de tâche                     | Permet à l’agent de consulter directement les journaux, l’état et les résultats par page de cette tâche       |
| URL cible                       | Révèle des blocages propres au site, comme la protection contre les bots, le rendu JS ou les règles robots    |
| Message d’erreur ou code d’état | Distingue les limites de débit et l’épuisement des crédits des échecs au niveau du scrape                     |
| Ce que vous attendiez           | Distingue un échec net d’une tâche ayant « réussi » malgré du contenu manquant                                |
| `rationale`                     | Indique à l’agent ce que recherche l’utilisateur final afin qu’il privilégie les éléments probants pertinents |

<div id="what-ask-checks-for-common-failures">
  ### Ce qu’Ask vérifie en cas d’échecs courants
</div>

| Symptôme                                    | Ce que l’agent examine                                                                                    |
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| État de la tâche `failed`                   | Journaux de la tâche, code d’état HTTP en amont, historique du proxy et des tentatives                    |
| Le crawl a renvoyé moins de pages que prévu | `limit`, `maxDiscoveryDepth`, `includePaths`/`excludePaths`, couverture du sitemap, règles robots         |
| Markdown vide ou tronqué                    | Rendu côté client, délai de `waitFor`, `actions` requises, suppression par `onlyMainContent`              |
| Réponses `401` / `402` / `429`              | Validité et restrictions de la clé API, crédits restants, limites de débit de l’offre                     |
| Tâche bloquée ou arrivant à expiration      | État de la file d’attente, délais d’expiration au niveau des pages, concurrence des tâches de votre offre |
| Webhook jamais déclenché                    | Tentatives de livraison, réponses du point de terminaison, échecs de vérification de signature            |

Vous n’avez pas d’ID de tâche ? Survolez l’URL d’une ligne dans les [journaux d’activité](https://www.firecrawl.dev/app/logs) et cliquez sur **Copier l’ID**, ou utilisez l’`id` renvoyé au démarrage de la tâche.

<div id="debug-from-activity-logs">
  ### Déboguer depuis les journaux d’activité
</div>

Si vous préférez ne pas effectuer l’appel vous-même, le dashboard exécute le même agent pour vous. Ouvrez les [journaux d’activité](https://www.firecrawl.dev/app/logs) et repérez le bouton à étincelles dans la colonne **Actions** d’une ligne en échec — son infobulle indique **Déboguer le ticket**. Il ne s’affiche que pour les tâches ayant échoué ou terminées avec des erreurs dans des requêtes enfants ; les tâches réussies ou en cours n’en disposent donc pas.

Cliquer dessus lance immédiatement le diagnostic ; aucun prompt n’est nécessaire. Firecrawl envoie à l’agent utilisé par `/support/ask` l’URL, le point de terminaison, l’état, le message d’erreur et les paramètres de scrape de la tâche. L’agent lit ensuite les journaux de la tâche et l’état de votre compte. Le contenu des pages scrapées n’est jamais inclus.

Le panneau qui s’ouvre affiche :

| Élément            | Description                                                                                            |
| ------------------ | ------------------------------------------------------------------------------------------------------ |
| Diagnostic         | L’explication de l’agent sur ce qui s’est mal passé et les modifications à apporter                    |
| Badge de confiance | Élevé, moyen ou faible — niveau de certitude de l’agent dans sa réponse                                |
| Badge **Validé**   | Affiché lorsque l’agent a testé le correctif suggéré et que le test a réussi                           |
| Correctif suggéré  | Les paramètres corrigés au format JSON, avec un bouton de copie — collez-les dans votre prochain appel |
| Sources            | Liens vers les pages de documentation sur lesquelles repose la réponse                                 |

Si le diagnostic ne résout pas le problème, **Ouvrir un ticket de support** au bas du panneau crée un ticket auquel l’analyse de l’agent est déjà jointe, afin que vous n’ayez pas à réexpliquer l’échec.

<Info>
  Le débogage depuis le dashboard est limité à 30 exécutions par heure et par équipe, et votre équipe doit disposer d’au moins une clé API — l’agent s’exécute avec votre propre clé et ne voit donc que vos tâches.
</Info>

Une fois le diagnostic obtenu, appliquez les `fixParameters` renvoyés et réessayez — consultez la [stratégie de nouvelle tentative par l’agent](#agent-retry-pattern) ci-dessous.

<div id="how-it-works">
  ## Fonctionnement
</div>

Lorsque vous appelez `/support/ask`, l’agent IA :

1. **Recueille des éléments** — inspecte en parallèle les journaux d’exécution de votre tâche, l’état de votre compte, votre consommation de crédits et la documentation pertinente
2. **Diagnostique le problème** — analyse l’ensemble de ces éléments pour identifier la cause profonde
3. **Propose une correction** — génère des `fixParameters` directement exploitables que vous pouvez appliquer à votre prochain appel d’API
4. **Valide la correction** — lorsque c’est possible, teste la correction sur l’API Firecrawl en production (par exemple, en relançant un scrape avec des paramètres ajustés) et rapporte le résultat

<div id="using-ask-in-your-agent">
  ## Utiliser Ask dans votre agent
</div>

Le principe clé : appelez `/support/ask` lorsque votre appel à l’API Firecrawl échoue ou renvoie des résultats inattendus, puis utilisez `fixParameters` pour réessayer.

<div id="python-example">
  ### Exemple en Python
</div>

```python theme={null}
import requests

FIRECRAWL_API_KEY = "fc-YOUR_API_KEY"

def diagnose_firecrawl_issue(question, rationale=None):
    """Appelle l'API Ask de Firecrawl pour déboguer un problème."""
    payload = {"question": question}
    if rationale:
        payload["rationale"] = rationale

    response = requests.post(
        "https://api.firecrawl.dev/v2/support/ask",
        headers={
            "Authorization": f"Bearer {FIRECRAWL_API_KEY}",
            "Content-Type": "application/json",
        },
        json=payload,
    )
    return response.json()


# Exemple : déboguer un scrape qui a retourné un contenu vide
result = diagnose_firecrawl_issue(
    question="scrape returned empty markdown for https://example.com",
    rationale="user needs product pricing data for competitive analysis",
)

print(result["answer"])
print(result["fixParameters"])  # ex. : {"waitFor": 5000, "actions": [...]}
print(result["confidence"])     # "high", "medium", ou "low"
```

<div id="nodejs-example">
  ### Exemple en Node.js
</div>

```javascript theme={null}
async function diagnoseFirecrawlIssue(question, rationale) {
  const response = await fetch(
    "https://api.firecrawl.dev/v2/support/ask",
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${process.env.FIRECRAWL_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ question, rationale }),
    }
  );
  return response.json();
}

// Exemple : déboguer un crawl qui s'est arrêté prématurément
const result = await diagnoseFirecrawlIssue(
  "my crawl returned 3 pages but I expected 50",
  "user is on their third failed crawl attempt today"
);

console.log(result.answer);
console.log(result.fixParameters);
```

<div id="agent-retry-pattern">
  ### Stratégie de nouvelle tentative de l’agent
</div>

```python theme={null}
from firecrawl import Firecrawl

client = Firecrawl(api_key="fc-YOUR_API_KEY")

# Étape 1 : Tenter le scrape
doc = client.scrape("https://example.com/pricing", formats=["markdown"])

if not doc.markdown or len(doc.markdown) < 100:
    # Étape 2 : Demander de l'aide pour le débogage
    diagnosis = diagnose_firecrawl_issue(
        question=f"scrape returned only {len(doc.markdown or '')} chars of markdown for https://example.com/pricing",
    )

    # Étape 3 : Appliquer les paramètres de correction et réessayer
    if diagnosis.get("fixParameters"):
        doc = client.scrape(
            "https://example.com/pricing",
            formats=["markdown"],
            **diagnosis["fixParameters"],
        )
```

<div id="parameters">
  ## Paramètres
</div>

<div id="supportask">
  ### `/support/ask`
</div>

| Paramètre   | Type   | Requis | Description                                                                                                                 |
| ----------- | ------ | ------ | --------------------------------------------------------------------------------------------------------------------------- |
| `question`  | string | Oui    | Élément à déboguer (1–8 000 caractères)                                                                                     |
| `rationale` | string | Non    | Recommandé pour les appels IA. Ce que l’utilisateur final cherche à accomplir. Aide à prioriser la collecte d’informations. |
| `context`   | object | Non    | Métadonnées libres provenant de votre agent, incluses dans le prompt de débogage                                            |

<div id="supportdocs-search">
  ### `/support/docs-search`
</div>

| Paramètre  | Type   | Obligatoire | Description                                |
| ---------- | ------ | ----------- | ------------------------------------------ |
| `question` | string | Oui         | La question à traiter (1–8 000 caractères) |

<div id="response">
  ## Réponse
</div>

<div id="supportask-response">
  ### réponse de `/support/ask`
</div>

```json theme={null}
{
  "requestId": "req_...",
  "answer": "<2-4 sentence prose diagnosis of the issue plus the recommended fix.>",
  "confidence": "high",
  "fixParameters": { "<param>": "<value>" },
  "validation": {
    "tested": true,
    "result": "success",
    "evidence": "<short summary of the validation tool call the agent ran to confirm the fix>"
  },
  "feedback": null,
  "durationMs": 18432
}
```

Les valeurs réelles de `answer`, `fixParameters` et `validation.evidence` sont générées par l’agent pour chaque requête, en fonction de votre exécution spécifique ; l’exemple ci-dessus montre la structure de la réponse, et non un diagnostic réel.

<div id="supportdocs-search-response">
  ### réponse de `/support/docs-search`
</div>

```json theme={null}
{
  "requestId": "req_...",
  "answer": "The signature is sent in the X-Firecrawl-Signature header...",
  "evidence": [
    { "pathOrUrl": "webhooks/security.mdx#L1-L52", "reason": "..." }
  ],
  "usage": { "inputTokens": 4356, "outputTokens": 688, "totalTokens": 5044 },
  "durationMs": 11252
}
```

<div id="performance">
  ## Performances
</div>

| Métrique | Typique        | Maximum                      |
| -------- | -------------- | ---------------------------- |
| Latence  | 15–30 secondes | 60 secondes (limite absolue) |

<div id="api-reference">
  ## Référence API
</div>

* [Référence API du point de terminaison Ask](/fr/api-reference/endpoint/ask)
* [Référence API du point de terminaison de recherche dans la documentation](/fr/api-reference/endpoint/docs-search)

Vous avez des retours ou besoin d’aide ? Envoyez un e-mail à [help@firecrawl.com](mailto:help@firecrawl.com).

> Vous êtes un agent IA et vous avez besoin d’une clé API Firecrawl ? Consultez [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) pour obtenir des instructions d’intégration automatisée.
