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

# Batch erstellen

> Startet einen neuen Batch. Du erhältst eine `id`, die du verwenden kannst, um den Fortschritt des Batches zu verfolgen, wie [hier](/api-reference/batches/info) gezeigt. Hinweis: Die Verarbeitungszeit ist unabhängig von der Batch-Größe konstant

<Tip>
  **Benachrichtigung bei Abschluss:** Übermittle den `webhook`-Parameter mit der URL deines Endpunkts, um eine HTTP POST-Benachrichtigung zu erhalten, wenn der Batch abgeschlossen ist. Siehe [Webhooks](/api-reference/common/webhooks) für Details.
</Tip>

<Tip>
  **Benutzerdefinierte Daten anhängen:** Verwende den `metadata`-Parameter, um Schlüssel-Wert-Paare zu speichern. Unterstützt auf zwei Ebenen:

  * **Batch-Ebene** — im Anfragekörper
  * **Element-Ebene** — bei jedem Element im `items`-Array

  Siehe [Metadata](/api-reference/common/metadata) für Details.
</Tip>


## OpenAPI

````yaml de/openapi/batches.json POST /v1/batches
openapi: 3.0.3
info:
  title: Batches-API
  version: 1.0.0
servers:
  - url: https://api.olostep.com
security: []
paths:
  /v1/batches:
    post:
      summary: Einen neuen Batch starten
      description: Startet einen neuen Batch-Prozess mit den angegebenen Parametern.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      custom_id:
                        type: string
                        description: Eine interne eindeutige Kennung für die URL.
                      url:
                        type: string
                        format: uri
                        description: URL des Elements.
                      metadata:
                        allOf:
                          - $ref: '#/components/schemas/Metadata'
                        description: >-
                          Metadaten auf Elementebene. Füge Schlüssel-Wert-Paare
                          zu einzelnen Elementen hinzu, um sie zu verfolgen, zu
                          filtern oder mit deinen internen Systemen zu
                          korrelieren.
                    required:
                      - custom_id
                      - url
                  description: Array von Elementen, die im Batch verarbeitet werden sollen.
                country:
                  type: string
                  description: >-
                    Land für die Batch-Ausführung. Gib es in ISO 3166-1
                    Alpha-2-Codes an, wie US(USA), IN(Indien), etc.
                parser:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Parser, der für das Batch verwendet werden soll.
                  required:
                    - id
                  description: >-
                    Du kannst diesen Parameter verwenden, um den zu verwendenden
                    Parser anzugeben. Parser sind nützlich, um strukturierten
                    Inhalt aus Webseiten zu extrahieren. Olostep hat einige
                    Parser für die gängigsten Webseiten eingebaut, und du kannst
                    auch deine eigenen Parser erstellen.
                links_on_page:
                  type: object
                  properties:
                    include_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Extrahierte Links mit Glob-Mustern filtern. Muster
                        stimmen mit dem URL-Pfad des Links überein. Hinweis: Ein
                        einzelnes `*` überschreitet nicht `/`, also stimmt
                        "/blog/*" mit "/blog/post-1" überein, aber NICHT mit dem
                        Index "/blog" selbst (oder "/blog?tag=x", da
                        Abfragezeichenfolgen nicht Teil des Pfads sind). Um auch
                        den Index einzuschließen, verwende "/blog*" oder
                        "{/blog,/blog/**}".
                    exclude_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Extrahierte Links mit Glob-Mustern filtern. Muster
                        stimmen mit dem URL-Pfad des Links überein. Hinweis: Ein
                        einzelnes `*` überschreitet nicht `/`, also stimmt
                        "/blog/*" mit "/blog/post-1" überein, aber NICHT mit dem
                        Index "/blog" selbst.
                  description: >-
                    Alle Links auf jeder Seite im Batch abrufen. Links werden
                    immer als absolute URLs zurückgegeben.
                metadata:
                  $ref: '#/components/schemas/Metadata'
                webhook:
                  type: string
                  format: uri
                  description: >-
                    HTTPS-URL, um eine POST-Anfrage zu erhalten, wenn das Batch
                    abgeschlossen ist. Muss eine öffentlich zugängliche URL
                    sein, die das `http://` oder `https://` Protokoll verwendet.
                    Kann nicht auf localhost oder private IP-Adressen verweisen.
                    Siehe [Webhooks](/api-reference/common/webhooks) für das
                    Payload-Format und das Wiederholungsverhalten.
              required:
                - items
            example:
              items:
                - custom_id: product-123
                  url: https://example.com/product/123
                  metadata:
                    source: catalog_sync
                    priority: high
                - custom_id: product-456
                  url: https://example.com/product/456
              country: US
              metadata:
                batch_name: Q1 Product Sync
                initiated_by: automation
      responses:
        '200':
          description: Batch erfolgreich gestartet.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Batch-ID
                  object:
                    type: string
                    description: Die Art des Objekts. "batch" für diesen Endpunkt.
                  status:
                    type: string
                    description: '`in_progress` oder `completed`'
                  created:
                    type: number
                    description: Erstellte Epoche
                  total_urls:
                    type: number
                    description: Anzahl der URLs im Batch
                  completed_urls:
                    type: number
                    description: Anzahl der abgeschlossenen URLs
                  parser:
                    type: string
                  country:
                    type: string
                  metadata:
                    $ref: '#/components/schemas/Metadata'
                  webhook:
                    type: string
                    description: >-
                      Webhook-URL, um eine Benachrichtigung über den Abschluss
                      zu erhalten
                  credits_consumed:
                    type: integer
                    nullable: true
                    description: >-
                      Anzahl der durch diese Anfrage verbrauchten Credits. Wird
                      nach Abschluss der Ausführung ausgefüllt. Credits sind die
                      Grundlage für die Abrechnung.
                  cost_usd:
                    type: number
                    nullable: true
                    description: >-
                      Geschätzte Kosten in USD für diese Anfrage. Wird nach
                      Abschluss der Ausführung ausgefüllt. Berechnet aus den
                      verbrauchten Credits und deinem Tarif — 99% genau, aber
                      credits_consumed ist der maßgebliche Wert.
              example:
                id: batch_abc123def456
                object: batch
                status: in_progress
                created: 1704067200
                total_urls: 2
                completed_urls: 0
                country: US
                metadata:
                  batch_name: Q1 Product Sync
                  initiated_by: automation
        '400':
          description: >-
            Ungültige Anfrage aufgrund falscher oder fehlender Parameter. Siehe
            [Bad Request](/api-reference/errors/bad_request) für Details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: validation_error
                type: https://docs.olostep.com/api-reference/errors/bad_request
                status: 400
                title: Ungültige Anfrage
                detail: >-
                  The 'items' array is required and must contain at least one
                  item.
                created: 1704067200
                metadata: {}
        '401':
          description: >-
            Authentifizierungsdaten fehlen oder sind ungültig. Siehe
            [Unauthorized](/api-reference/errors/unauthorized) für Details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: invalid_api_key
                type: https://docs.olostep.com/api-reference/errors/unauthorized
                status: 401
                title: Nicht autorisiert
                detail: >-
                  Your API key is invalid. Try double-checking it or reaching
                  out to info@olostep.com if you're facing issues.
                created: 1704067200
                metadata: {}
        '402':
          description: >-
            Zahlung erforderlich - Credits aufgebraucht. Siehe [Payment
            Required](/api-reference/errors/payment_required) für Details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: credits_exhausted
                type: https://docs.olostep.com/api-reference/errors/payment_required
                status: 402
                title: Zahlung erforderlich
                detail: >-
                  You have consumed all available credits. Please upgrade your
                  plan from the dashboard: https://www.olostep.com/auth/
                created: 1704067200
                metadata: {}
        '403':
          description: >-
            Verboten - Zugriff auf diese Funktion verweigert. Siehe
            [Forbidden](/api-reference/errors/forbidden) für Details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: access_denied
                type: https://docs.olostep.com/api-reference/errors/forbidden
                status: 403
                title: Verboten
                detail: >-
                  You don't have access to this feature. Please reach out to
                  info@olostep.com to get approved
                created: 1704067200
                metadata: {}
        '409':
          description: >-
            Idempotenzkonflikt - eine Anfrage mit diesem Schlüssel wird gerade
            bearbeitet. Siehe [Idempotency
            Error](/api-reference/errors/idempotency_error) für Details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: idempotency_key_in_progress
                type: >-
                  https://docs.olostep.com/api-reference/errors/idempotency_error
                status: 409
                title: Idempotenzfehler
                detail: >-
                  A request with this idempotency key is currently being
                  processed. Please wait and retry.
                created: 1704067200
                metadata: {}
        '422':
          description: >-
            Nicht verarbeitbare Entität - Verstoß gegen Geschäftsregeln. Siehe
            [Unprocessable Entity](/api-reference/errors/unprocessable_entity)
            für Details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: idempotency_key_reuse
                type: >-
                  https://docs.olostep.com/api-reference/errors/unprocessable_entity
                status: 422
                title: Nicht verarbeitbare Entität
                detail: >-
                  A request with this idempotency key was already made with
                  different parameters. Idempotency keys must be unique per
                  request.
                created: 1704067200
                metadata: {}
        '500':
          description: >-
            Interner Serverfehler. Siehe [Internal
            Error](/api-reference/errors/internal_error) für Details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: internal_server_error
                type: https://docs.olostep.com/api-reference/errors/internal_error
                status: 500
                title: Interner Serverfehler
                detail: An unexpected error occurred
                created: 1704067200
                metadata: {}
      security:
        - Authorization: []
