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

# Update Batch

> Updates the metadata for a specific batch. Only metadata can be updated after batch creation.

<Tip>
  **Merge semantics:** Metadata updates follow Stripe's approach — new keys are added, existing keys are updated, and keys set to empty string `""` are deleted.
</Tip>


## OpenAPI

````yaml openapi/batches.json PATCH /v1/batches/{batch_id}
openapi: 3.0.3
info:
  title: Batches API
  version: 1.0.0
servers:
  - url: https://api.olostep.com
security: []
paths:
  /v1/batches/{batch_id}:
    patch:
      summary: Update batch metadata
      description: >-
        Updates the metadata for a specific batch. Only the `metadata` field can
        be updated. Follows Stripe's merge semantics: new keys are added,
        existing keys are updated, and keys set to empty string are deleted.
      parameters:
        - name: batch_id
          in: path
          required: true
          schema:
            type: string
          description: The ID of the batch to update.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                metadata:
                  $ref: '#/components/schemas/Metadata'
              required:
                - metadata
            example:
              metadata:
                status: reviewed
                reviewer: jane@example.com
      responses:
        '200':
          description: Batch metadata updated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Batch ID
                  object:
                    type: string
                    description: The kind of object. "batch" for this endpoint.
                  status:
                    type: string
                    description: '`in_progress` or `completed`'
                  created:
                    type: number
                    description: Created epoch
                  total_urls:
                    type: number
                    description: Count of URLs in the batch
                  completed_urls:
                    type: number
                    description: Count of completed URLs
                  metadata:
                    $ref: '#/components/schemas/Metadata'
              example:
                id: batch_abc123def456
                object: batch
                status: completed
                created: 1704067200
                total_urls: 10
                completed_urls: 10
                metadata:
                  batch_name: Q1 Product Sync
                  status: reviewed
                  reviewer: jane@example.com
        '400':
          description: >-
            Bad request - missing or invalid metadata. See [Bad
            Request](/api-reference/errors/bad_request) for details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: invalid_metadata
                type: https://docs.olostep.com/api-reference/errors/bad_request
                status: 400
                title: Bad Request
                detail: No metadata field provided. Only metadata can be updated.
                created: 1704067200
                metadata: {}
        '401':
          description: >-
            Authentication credentials are missing or invalid. See
            [Unauthorized](/api-reference/errors/unauthorized) for 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: Unauthorized
                detail: Your API key is invalid
                created: 1704067200
                metadata: {}
        '404':
          description: >-
            Batch not found for the provided ID. See [Not
            Found](/api-reference/errors/not_found) for details.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                id: error_abc123
                object: error
                code: batch_not_found
                type: https://docs.olostep.com/api-reference/errors/not_found
                status: 404
                title: Not Found
                detail: Batch not found
                created: 1704067200
                metadata: {}
        '500':
          description: >-
            Internal server error. See [Internal
            Error](/api-reference/errors/internal_error) for 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: Internal Server Error
                detail: An unexpected error occurred
                created: 1704067200
                metadata: {}
      security:
        - Authorization: []
components:
  schemas:
    Metadata:
      type: object
      description: >-
        Set of key-value pairs for storing additional information about an
        object. Follows Stripe's approach with validation rules: max 50 keys,
        key max 40 characters (no square brackets), value max 500 characters,
        all values stored as strings.
      additionalProperties:
        type: string
        maxLength: 500
        description: >-
          Metadata value (max 500 characters). Numbers and booleans are
          automatically converted to strings.
      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 error response
      properties:
        id:
          type: string
          description: Unique error identifier
        object:
          type: string
          enum:
            - error
          description: Always 'error'
        code:
          type: string
          description: Machine-readable error code
        type:
          type: string
          format: uri
          description: URI reference identifying the problem type
        status:
          type: integer
          description: HTTP status code
        title:
          type: string
          description: Short, human-readable summary
        detail:
          type: string
          description: Human-readable explanation
        created:
          type: integer
          description: Unix timestamp
        metadata:
          $ref: '#/components/schemas/Metadata'
        errors:
          type: array
          description: Optional array of additional error details
          items: {}
      required:
        - id
        - object
        - code
        - type
        - status
        - title
        - detail
        - created
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        Bearer authentication header of the form Bearer <token>, where <token>
        is your auth token.

````