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

# Créer un lot

> Démarre un nouveau lot. Vous recevez un `id` que vous pouvez utiliser pour suivre la progression du lot comme montré [ici](/api-reference/batches/info). Remarque : Le temps de traitement est constant, quelle que soit la taille du lot

<Tip>
  **Soyez notifié à la fin :** Passez le paramètre `webhook` avec l'URL de votre point de terminaison pour recevoir un HTTP POST lorsque le lot est terminé. Voir [Webhooks](/api-reference/common/webhooks) pour plus de détails.
</Tip>

<Tip>
  **Attachez des données personnalisées :** Utilisez le paramètre `metadata` pour stocker des paires clé-valeur. Pris en charge à deux niveaux :

  * **Niveau du lot** — dans le corps de la requête
  * **Niveau de l'élément** — sur chaque élément dans le tableau `items`

  Voir [Metadata](/api-reference/common/metadata) pour plus de détails.
</Tip>


## OpenAPI

````yaml fr/openapi/batches.json POST /v1/batches
openapi: 3.0.3
info:
  title: API des lots
  version: 1.0.0
servers:
  - url: https://api.olostep.com
security: []
paths:
  /v1/batches:
    post:
      summary: Démarrer un nouveau lot
      description: Initie un nouveau processus de lot avec les paramètres spécifiés.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      custom_id:
                        type: string
                        description: Un identifiant unique interne pour l'url.
                      url:
                        type: string
                        format: uri
                        description: URL de l'élément.
                      metadata:
                        allOf:
                          - $ref: '#/components/schemas/Metadata'
                        description: >-
                          Métadonnées au niveau de l'élément. Attache des paires
                          clé-valeur aux éléments individuels pour le suivi, le
                          filtrage ou la corrélation avec tes systèmes internes.
                    required:
                      - custom_id
                      - url
                  description: Tableau d'éléments à traiter dans le lot.
                country:
                  type: string
                  description: >-
                    Pays pour l'exécution du lot. Fournir en codes ISO 3166-1
                    alpha-2 comme US(USA), IN(Inde), etc.
                parser:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Analyseur à utiliser pour le lot.
                  required:
                    - id
                  description: >-
                    Tu peux utiliser ce paramètre pour spécifier l'analyseur à
                    utiliser. Les analyseurs sont utiles pour extraire du
                    contenu structuré à partir de pages web. Olostep a quelques
                    analyseurs intégrés pour les pages web les plus courantes,
                    et tu peux aussi créer tes propres analyseurs.
                links_on_page:
                  type: object
                  properties:
                    include_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Filtre les liens extraits en utilisant des motifs glob.
                        Les motifs correspondent au chemin de l'URL du lien.
                        Remarque : un seul `*` ne traverse pas `/`, donc
                        "/blog/*" correspond à "/blog/post-1" mais PAS à l'index
                        "/blog" lui-même (ou "/blog?tag=x", car les chaînes de
                        requête ne font pas partie du chemin). Pour inclure
                        également l'index, utilise "/blog*" ou
                        "{/blog,/blog/**}".
                    exclude_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Filtre les liens extraits en utilisant des motifs glob.
                        Les motifs correspondent au chemin de l'URL du lien.
                        Remarque : un seul `*` ne traverse pas `/`, donc
                        "/blog/*" correspond à "/blog/post-1" mais PAS à l'index
                        "/blog" lui-même.
                  description: >-
                    Obtiens tous les liens présents sur chaque page du lot. Les
                    liens sont toujours retournés sous forme d'URLs absolues.
                metadata:
                  $ref: '#/components/schemas/Metadata'
                webhook:
                  type: string
                  format: uri
                  description: >-
                    URL HTTPS pour recevoir une requête POST lorsque le lot est
                    terminé. Doit être une URL publiquement accessible utilisant
                    le protocole `http://` ou `https://`. Ne peut pas pointer
                    vers localhost ou des adresses IP privées. Voir
                    [Webhooks](/api-reference/common/webhooks) pour le format de
                    la charge utile et le comportement de réessai.
              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: Lot démarré avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID du lot
                  object:
                    type: string
                    description: Le type d'objet. "batch" pour ce point de terminaison.
                  status:
                    type: string
                    description: '`in_progress` ou `completed`'
                  created:
                    type: number
                    description: Époque créée
                  total_urls:
                    type: number
                    description: Nombre d'URLs dans le lot
                  completed_urls:
                    type: number
                    description: Nombre d'URLs complétées
                  parser:
                    type: string
                  country:
                    type: string
                  metadata:
                    $ref: '#/components/schemas/Metadata'
                  webhook:
                    type: string
                    description: URL de webhook pour recevoir la notification de fin
                  credits_consumed:
                    type: integer
                    nullable: true
                    description: >-
                      Nombre de crédits consommés par cette requête. Rempli
                      après l'exécution terminée. Les crédits sont la source de
                      vérité pour la facturation.
                  cost_usd:
                    type: number
                    nullable: true
                    description: >-
                      Coût estimé en USD pour cette requête. Rempli après
                      l'exécution terminée. Calculé à partir des crédits
                      consommés et de ton tarif de plan — 99% précis, mais
                      credits_consumed est la valeur faisant autorité.
              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: >-
            Mauvaise requête en raison de paramètres incorrects ou manquants.
            Voir [Bad Request](/api-reference/errors/bad_request) pour les
            détails.
          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: Mauvaise Requête
                detail: >-
                  The 'items' array is required and must contain at least one
                  item.
                created: 1704067200
                metadata: {}
        '401':
          description: >-
            Les informations d'authentification sont manquantes ou invalides.
            Voir [Non autorisé](/api-reference/errors/unauthorized) pour plus de
            détails.
          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: Non autorisé
                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: >-
            Paiement requis - crédits épuisés. Voir [Payment
            Required](/api-reference/errors/payment_required) pour les détails.
          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: Paiement Requis
                detail: >-
                  You have consumed all available credits. Please upgrade your
                  plan from the dashboard: https://www.olostep.com/auth/
                created: 1704067200
                metadata: {}
        '403':
          description: >-
            Interdit - accès refusé à cette fonctionnalité. Voir
            [Forbidden](/api-reference/errors/forbidden) pour les détails.
          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: Interdit
                detail: >-
                  You don't have access to this feature. Please reach out to
                  info@olostep.com to get approved
                created: 1704067200
                metadata: {}
        '409':
          description: >-
            Conflit d'idempotence - une requête avec cette clé est en cours.
            Voir [Erreur d'Idempotence](/api-reference/errors/idempotency_error)
            pour plus de détails.
          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: Erreur d'Idempotence
                detail: >-
                  A request with this idempotency key is currently being
                  processed. Please wait and retry.
                created: 1704067200
                metadata: {}
        '422':
          description: >-
            Entité non traitable - violation de règle métier. Voir [Entité Non
            Traitable](/api-reference/errors/unprocessable_entity) pour plus de
            détails.
          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: Entité Non Traitable
                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: >-
            Erreur interne du serveur. Voir [Erreur
            interne](/api-reference/errors/internal_error) pour plus de détails.
          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: Erreur interne du serveur
                detail: An unexpected error occurred
                created: 1704067200
                metadata: {}
      security:
        - Authorization: []
components:
  schemas:
    Metadata:
      type: object
      description: >-
        Ensemble de paires clé-valeur pour stocker des informations
        supplémentaires sur un objet. Suit l'approche de Stripe avec des règles
        de validation : max 50 clés, clé max 40 caractères (pas de crochets),
        valeur max 500 caractères, toutes les valeurs stockées en tant que
        chaînes.
      additionalProperties:
        type: string
        maxLength: 500
        description: >-
          Valeur des métadonnées (max 500 caractères). Les nombres et les
          booléens sont automatiquement convertis en chaînes.
      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: Réponse d'erreur RFC 7807 Détails du Problème
      properties:
        id:
          type: string
          description: Identifiant unique de l'erreur
        object:
          type: string
          enum:
            - error
          description: Toujours 'error'
        code:
          type: string
          description: Code d'erreur lisible par machine
        type:
          type: string
          format: uri
          description: Référence URI identifiant le type de problème
        status:
          type: integer
          description: Code de statut HTTP
        title:
          type: string
          description: Résumé court et lisible par un humain
        detail:
          type: string
          description: Explication lisible par un humain
        created:
          type: integer
          description: Horodatage Unix
        metadata:
          $ref: '#/components/schemas/Metadata'
        errors:
          type: array
          description: Tableau optionnel de détails d'erreur supplémentaires
          items: {}
      required:
        - id
        - object
        - code
        - type
        - status
        - title
        - detail
        - created
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        En-tête d'authentification Bearer sous la forme Bearer <token>, où
        <token> est ton jeton d'authentification.

````