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

# Listar lotes

> Enumera los trabajos por lotes asíncronos del espacio de trabajo autenticado desde el almacenamiento persistente de trabajos asíncronos de la pasarela.

Requiere acceso a la versión preliminar del espacio de trabajo. Consulta [Trabajos de vídeo y procesamiento por lotes](../../guides/async-video-and-batch.mdx) para la configuración, los webhooks y la gestión de resultados.


## OpenAPI

````yaml es/openapi/v1/openapi.localized.yaml GET /batches
openapi: 3.0.3
info:
  title: Phaseo Gateway API
  description: >-
    Una API de pasarela para acceder a diversos modelos de IA mediante endpoints
    compatibles con OpenAI.
  version: 1.0.0
  contact:
    name: Phaseo
    url: https://phaseo.app
    email: danielbutler500@gmail.com
servers:
  - url: https://api.phaseo.app/v1
    description: Enrutamiento global
security:
  - BearerAuth: []
tags:
  - name: Gateway
    description: Core Phaseo Gateway operations.
paths:
  /batches:
    get:
      tags:
        - Gateway
      summary: Listar lotes
      description: >-
        Enumera los trabajos por lotes asíncronos del espacio de trabajo
        autenticado desde el almacenamiento persistente de trabajos asíncronos
        de la pasarela.
      operationId: listBatches
      parameters:
        - name: limit
          in: query
          description: >-
            Número máximo de trabajos por lotes que se devuelven. El valor
            predeterminado es 20 y el máximo es 100.
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: status
          in: query
          description: >-
            Filtro de estado del ciclo de vida del lote. Repita el parámetro,
            use un valor de estado separado por comas o use statuses para
            filtros separados por comas.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: statuses
          in: query
          description: Filtros de estado del ciclo de vida separados por comas.
          schema:
            type: string
        - name: offset
          in: query
          description: >-
            Número de trabajos por lotes que se omiten antes de devolver la
            página.
          schema:
            type: integer
            minimum: 0
            maximum: 10000
      responses:
        '200':
          description: Respuesta de la lista de lotes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchListResponse'
        '401':
          description: No autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    BatchListResponse:
      type: object
      properties:
        object:
          type: string
          example: list
        data:
          type: array
          items:
            $ref: '#/components/schemas/BatchResponse'
        first_id:
          type: string
          nullable: true
        last_id:
          type: string
          nullable: true
        has_more:
          type: boolean
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        ok:
          type: boolean
          example: false
        error:
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
          example: error_type
        message:
          type: string
          example: Human-readable error message
        description:
          type: string
          example: Additional error details.
        generation_id:
          type: string
          example: G-abc123
        status_code:
          type: integer
          example: 502
        error_type:
          type: string
          enum:
            - user
            - system
          example: system
        error_origin:
          type: string
          enum:
            - user
            - gateway
            - upstream
          example: upstream
        reason:
          type: string
          example: all_candidates_failed
        attempt_count:
          type: integer
          example: 2
        failed_providers:
          type: array
          items:
            type: string
          example:
            - google-ai-studio
            - openai
        failed_statuses:
          type: array
          items:
            type: integer
          example:
            - 403
            - 429
        upstream_error:
          $ref: '#/components/schemas/ErrorUpstreamError'
        failure_sample:
          type: array
          items:
            $ref: '#/components/schemas/ErrorFailureSampleItem'
        provider_failure_diagnostics:
          $ref: '#/components/schemas/ErrorProviderFailureDiagnostics'
        routing_diagnostics:
          $ref: '#/components/schemas/ErrorRoutingDiagnostics'
        provider_candidate_diagnostics:
          $ref: '#/components/schemas/ErrorProviderCandidateDiagnostics'
        provider_enablement:
          $ref: '#/components/schemas/ErrorProviderEnablementDiagnostics'
        missing_pricing_providers:
          type: array
          items:
            type: string
        provider_payment_required_provider:
          type: string
          example: openai
        provider_payment_required_support_notice:
          type: string
          example: >-
            Our upstream provider billing appears to be unavailable. If this
            persists, contact support.
        details:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
    BatchResponse:
      type: object
      properties:
        id:
          type: string
        native_batch_id:
          type: string
          nullable: true
          description: >-
            ID de lote nativo del proveedor cuando difiere del ID propio de la
            pasarela.
        object:
          type: string
        endpoint:
          type: string
        errors:
          type: object
        input_file_id:
          type: string
        completion_window:
          type: string
        status:
          type: string
        lifecycle_status:
          type: string
          enum:
            - pending
            - running
            - completed
            - failed
            - cancelled
            - expired
          description: >-
            Estado normalizado del ciclo de vida asíncrono para consumidores de
            sondeo, WebSocket y webhooks.
        progress:
          type: integer
          minimum: 0
          maximum: 100
          description: >-
            Porcentaje aproximado de finalización del lote derivado de los
            recuentos de solicitudes del proveedor, si están disponibles. Los
            lotes completados informan 100.
        polling_url:
          type: string
          format: uri
        websocket_url:
          type: string
          format: uri
          description: >-
            URL de WebSocket para suscribirse a actualizaciones normalizadas del
            ciclo de vida de trabajos asíncronos.
        cancel_url:
          type: string
          format: uri
          nullable: true
          description: Reservado por compatibilidad; actualmente siempre es null.
        results_url:
          type: string
          format: uri
          nullable: true
          description: >-
            URL autenticada de descarga JSONL de Phaseo para lotes compatibles
            en estado final. Es null durante el procesamiento. Un lote en estado
            final puede no tener salida. Use una clave API del espacio de
            trabajo propietario; se aplican los límites de retención del
            proveedor.
        output_file_id:
          type: string
        error_file_id:
          type: string
        created_at:
          type: integer
        in_progress_at:
          type: integer
        expires_at:
          type: integer
        finalizing_at:
          type: integer
        completed_at:
          type: integer
        failed_at:
          type: integer
        expired_at:
          type: integer
        cancelling_at:
          type: integer
        cancelled_at:
          type: integer
        request_counts:
          $ref: '#/components/schemas/BatchRequestCounts'
        metadata:
          type: object
        request_id:
          type: string
        provider:
          type: string
        session_id:
          type: string
        webhook:
          $ref: '#/components/schemas/AsyncWebhookPublicState'
        next_webhook_retry_at:
          type: string
          nullable: true
        last_webhook_progress:
          type: number
          nullable: true
        last_webhook_progress_at:
          type: string
          nullable: true
        last_webhook_dispatched_at:
          type: string
          nullable: true
        finalized_at:
          type: string
          nullable: true
        pricing_lines:
          type: array
          items:
            type: object
            additionalProperties: true
        usage:
          type: object
          description: Uso y coste agregados normalizados tras la finalización.
          properties:
            requests:
              type: integer
              nullable: true
            input_tokens:
              type: integer
              nullable: true
            output_tokens:
              type: integer
              nullable: true
            total_tokens:
              type: integer
              nullable: true
            cost_nanos:
              type: integer
              nullable: true
            cost_usd:
              type: number
              nullable: true
            currency:
              type: string
        billing:
          $ref: '#/components/schemas/BatchBillingSummary'
    ErrorUpstreamError:
      type: object
      properties:
        code:
          type: string
          nullable: true
          example: PERMISSION_DENIED
        message:
          type: string
          nullable: true
          example: The caller does not have permission.
        description:
          type: string
          nullable: true
        param:
          type: string
          nullable: true
    ErrorFailureSampleItem:
      type: object
      properties:
        provider:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        status:
          type: integer
          nullable: true
        upstream_error_code:
          type: string
          nullable: true
        upstream_error_message:
          type: string
          nullable: true
        upstream_error_description:
          type: string
          nullable: true
        upstream_error_param:
          type: string
          nullable: true
        upstream_payload_preview:
          type: string
          nullable: true
        retryable:
          type: boolean
          nullable: true
      additionalProperties: true
    ErrorProviderFailureDiagnostics:
      type: object
      properties:
        category:
          type: string
          enum:
            - credentials_not_configured
            - credentials_invalid_or_forbidden
            - provider_access_missing
            - region_or_project_restriction
            - model_unavailable_for_endpoint
            - rate_limited
            - server_error
        hint:
          type: string
        provider:
          type: string
          nullable: true
    ErrorRoutingDiagnostics:
      type: object
      properties:
        filterStages:
          type: array
          items:
            type: object
            properties:
              stage:
                type: string
              beforeCount:
                type: integer
              afterCount:
                type: integer
              droppedProviders:
                type: array
                items:
                  type: object
                  properties:
                    providerId:
                      type: string
                      nullable: true
                    reason:
                      type: string
                      nullable: true
                  additionalProperties: true
            additionalProperties: true
      additionalProperties: true
    ErrorProviderCandidateDiagnostics:
      type: object
      properties:
        totalProviders:
          type: integer
        supportsEndpointCount:
          type: integer
        candidateCount:
          type: integer
        droppedUnsupportedEndpoint:
          type: array
          items:
            type: string
        droppedMissingAdapter:
          type: array
          items:
            type: object
            properties:
              providerId:
                type: string
                nullable: true
              endpoint:
                type: string
                nullable: true
            additionalProperties: true
      additionalProperties: true
    ErrorProviderEnablementDiagnostics:
      type: object
      properties:
        capability:
          type: string
        providersBefore:
          type: array
          items:
            type: string
        providersAfter:
          type: array
          items:
            type: string
        dropped:
          type: array
          items:
            type: object
            properties:
              providerId:
                type: string
                nullable: true
              reason:
                type: string
                nullable: true
            additionalProperties: true
      additionalProperties: true
    BatchRequestCounts:
      type: object
      properties:
        total:
          type: integer
        completed:
          type: integer
        failed:
          type: integer
    AsyncWebhookPublicState:
      type: object
      description: >-
        Configuración depurada del webhook asíncrono y estado de entrega. Nunca
        se devuelven secretos; `has_secret` indica si las entregas firmadas
        están habilitadas. Las entregas firmadas incluyen las cabeceras
        x-phaseo-signature, x-phaseo-timestamp, x-phaseo-event-id,
        x-phaseo-event-type, x-phaseo-delivery-key, x-phaseo-attempt y
        x-phaseo-max-attempts.
      properties:
        url:
          type: string
          format: uri
          nullable: true
        events:
          type: array
          items:
            type: string
        has_secret:
          type: boolean
        delivery:
          $ref: '#/components/schemas/AsyncWebhookDeliverySummary'
        attempts:
          type: array
          items:
            $ref: '#/components/schemas/AsyncWebhookDeliveryAttempt'
    BatchBillingSummary:
      type: object
      properties:
        currency:
          type: string
        billed:
          type: boolean
        charged:
          type: boolean
        reason:
          type: string
        state:
          type: string
          enum:
            - pending
            - estimated
            - settled
            - void
        reservation_id:
          type: string
          nullable: true
        reservation_status:
          type: string
          nullable: true
        estimated_provider_cost:
          type: string
          nullable: true
        estimated_user_cost:
          type: string
          nullable: true
        settled_provider_cost:
          type: string
          nullable: true
        settled_user_cost:
          type: string
          nullable: true
        estimated_nanos:
          type: integer
          nullable: true
        reserved_nanos:
          type: integer
          nullable: true
        estimation_truncated:
          type: boolean
          nullable: true
          description: >-
            True si la estimación de reserva se escaló a partir de una muestra
            limitada de un archivo de entrada de lote mayor.
        estimation_sample_size:
          type: integer
          nullable: true
          description: >-
            Número de filas de entrada valoradas directamente para estimar la
            reserva.
        estimation_total_rows:
          type: integer
          nullable: true
          description: >-
            Total de filas de entrada representadas por la estimación de
            reserva.
        total_nanos:
          type: integer
          nullable: true
        cost_nanos:
          type: integer
          nullable: true
        cost_usd:
          type: number
          nullable: true
        finalized_at:
          type: string
          nullable: true
        pricing_breakdown:
          type: object
          additionalProperties: true
    AsyncWebhookDeliverySummary:
      type: object
      description: >-
        Resumen público de entrega de webhooks asíncronos gestionados por la
        pasarela. Permite distinguir el estado de ejecución del trabajo del
        estado de entrega del webhook.
      properties:
        total_attempts:
          type: integer
          description: Total de intentos de entrega registrados para este trabajo.
        delivered_events:
          type: integer
          description: Número de claves de entrega que han alcanzado el estado entregado.
        delivered_event_types:
          type: array
          description: Claves de entrega entregadas al menos una vez.
          items:
            type: string
          example:
            - video.completed
        pending_retries:
          type: integer
          description: Número de claves de entrega con un reintento programado actualmente.
        next_retry_at:
          type: string
          nullable: true
          description: Marca de tiempo ISO del próximo reintento programado, si existe.
        last_attempt_at:
          type: string
          nullable: true
          description: Marca de tiempo ISO del intento de entrega más reciente.
        last_attempt_status:
          type: string
          nullable: true
          enum:
            - delivered
            - scheduled_retry
            - failed_permanently
          description: Resultado del intento de entrega más reciente.
        last_response_status:
          type: integer
          nullable: true
          description: Estado HTTP devuelto por el destino del webhook, si está disponible.
        last_delivered_at:
          type: string
          nullable: true
          description: Marca de tiempo ISO de la entrega correcta más reciente.
        last_failure_at:
          type: string
          nullable: true
          description: Marca de tiempo ISO del intento fallido o en reintento más reciente.
        last_error_message:
          type: string
          nullable: true
          description: Mensaje de error de entrega más reciente, si está disponible.
    AsyncWebhookDeliveryAttempt:
      type: object
      description: >-
        Intento reciente de entrega de un webhook asíncrono gestionado por la
        pasarela.
      properties:
        id:
          type: string
          description: Identificador estable del intento para auditoría y depuración.
        delivery_key:
          type: string
          description: Clave de idempotencia para la entrega de este evento.
          example: video.completed
        event_type:
          type: string
          description: Tipo de evento entregado al destino del webhook.
          example: video.completed
        status:
          type: string
          enum:
            - delivered
            - scheduled_retry
            - failed_permanently
        attempt_number:
          type: integer
          description: Número de intento para esta clave de entrega, comenzando en uno.
        max_attempts:
          type: integer
          description: >-
            Máximo de intentos antes de marcar la entrega como fallida
            permanentemente.
        tried_at:
          type: string
          description: Marca de tiempo ISO de este intento.
        delivered_at:
          type: string
          nullable: true
          description: Marca de tiempo ISO de la entrega correcta de este intento.
        next_retry_at:
          type: string
          nullable: true
          description: >-
            Marca de tiempo ISO del próximo reintento tras este intento, si está
            programado.
        response_status:
          type: integer
          nullable: true
          description: Estado HTTP devuelto por el destino del webhook, si está disponible.
        error_message:
          type: string
          nullable: true
          description: Mensaje de error de entrega, si está disponible.
        response_body_preview:
          type: string
          nullable: true
          description: >-
            Vista previa del cuerpo de respuesta del destino del webhook con
            información sensible oculta.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Autenticación con token Bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.