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

# Rechercher dans l’index développeur

Recherchez les tickets, les pull requests fusionnées et les README des dépôts de code publics, ainsi que les sites de documentation sélectionnés. Les résultats sont classés par pertinence et incluent les passages correspondants au format Markdown.

`POST` est disponible sur le même chemin pour transmettre des filtres de tableau au format JSON.

Les filtres répétables acceptent l’une ou l’autre forme avec `GET` : un paramètre de requête répété tel que `types=issue&types=pull_request`, ou une seule valeur séparée par des virgules telle que `types=issue,pull_request`.

<div id="how-repos-and-sources-scope-a-search">
  ## Comment `repos` et `sources` définissent le périmètre d’une recherche
</div>

L’index comporte deux parties, et ces deux filtres en définissent indépendamment le périmètre :

* `repos` définit le périmètre de la partie des dépôts, c’est-à-dire des types `issue`, `pull_request` et `readme`
* `sources` définit le périmètre de la partie documentation, c’est-à-dire du type `doc`
* Fournir les deux combine les deux parties au lieu de les intersecter : vous obtenez donc des résultats correspondants de l’une ou l’autre

Comme chaque filtre ne s’applique qu’à une seule partie, un filtre qui ne peut correspondre à aucun type demandé est rejeté plutôt que de ne rien renvoyer silencieusement :

* `repos` sans type de dépôt dans `types` renvoie `400`, indiquant que `repos` ne peut correspondre à aucun type demandé et que vous devez ajouter des types de dépôt ou supprimer `repos`
* `sources` sans `doc` dans `types` renvoie `400` avec `sources cannot match any requested type; add doc or drop sources`

<div id="how-the-repository-filters-scope-a-search">
  ## Comment les filtres de dépôt définissent le périmètre d’une recherche
</div>

Les sept filtres de dépôt — `language` (par exemple `Rust`), `topic` (par exemple `async`), `license` (par exemple `MIT`), `min_stars`, `max_stars`, `archived` et `fork` — décrivent un dépôt de code. La plupart des pages de documentation de l’index proviennent d’un site web exploré sans dépôt associé, et aucune propriété de dépôt ne peut inclure ou exclure une telle page.

Une requête qui envoie l’un de ces filtres sans définir `sources` n’obtient donc aucun résultat `doc`. Sa réponse ne contient que des éléments du dépôt : les types `issue`, `pull_request` et `readme`. La cartographie `coverage` indique que `doc` est `unavailable`, car la partie documentation de l’index n’a jamais été interrogée. C’est le comportement prévu, et non un problème d’indexation.

Pour conserver les résultats de documentation, supprimez les filtres de dépôt. Vous pouvez également définir le périmètre de la partie documentation avec `sources`, puis consulter `coverage` pour confirmer que le type `doc` a répondu.

<CodeGroup>
  ```bash cURL theme={null}
  # Aucune clé API n’est nécessaire pour démarrer ; ajoutez -H "Authorization: Bearer $FIRECRAWL_API_KEY" pour des limites de débit plus élevées :
  curl -s "https://api.firecrawl.dev/v2/search/developer?query=how%20do%20I%20configure%20retries&k=10&language=Rust&license=MIT"
  ```

  ```bash cURL (POST) theme={null}
  curl -X POST https://api.firecrawl.dev/v2/search/developer \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "query": "how do I configure retries",
      "k": 10,
      "types": ["issue", "pull_request"],
      "language": "Rust",
      "license": "MIT"
    }'
  ```
</CodeGroup>

<div id="which-values-sources-accepts">
  ## Valeurs acceptées par `sources`
</div>

`sources` n’est pas un enum fixe. Il accepte des identifiants de sources de documentation : chacun est une chaîne non vide de 512 caractères maximum, avec une limite de 20 par requête. Les identifiants correspondent aux sites de documentation présents dans l’index, et cette liste s’étoffe au fil du temps.