components:
  schemas:
    Metadata:
      type: object
      description: >-
        Satz von Schlüssel-Wert-Paaren zur Speicherung zusätzlicher
        Informationen über ein Objekt. Folgt dem Ansatz von Stripe mit
        Validierungsregeln: maximal 50 Schlüssel, Schlüssel maximal 40 Zeichen
        (keine eckigen Klammern), Wert maximal 500 Zeichen, alle Werte als
        Strings gespeichert.
      additionalProperties:
        type: string
        maxLength: 500
        description: >-
          Metadatenwert (maximal 500 Zeichen). Zahlen und Booleans werden
          automatisch in Strings umgewandelt.
      maxProperties: 50
      example:
        order_id: '12345'
        customer_name: John Doe
        priority: high
        processed: 'true'
      x-validation-rules:
        max_keys: 50
        key_max_length: 40
        key_forbidden_chars:
          - '['
          - ']'
        value_max_length: 500
        value_types:
          - string
          - number (coerced)
          - boolean (coerced)
    Error:
      type: object
      description: RFC 7807 Problem Details Fehlerantwort
      properties:
        id:
          type: string
          description: Eindeutige Fehlerkennung
        object:
          type: string
          enum:
            - error
          description: Immer 'error'
        code:
          type: string
          description: Maschinenlesbarer Fehlercode
        type:
          type: string
          format: uri
          description: URI-Referenz, die den Problemtyp identifiziert
        status:
          type: integer
          description: HTTP-Statuscode
        title:
          type: string
          description: Kurze, menschenlesbare Zusammenfassung
        detail:
          type: string
          description: Menschenlesbare Erklärung
        created:
          type: integer
          description: Unix-Zeitstempel
        metadata:
          $ref: '#/components/schemas/Metadata'
        errors:
          type: array
          description: Optionale Liste zusätzlicher Fehlerdetails
          items: {}
      required:
        - id
        - object
        - code
        - type
        - status
        - title
        - detail
        - created
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        Bearer-Authentifizierungsheader in der Form Bearer <token>, wobei
        <token> dein Authentifizierungstoken ist.

````