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

# List Products

> List all extracts with status. Shows all extract jobs, their current status, and when they were created.

<Tip>
  **When to use:** Monitor all your product processing operations in one place. Use this endpoint to:

  * See all product processing executions you've started
  * Filter by status (processing, completed, failed)
  * Track when processing jobs were initiated
  * Find execution IDs for status checks
</Tip>

<Note>
  **Organization Scoped:** This endpoint only returns executions belonging to your organization. You cannot see executions from other organizations.
</Note>

## Request

<ParamField header="x-api-key" type="string" required>
  Your API key for authentication
</ParamField>

### Query Parameters

<ParamField query="status" type="string" optional>
  Filter executions by status. Possible values: `"processing"`, `"completed"`, `"failed"`

  **Note:** If not provided, all executions are returned regardless of status.
</ParamField>

<ParamField query="page_size" type="number" optional>
  Number of executions to return (default: 20)

  **Note:** Executions are returned in reverse chronological order (most recent first).
</ParamField>

## Response

<ResponseField name="data" type="array">
  Array of execution summary objects

  <Expandable title="Execution Summary">
    <ResponseField name="execution_id" type="string">
      Unique execution identifier. Use this ID with [`GET /v1/products/{execution_id}`](/v1/api-reference/endpoints/extract/get-products-execution-status) to check detailed status and results.

      **Format:** `products-batch-{uuid}`
    </ResponseField>

    <ResponseField name="status" type="string">
      Current execution status

      **Possible values:**

      * `"processing"` - Execution is currently running
      * `"completed"` - Execution finished successfully
      * `"failed"` - Execution failed or was aborted
    </ResponseField>

    <ResponseField name="created_at" type="string">
      ISO 8601 timestamp when the execution was created
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object">
  Pagination metadata

  <Expandable title="Pagination Properties">
    <ResponseField name="page" type="number">
      Current page number
    </ResponseField>

    <ResponseField name="page_size" type="number">
      Number of items per page
    </ResponseField>

    <ResponseField name="total_items" type="number">
      Total number of items across all pages
    </ResponseField>

    <ResponseField name="total_pages" type="number">
      Total number of pages available
    </ResponseField>

    <ResponseField name="has_next" type="boolean">
      Whether there is a next page
    </ResponseField>

    <ResponseField name="has_prev" type="boolean">
      Whether there is a previous page
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object">
  Response metadata

  <Expandable title="Meta Properties">
    <ResponseField name="request_id" type="string" optional>
      Unique request identifier for support purposes
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample dropdown>
  ```powershell cURL theme={null}
  # Get all executions
  curl -X GET "https://api.getcatalog.ai/v1/products" \
    -H "x-api-key: $CATALOG_API_KEY"

  # Get only completed executions
  curl -X GET "https://api.getcatalog.ai/v1/products?status=completed" \
    -H "x-api-key: $CATALOG_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  // Get all executions
  const response = await fetch('https://api.getcatalog.ai/v1/products', {
    headers: {
      'x-api-key': 'YOUR_API_KEY'
    }
  });

  const data = await response.json();
  console.log(`Found ${data.data.length} executions`);

  // Get only completed executions
  const processingResponse = await fetch(
    'https://api.getcatalog.ai/v1/products?status=completed',
    {
      headers: {
        'x-api-key': 'YOUR_API_KEY'
      }
    }
  );

  const processingData = await processingResponse.json();
  console.log(`Found ${processingData.data.length} processing executions`);
  ```

  ```python Python theme={null}
  import requests

  # Get all executions
  response = requests.get(
      'https://api.getcatalog.ai/v1/products',
      headers={'x-api-key': 'YOUR_API_KEY'}
  )

  data = response.json()
  print(f"Found {len(data['data'])} executions")

  # Get only completed executions
  failed_response = requests.get(
      'https://api.getcatalog.ai/v1/products',
      headers={'x-api-key': 'YOUR_API_KEY'},
      params={'status': 'completed'}
  )

  failed_data = failed_response.json()
  print(f"Found {len(failed_data['data'])} failed executions")
  ```
</RequestExample>

<ResponseExample>
  ```json Success Response theme={null}
  {
    "executions": [
      {
        "execution_id": "products-batch-51d87084-7f42-402f-a5af-6ff512c82cd0",
        "status": "completed",
        "created_at": "2026-01-08T13:37:33.234859+00:00"
      }
    ]
  }
  ```
</ResponseExample>