Pour vérifier qu’un identifiant est résolu, transmettez-le et consultez le tableau `sources` ajouté à la réponse. Il n’apparaît que si vous avez envoyé `sources` et indique chaque identifiant exactement tel que vous l’avez demandé, ainsi que son statut d’indexation :

```json theme={null}
{
  "success": true,
  "results": [],
  "sources": [
    { "source": "some-docs-site", "indexed": true },
    { "source": "unknown-docs-site", "indexed": false }
  ]
}
```

`indexed: true` signifie que la source possède une génération publiée et que des éléments de preuve issus de sa documentation peuvent donc apparaître. `indexed: false` signifie qu’aucun élément associé à cet identifiant ne peut correspondre, ce qui permet de distinguer un identifiant absent de l’index d’une requête qui n’a tout simplement rien trouvé.

`repos` est renvoyé de la même façon, sous la forme d’un tableau `repos` indiquant `indexed` et une répartition par type sous `types` :

```json theme={null}
{
  "success": true,
  "results": [],
  "repos": [
    {
      "repo": "firecrawl/firecrawl",
      "indexed": true,
      "types": { "issue": true, "pullRequest": true, "readme": true }
    }
  ]
}
```

<div id="reading-coverage">
  ## Interpréter `coverage`
</div>

`coverage` indique l’état de chaque type de résultat : `ok`, `degraded`, `unavailable` ou `skipped`. Vérifiez-le lorsqu’un type de résultat attendu est absent :

