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

# Suche erstellen

> Durchsuche das Web mit einer natürlichen Sprachabfrage und erhalte eine deduplizierte Liste relevanter Links mit Titeln und Beschreibungen zurück.  Es wird semantisch im Web nach der Abfrage gesucht und Ergebnisse zurückgegeben.  Optional kannst du `scrape_options` übergeben, um auch jede zurückgegebene URL zu scrapen und `markdown_content` / `html_content` direkt in jeden Link einzubetten. Seiten-Scrapes werden automatisch über den zugrunde liegenden /v1/scrapes-Endpunkt gegen dein Team abgerechnet.  Siehe [Suchfunktion](/features/search).



## OpenAPI

````yaml de/openapi/search.json POST /v1/searches
openapi: 3.0.3
info:
  title: Such-API
  version: 1.1.0
servers:
  - url: https://api.olostep.com
security: []
paths:
  /v1/searches:
    post:
      summary: Suche erstellen
      description: >-
        Durchsuche das Web mit einer natürlichen Sprachabfrage und erhalte eine
        deduplizierte Liste relevanter Links mit Titeln und Beschreibungen
        zurück.  Es wird semantisch im Web nach der Abfrage gesucht und
        Ergebnisse zurückgegeben.  Optional kannst du `scrape_options`
        übergeben, um auch jede zurückgegebene URL zu scrapen und
        `markdown_content` / `html_content` direkt in jeden Link einzubetten.
        Seiten-Scrapes werden automatisch über den zugrunde liegenden
        /v1/scrapes-Endpunkt gegen dein Team abgerechnet.  Siehe
        [Suchfunktion](/features/search).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: Die Suchanfrage in natürlicher Sprache.
                  example: What's going on with OpenAI's Sora shutting down?
                limit:
                  type: integer
                  description: >-
                    Maximale Anzahl von Links, die nach der Duplikatsentfernung
                    zurückgegeben werden.
                  minimum: 1
                  maximum: 25
                  default: 12
                  example: 10
                include_domains:
                  type: array
                  description: >-
                    Ergebnisse auf diese Domains beschränken. Nur nackte Hosts —
                    führendes `http(s)://` und abschließende Schrägstriche
                    werden automatisch entfernt.
                  items:
                    type: string
                  example:
                    - nytimes.com
                    - wsj.com
                exclude_domains:
                  type: array
                  description: >-
                    Ergebnisse von diesen Domains ausschließen. Nur nackte Hosts
                    — führendes `http(s)://` und abschließende Schrägstriche
                    werden automatisch entfernt.
                  items:
                    type: string
                  example:
                    - reddit.com
                fast_mode:
                  type: boolean
                  description: >-
                    Fordere eine direkte, latenzarme Suche mit deiner Anfrage im
                    Wortlaut an. Der Standardmodus führt eine breitere
                    Suchdurchführung für eine größere Ergebnisabdeckung durch.
                  default: false
                scrape_options:
                  $ref: '#/components/schemas/ScrapeOptions'
              required:
                - query
            examples:
              minimal:
                summary: Minimal — nur Anfrage
                value:
                  query: Best Answer Engine Optimization startups
              withScrape:
                summary: Mit scrape_options + Domainfiltern + Limit
                value:
                  query: What's going on with OpenAI's Sora shutting down?
                  limit: 10
                  include_domains:
                    - nytimes.com
                    - wsj.com
                  exclude_domains:
                    - pinterest.com
                  scrape_options:
                    formats:
                      - markdown
                    remove_css_selectors: default
                    timeout: 25
      responses:
        '200':
          description: Erfolgreiche Antwort mit Suchergebnissen.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: search_9bi0sbj9xa
                  object:
                    type: string
                    example: search
                  created:
                    type: integer
                    example: 1760327323
                  metadata:
                    type: object
                  query:
                    type: string
                    example: Best Answer Engine Optimization startups
                  credits_consumed:
                    type: integer
                    description: >-
                      Gesamte Credits, die durch diese Anfrage verbraucht
                      wurden: 5 Basis-Such-Credits + Summe der pro Seite
                      verbrauchten Scrape-Credits, wenn scrape_options verwendet
                      wurde.
                    example: 10
                  result:
                    type: object
                    properties:
                      json_content:
                        type: string
                        description: >-
                          Stringifiziertes JSON des vollständigen
                          Suchergebnisses.
                      json_hosted_url:
                        type: string
                        description: URL zur gehosteten JSON-Datei auf S3.
                        nullable: true
                      links:
                        type: array
                        description: >-
                          Deduplizierte Liste relevanter Links, die über mehrere
                          Suchen gefunden wurden. Jeder Link kann
                          `markdown_content` und/oder `html_content` enthalten,
                          wenn scrape_options bereitgestellt wurde.
                        items:
                          $ref: '#/components/schemas/SearchLink'
                      size_exceeded:
                        type: boolean
                        description: >-
                          Wahr, wenn der Inline-Inhalt pro Link die
                          9MB-Sicherheitsgrenze überschritten hat. Wenn wahr,
                          werden Inhaltsfelder in der Antwort genullt — verwende
                          json_hosted_url, um die vollständige Nutzlast
                          abzurufen.
                      credits_consumed:
                        type: integer
                        description: >-
                          Gleicher Wert wie die oberste Ebene von
                          credits_consumed.
        '400':
          description: >-
            Ungültige Anfrage — Validierung fehlgeschlagen (fehlende Anfrage,
            ungültiges Limit, nicht unterstützter Wert von
            scrape_options.formats, etc.). Der Antwortkörper ist `{ "message":
            "<reason>" }`.
        '401':
          description: Ungültiger API-Schlüssel
        '500':
          description: Interner Serverfehler
      security:
        - Authorization: []
