> ## 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.

# Schnellstart für die Daten-API der KI-Suche

> Einen Task einreichen und das Ergebnis per Webhook oder Polling erhalten.

[Einstiegsleitfaden](https://querying.ai/de/guides/quickstart) · [API-Tarife und Credits](https://querying.ai/de/pricing)

## 1. Zugangsdaten setzen

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

## 2. Einen Task einreichen

Stellen Sie Gemini eine Frage. `taskType` wählt die Engine, `payload.prompt` ist Ihre Frage.

```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" }
  }'
```

Der Task wird angenommen und in die Warteschlange gestellt:

```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` ist Teil des Antwortumschlags. Beim Einreichen und Pollen ist der Wert immer null; der Webhook meldet die
  Credit-Kosten der Engine (1–2 Credits für die öffentlichen Answer-Engines, 12 für Prompt Research; Source Influence wird separat abgerechnet).
  Guthaben sehen Sie im Dashboard.
</Note>

## 3. Ergebnis abholen

<Tabs>
  <Tab title="Webhook (empfohlen)">
    Fügen Sie beim Einreichen `webhook.url` hinzu. Erreicht der Task einen Endzustand, senden wir das vollständige
    Ergebnis per POST dorthin, und Sie müssen nie pollen.

    ```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" }
      }'
    ```

    Ihr Endpunkt erhält `{ task, credits, response }`. Den Vertrag für Zustellung und Wiederholungen finden Sie unter
    [Webhooks](/de/concepts/webhooks).
  </Tab>

  <Tab title="Polling">
    Lassen Sie `webhook` weg und pollen Sie den Task per id. `response` fehlt, bis der Task abgeschlossen ist.

    ```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>
      Öffentliches Polling ist 24 Stunden nach Abschluss verfügbar. Pollen Sie innerhalb dieses Zeitraums, sonst
      liefert auch ein abgeschlossener Task 404, weil er abgelaufen ist.
    </Warning>
  </Tab>
</Tabs>

## 4. Massenhaft einreichen

`POST /v1/async/task/batch` nimmt ein JSON-**Array** derselben Task-Objekte entgegen, bis zu 500 pro Anfrage. Engines
lassen sich in einem Batch frei mischen.

```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" } }
  ]'
```

Ein wohlgeformter Batch liefert immer `200`. Einzelne Fehler erscheinen als `results[].success = false`, sodass ein
fehlerhafter Task nie den Rest mitreißt. Siehe [Batch-Einreichung](/de/api-reference/create-task-batch).

<Note>
  Engines der Google-Familie (`GOOGLE`, `AIMODE`, `NAVER_*`) lesen `payload.query`. LLM-Engines lesen `payload.prompt`.
  Eines von beiden genügt für die Validierung, doch jede Engine liest zuerst das Feld, das sie erwartet.
</Note>

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Engine wählen" icon="cpu" href="/de/engines/overview">
    Jeder `taskType` und was er zurückgibt.
  </Card>

  <Card title="Fehler behandeln" icon="triangle-alert" href="/de/concepts/errors">
    Fehlercodes, Statuscodes und was wiederholt werden kann.
  </Card>
</CardGroup>
