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

# Démarrage rapide de l'API de données de recherche IA

> Soumettez une tâche et recevez le résultat, par webhook ou par polling.

[Guide de démarrage](https://querying.ai/fr/guides/quickstart) · [Offres et crédits de l'API](https://querying.ai/fr/pricing)

## 1. Définir vos identifiants

```bash theme={null}
export BASE="https://api.querying.ai"
export API_KEY="<your-key>"
```

## 2. Soumettre une tâche

Posez une question à Gemini. `taskType` choisit le moteur ; `payload.prompt` est ce que vous demandez.

```bash theme={null}
curl -X POST "$BASE/v1/async/task" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "taskType": "GEMINI",
    "payload": { "prompt": "best wireless earbuds 2026", "country": "US" }
  }'
```

La tâche est acceptée et mise en file :

```json theme={null}
{
  "success": true,
  "task": {
    "id": "8f2c1e40-...",
    "taskType": "GEMINI",
    "status": "QUEUED",
    "priority": 1,
    "createdAt": "2026-07-09T04:12:00.000Z"
  },
  "credits": { "creditsToCharge": 0, "creditsCharged": 0 }
}
```

<Note>
  `credits` fait partie de l'enveloppe de réponse. À la soumission et au polling, il vaut toujours zéro ; le webhook
  indique le coût en crédits du moteur (1 à 2 crédits pour les moteurs de réponse publics et 12 pour Prompt Research ; Source Influence est
  mesuré séparément). Les soldes sont visibles dans le tableau de bord.
</Note>

## 3. Récupérer le résultat

<Tabs>
  <Tab title="Webhook (recommandé)">
    Ajoutez `webhook.url` lors de la soumission. Quand la tâche atteint un état final, nous y envoyons le résultat
    complet en POST, et vous n'avez jamais à interroger.

    ```bash theme={null}
    curl -X POST "$BASE/v1/async/task" \
      -H "Authorization: Bearer $API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "taskType": "GEMINI",
        "payload": { "prompt": "best wireless earbuds 2026" },
        "webhook": { "url": "https://your-server.example.com/hook" }
      }'
    ```

    Votre endpoint reçoit `{ task, credits, response }`. Consultez [Webhooks](/fr/concepts/webhooks) pour le contrat
    de livraison et de nouvelles tentatives.
  </Tab>

  <Tab title="Polling">
    Omettez `webhook` et interrogez la tâche par son id. `response` est absent tant que la tâche n'est pas terminée.

    ```bash theme={null}
    curl "$BASE/v1/async/task/8f2c1e40-..." \
      -H "Authorization: Bearer $API_KEY"
    ```

    ```json theme={null}
    {
      "success": true,
      "task": { "id": "8f2c1e40-...", "status": "COMPLETED", "...": "..." },
      "credits": { "creditsToCharge": 0, "creditsCharged": 0 },
      "response": {
        "text": "The best wireless earbuds in 2026 are ...",
        "sources": [{ "position": 1, "url": "https://...", "label": "..." }]
      }
    }
    ```

    <Warning>
      Le polling public est disponible pendant 24 heures après la fin de la tâche. Interrogez dans ce délai, sinon
      une tâche terminée renverra 404 car expirée.
    </Warning>
  </Tab>
</Tabs>

## 4. Soumettre en masse

`POST /v1/async/task/batch` accepte un **tableau** JSON des mêmes objets de tâche, jusqu'à 500 par requête. Vous
pouvez mélanger librement les moteurs dans un même lot.

```bash theme={null}
curl -X POST "$BASE/v1/async/task/batch" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    { "taskType": "GEMINI",     "payload": { "prompt": "best wireless earbuds 2026" } },
    { "taskType": "PERPLEXITY", "payload": { "prompt": "best wireless earbuds 2026" } },
    { "taskType": "GOOGLE",     "payload": { "query":  "best wireless earbuds 2026" } }
  ]'
```

Un lot bien formé renvoie toujours `200`. Les échecs individuels apparaissent sous la forme
`results[].success = false`, si bien qu'une tâche invalide n'entraîne jamais les autres. Consultez
[Soumission par lot](/fr/api-reference/create-task-batch).

<Note>
  Les moteurs de la famille Google (`GOOGLE`, `AIMODE`, `NAVER_*`) lisent `payload.query`. Les moteurs LLM lisent
  `payload.prompt`. L'un ou l'autre suffit à la validation, mais chaque moteur lit d'abord celui qu'il attend.
</Note>

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Choisir un moteur" icon="cpu" href="/fr/engines/overview">
    Chaque `taskType` et ce qu'il renvoie.
  </Card>

  <Card title="Gérer les échecs" icon="triangle-alert" href="/fr/concepts/errors">
    Codes d'erreur, codes de statut et ce qui peut être relancé.
  </Card>
</CardGroup>
