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

# /2027-01/retail-media/catalog/ingestion/{ingestion-id}/reports/quality

> Download the per-product quality issues report of a catalog ingestion: the products flagged by the data-quality checks of the import, as a CSV file with one row per flagged product. The columns say, for each data-quality check, whether the product passes it. The file is compressed on the wire (`Content-Encoding: gzip`): HTTP clients decompress it transparently, `curl` needs `--compressed`. While the ingestion is still in progress its report does not exist yet: the answer is then a 202 with no body and a `Retry-After` header, to ask again later.



## OpenAPI

````yaml https://api.criteo.com/2027-01/retailmedia/open-api-specifications.json get /2027-01/retail-media/catalog/ingestion/{ingestion-id}/reports/quality
openapi: 3.0.1
info:
  title: Criteo API
  description: Criteo API - RetailMedia
  version: 2027-01
servers:
  - url: https://api.criteo.com
security:
  - oauth: []
tags:
  - name: Accounts
  - name: Analytics
  - name: Audience
  - name: Balance
  - name: Billing
  - name: Campaign
  - name: Catalog
  - name: Gateway
paths:
  /2027-01/retail-media/catalog/ingestion/{ingestion-id}/reports/quality:
    get:
      tags:
        - Catalog
      summary: /2027-01/retail-media/catalog/ingestion/{ingestion-id}/reports/quality
      description: >-
        Download the per-product quality issues report of a catalog ingestion:
        the products flagged by the data-quality checks of the import, as a CSV
        file with one row per flagged product. The columns say, for each
        data-quality check, whether the product passes it. The file is
        compressed on the wire (`Content-Encoding: gzip`): HTTP clients
        decompress it transparently, `curl` needs `--compressed`. While the
        ingestion is still in progress its report does not exist yet: the answer
        is then a 202 with no body and a `Retry-After` header, to ask again
        later.
      operationId: GetCatalogIngestionQualityIssuesReport
      parameters:
        - name: ingestion-id
          in: path
          description: >-
            Identifies the catalog ingestion whose quality issues report is
            downloaded.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            The quality issues report, a UTF-8 CSV file with one row per flagged
            product. When the stored file is gzip-compressed the response
            carries `Content-Encoding: gzip`, and HTTP clients decompress it
            transparently.
          content:
            text/csv:
              schema:
                type: string
                format: binary
        '202':
          description: >-
            The ingestion is still in progress, so its report does not exist
            yet. Ask again later: the `Retry-After` header says how many seconds
            to wait. The response has no body.
          content:
            text/csv: {}
      security:
        - oauth:
            - RetailMedia_Catalog_Read
components:
  securitySchemes:
    oauth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.criteo.com/oauth2/token
          scopes:
            RetailMedia_Accounts_Manage: >-
              Grants Manage access to the capabilities from the Accounts domain,
              for RetailMedia applications
            RetailMedia_Accounts_Read: >-
              Grants Read access to the capabilities from the Accounts domain,
              for RetailMedia applications
            RetailMedia_Analytics_Read: >-
              Grants Read access to the capabilities from the Analytics domain,
              for RetailMedia applications
            RetailMedia_Audience_Manage: >-
              Grants Manage access to the capabilities from the Audience domain,
              for RetailMedia applications
            RetailMedia_Audience_Read: >-
              Grants Read access to the capabilities from the Audience domain,
              for RetailMedia applications
            RetailMedia_Balance_Manage: >-
              Grants Manage access to the capabilities from the Balance domain,
              for RetailMedia applications
            RetailMedia_Balance_Read: >-
              Grants Read access to the capabilities from the Balance domain,
              for RetailMedia applications
            RetailMedia_Billing_Read: >-
              Grants Read access to the capabilities from the Billing domain,
              for RetailMedia applications
            RetailMedia_Campaign_Manage: >-
              Grants Manage access to the capabilities from the Campaign domain,
              for RetailMedia applications
            RetailMedia_Campaign_Read: >-
              Grants Read access to the capabilities from the Campaign domain,
              for RetailMedia applications
            RetailMedia_Catalog_Manage: >-
              Grants Manage access to the capabilities from the Catalog domain,
              for RetailMedia applications
            RetailMedia_Catalog_Read: >-
              Grants Read access to the capabilities from the Catalog domain,
              for RetailMedia applications
        authorizationCode:
          authorizationUrl: https://api.criteo.com/oauth2
          tokenUrl: https://api.criteo.com/oauth2/token
          scopes:
            RetailMedia_Accounts_Manage: >-
              Grants Manage access to the capabilities from the Accounts domain,
              for RetailMedia applications
            RetailMedia_Accounts_Read: >-
              Grants Read access to the capabilities from the Accounts domain,
              for RetailMedia applications
            RetailMedia_Analytics_Read: >-
              Grants Read access to the capabilities from the Analytics domain,
              for RetailMedia applications
            RetailMedia_Audience_Manage: >-
              Grants Manage access to the capabilities from the Audience domain,
              for RetailMedia applications
            RetailMedia_Audience_Read: >-
              Grants Read access to the capabilities from the Audience domain,
              for RetailMedia applications
            RetailMedia_Balance_Manage: >-
              Grants Manage access to the capabilities from the Balance domain,
              for RetailMedia applications
            RetailMedia_Balance_Read: >-
              Grants Read access to the capabilities from the Balance domain,
              for RetailMedia applications
            RetailMedia_Billing_Read: >-
              Grants Read access to the capabilities from the Billing domain,
              for RetailMedia applications
            RetailMedia_Campaign_Manage: >-
              Grants Manage access to the capabilities from the Campaign domain,
              for RetailMedia applications
            RetailMedia_Campaign_Read: >-
              Grants Read access to the capabilities from the Campaign domain,
              for RetailMedia applications
            RetailMedia_Catalog_Manage: >-
              Grants Manage access to the capabilities from the Catalog domain,
              for RetailMedia applications
            RetailMedia_Catalog_Read: >-
              Grants Read access to the capabilities from the Catalog domain,
              for RetailMedia applications

````