components:
  schemas:
    ScrapeOptions:
      type: object
      description: >-
        Optional. Wenn angegeben, wird jeder zurückgegebene Link auch gescraped
        und sein Inhalt in die Antwort eingebettet. Pro-Seite-Scrape-Credits
        werden automatisch über den zugrunde liegenden /v1/scrapes-Endpunkt
        abgerechnet.
      properties:
        formats:
          type: array
          description: >-
            Ausgabeformate, die für jede gescrapete Seite angefordert werden
            können. Standardmäßig ['markdown'], wenn weggelassen. Derzeit werden
            nur 'html' und 'markdown' auf /v1/searches unterstützt.
          items:
            type: string
            enum:
              - html
              - markdown
          default:
            - markdown
          example:
            - markdown
        remove_css_selectors:
          type: string
          description: >-
            Option, bestimmte CSS-Selektoren aus dem Inhalt zu entfernen.
            Weitergeleitet an /v1/scrapes. Standardmäßig 'default', was
            ['nav','footer','script','style','noscript','svg',[role=alert],[role=banner],[role=dialog],[role=alertdialog],[role=region][aria-label*=skip
            i],[aria-modal=true]] entfernt. Gib 'none' an, um dies zu
            deaktivieren, oder ein JSON-stringifiziertes Array von Selektoren,
            die entfernt werden sollen.
          default: default
        timeout:
          type: integer
          description: >-
            Wallclock-Budget in Sekunden für die gesamte Scrape-Phase. Nach
            Ablauf dieser Zeit wird die Suche mit den verfügbaren Links
            zurückgegeben — Inhaltsfelder sind null für alle Links, die das
            Scraping nicht abgeschlossen haben.
          minimum: 1
          maximum: 60
          default: 25
    SearchLink:
      type: object
      properties:
        url:
          type: string
          description: Die URL des Ergebnisses.
        title:
          type: string
          nullable: true
          description: Der Titel der Ergebnisseite.
        description:
          type: string
          nullable: true
          description: Ein kurzer Ausschnitt oder eine Beschreibung des Ergebnisses.
        markdown_content:
          type: string
          nullable: true
          description: >-
            Markdown-Inhalt der Seite. Nur vorhanden, wenn
            scrape_options.formats 'markdown' enthält. Null, wenn das Scraping
            fehlgeschlagen ist, leer war oder das globale Timeout erreicht
            wurde. Für Reddit-Kommentar-URLs wird dies aus dem strukturierten
            JSON des @olostep/reddit-post-Parsers für höhere Qualität generiert.
        html_content:
          type: string
          nullable: true
          description: >-
            HTML-Inhalt der Seite. Nur vorhanden, wenn scrape_options.formats
            'html' enthält. Null, wenn das Scraping fehlgeschlagen ist, leer war
            oder das globale Timeout erreicht wurde.
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        Bearer-Authentifizierungsheader in der Form Bearer <token>, wobei
        <token> dein Authentifizierungstoken ist.

````