* `skipped` signifie que votre valeur `types` ne demandait pas ce type
* `degraded` ou `unavailable` signifie que l’absence est due à l’index ou à un filtre, et non à la requête. Un filtre de dépôt peut notamment en être la cause, comme l’explique [la manière dont les filtres de dépôt définissent le périmètre d’une recherche](#how-the-repository-filters-scope-a-search)

Pour une vue d’ensemble du workflow, consultez le [guide index développeur](/fr/features/developer).


## OpenAPI

````yaml fr/api-reference/v2-openapi.json GET /search/developer
openapi: 3.0.0
info:
  contact:
    email: support@firecrawl.dev
    name: Firecrawl Support
    url: https://firecrawl.dev/support
  description: >-
    API pour interagir avec les services Firecrawl afin d’effectuer des tâches
    de scraping et de crawling web.
  title: Firecrawl API
  version: v2
servers:
  - url: https://api.firecrawl.dev/v2
security:
  - bearerAuth: []
paths:
  /search/developer:
    get:
      tags:
        - Developer
      summary: Rechercher dans l’index pour développeurs
      operationId: developerSearch
      parameters:
        - description: Question en langage naturel ou expression de recherche.
          in: query
          name: query
          required: true
          schema:
            minLength: 1
            type: string
        - description: Nombre de résultats classés à renvoyer.
          in: query
          name: k
          required: false
          schema:
            default: 10
            maximum: 100
            minimum: 1
            type: integer
        - description: >-
            Types de résultats dans lesquels effectuer la recherche. Les quatre
            types sont inclus par défaut. Accepte un paramètre répété
            (`types=issue&types=pull_request`) ou une valeur séparée par des
            virgules (`types=issue,pull_request`).
          in: query
          name: types
          required: false
          schema:
            items:
              enum:
                - doc
                - issue
                - pull_request
                - readme
              type: string
            type: array
        - description: >-
            Slugs de dépôt permettant de limiter la partie de l’index consacrée
            aux dépôts, par exemple `firecrawl/firecrawl`. S’applique uniquement
            aux types `issue`, `pull_request` et `readme`. Envoyées avec
            `sources`, les deux parties sont combinées plutôt qu’intersectées,
            de sorte que les résultats correspondants proviennent de l’une ou
            l’autre. Renvoie une erreur 400 lorsqu’aucun type de dépôt ne figure
            dans `types`, indiquant que `repos` ne peut correspondre à aucun
            type demandé et que vous devez ajouter des types de dépôt ou retirer
            `repos`.
          in: query
          name: repos
          required: false
          schema:
            items:
              type: string
            type: array
        - description: "Identifiants de source de documentation permettant de limiter la partie documentation, dans la limite de 20. S’applique uniquement au type `doc`. Il ne s’agit pas d’une énumération fixe\_: les identifiants reflètent les sites de documentation de l’index et l’ensemble s’enrichit au fil du temps. Vérifiez donc qu’un identifiant est résolu en l’envoyant et en lisant le tableau `sources` dans la réponse. Renvoie 400 avec `sources cannot match any requested type; add doc or drop sources` lorsque `doc` ne figure pas dans `types`."
          in: query
          name: sources
          required: false
          schema:
            items:
              maxLength: 512
              minLength: 1
              type: string
            maxItems: 20
            type: array
        - description: >-
            Définissez la valeur sur `only` pour limiter la recherche aux
            fichiers de compétences d’agent indexés.
          in: query
          name: skills
          required: false
          schema:
            enum:
              - only
            type: string
        - description: Passages correspondants à renvoyer par résultat.
          in: query
          name: passages
          required: false
          schema:
            default: 1
            maximum: 5
            minimum: 1
            type: integer
        - description: "Langage principal du dépôt, tel que `Rust`. S’applique uniquement aux résultats de dépôt\_; l’envoyer sans définir le périmètre `sources` ne renvoie aucun résultat `doc`. Consultez [comment les filtres de dépôt définissent le périmètre d’une recherche](/api-reference/endpoint/developer-search#how-the-repository-filters-scope-a-search)."
          in: query
          name: language
          required: false
          schema:
            example: Rust
            type: string
        - description: "Thème du dépôt, tel que `async`. S’applique uniquement aux résultats de dépôt\_; l’envoi sans périmètre `sources` ne renvoie aucun résultat `doc`."
          in: query
          name: topic
          required: false
          schema:
            example: async
            type: string
        - description: "Licence du dépôt, telle que `MIT`. S’applique uniquement aux résultats de dépôt\_; l’envoi sans périmètre `sources` ne renvoie aucun résultat `doc`."
          in: query
          name: license
          required: false
          schema:
            example: MIT
            type: string
        - description: "Limite inférieure du nombre d’étoiles du dépôt. S’applique uniquement aux résultats de dépôt\_; l’envoi sans périmètre `sources` ne renvoie aucun résultat `doc`."
          in: query
          name: min_stars
          required: false
          schema:
            minimum: 0
            type: integer
        - description: "Limite supérieure du nombre d’étoiles des dépôts. S’applique uniquement aux résultats de dépôt\_; l’envoi de ce paramètre sans définir de périmètre `sources` ne renvoie aucun résultat `doc`."
          in: query
          name: max_stars
          required: false
          schema:
            minimum: 0
            type: integer
        - description: "Inclure ou exclure les dépôts archivés. S’applique uniquement aux résultats de dépôt\_; l’envoi de ce paramètre sans définir de périmètre `sources` ne renvoie aucun résultat `doc`."
          in: query
          name: archived
          required: false
          schema:
            type: boolean
        - description: "Inclure ou exclure les forks. S’applique uniquement aux résultats de dépôt\_; l’envoi de ce paramètre sans définir de périmètre `sources` ne renvoie aucun résultat `doc`."
          in: query
          name: fork
          required: false
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              example:
                coverage:
                  doc: ok
                  issue: ok
                  pull_request: ok
                  readme: ok
                reranked: true
                results:
                  - id: issue:firecrawl/firecrawl#1234
                    passages:
                      - text: >-
                          The client treats 429 as a terminal status, so the
                          backoff never runs.
                    title: Retries are not applied to 429 responses
                    type: issue
                    url: https://github.com/firecrawl/firecrawl/issues/1234
                success: true
              schema:
                $ref: '#/components/schemas/DeveloperSearchResponse'
          description: Résultats pour développeurs classés avec passages correspondants.
        '400':
          description: >-
            Requête non valide, notamment en raison d’un filtre ne pouvant
            correspondre à aucun type demandé
        '401':
          description: Jeton Bearer manquant ou non valide
        '429':
          description: Limite de requêtes dépassée
        '500':
          description: Erreur interne du serveur
      security:
        - bearerAuth: []
components:
  schemas:
    DeveloperSearchResponse:
      properties:
        coverage:
          description: "Statut pour chaque type de résultat. Vérifiez-le lorsqu’un type de résultat attendu est absent\_: `skipped` signifie que votre valeur `types` n’a pas demandé ce type, tandis que `degraded` ou `unavailable` signifie que l’absence provient de l’index ou d’un filtre, et non de la requête. Un filtre de dépôt est l’une de ces causes — consultez [comment les filtres de dépôt définissent le périmètre d’une recherche](/api-reference/endpoint/developer-search#how-the-repository-filters-scope-a-search)."
          properties:
            doc:
              enum:
                - ok
                - degraded
                - unavailable
                - skipped
              type: string
            issue:
              enum:
                - ok
                - degraded
                - unavailable
                - skipped
              type: string
            pull_request:
              enum:
                - ok
                - degraded
                - unavailable
                - skipped
              type: string
            readme:
              enum:
                - ok
                - degraded
                - unavailable
                - skipped
              type: string
          type: object
        repos:
          description: >-
            Présent uniquement lorsque `repos` a été envoyé. Renvoie chaque slug
            avec l’indication de son indexation, ainsi qu’une répartition par
            type sous `types`.
          example:
            - indexed: true
              repo: firecrawl/firecrawl
              types:
                issue: true
                pullRequest: true
                readme: true
          items:
            properties:
              indexed:
                type: boolean
              repo:
                type: string
              types:
                description: "Types de résultats GitHub indexés pour ce dépôt\_: `issue`, `pullRequest` et `readme`."
                properties:
                  issue:
                    type: boolean
                  pullRequest:
                    type: boolean
                  readme:
                    type: boolean
                type: object
            type: object
          type: array
        reranked:
          description: Indique si la liste classée est passée par l’étape de reclassement.
          type: boolean
        results:
          items:
            $ref: '#/components/schemas/DeveloperSearchResult'
          type: array
        sources:
          description: "Présent uniquement lorsque `sources` a été envoyé. Indique chaque identifiant exactement comme demandé, ainsi que son statut d’indexation. `indexed: true` signifie que la source possède une génération publiée, de sorte que des éléments probants issus de sa documentation peuvent apparaître\_; `indexed: false` signifie qu’aucun élément de cet identifiant ne peut correspondre, ce qui distingue un identifiant absent de l’index d’une requête qui n’a simplement rien trouvé."
          example:
            - indexed: true
              source: some-docs-site
            - indexed: false
              source: unknown-docs-site
          items:
            properties:
              indexed:
                type: boolean
              source:
                type: string
            type: object
          type: array
        success:
          type: boolean
      type: object
    DeveloperSearchResult:
      properties:
        id:
          description: Identifiant de résultat stable, tel que `issue:owner/repo#123`.
          example: issue:firecrawl/firecrawl#1234
          type: string
        passages:
          description: >-
            Passages correspondants au format Markdown, afin de préserver les
            tableaux et les blocs de code.
          items:
            properties:
              text:
                type: string
            type: object
          type: array
        title:
          description: >-
            Souvent absent des résultats `doc`, lorsque la page source ne
            comporte aucun titre exploitable. Utilisez `url` à la place.
          type: string
        type:
          description: Type de résultat.
          enum:
            - doc
            - issue
            - pull_request
            - readme
          type: string
        url:
          format: uri
          type: string
      type: object
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````