User Community Service Desk Downloads

Retrieve DQ Results for External Systems

The REST API is currently in Early Access Preview. The API specification and endpoints might change before being marked as stable.

We recommend testing thoroughly and being prepared to adapt to potential changes in future releases.

This guide shows you how to retrieve DQ evaluation results for integration with external systems, enabling you to build custom dashboards in your BI tools and synchronize with third-party data catalogs.

Before using the Data Quality API, configure authentication as described in API Authentication.

When to use this API

Use the DQ results API when you need to:

  • Build custom dashboards: Create organization-specific quality views that aggregate data across multiple sources, or use DQ metrics in tools like Power BI, Tableau, or Looker.

  • Sync with data catalogs: Sync quality metadata to Collibra, Atlan, Alation, or Databricks Unity Catalog.

  • Audit and compliance: Extract quality history for regulatory reporting or internal audits.

What results are available

The API provides access to:

  • Overall quality: Passed and failed record counts (calculate percentage as passed / total).

  • Dimension breakdown: Quality results by dimension (Validity, Completeness, Accuracy, and others).

  • Attribute-level results: Quality breakdown by individual attributes.

  • Rule-level results: Pass/fail counts and explanations for each applied rule.

  • Invalid samples: Sample of actual records that failed evaluation, with failure reasons.

Retrieve results for a single monitor

The API uses the term processing to refer to any run that can include profiling, DQ evaluation, anomaly detection, or a combination of these. When a processingUrn appears in the API, it identifies a specific processing run.

Retrieve DQ evaluation results for a specific monitor using these values as processingUrn:

  • latest: Get results from the most recent completed processing.

  • {processingUrn}: Get results from a specific processing run.

Use primary as dqMonitorUrn to get results from the primary monitor without looking up its URN first. For secondary monitors, you need to provide the monitor’s URN.
Request
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/dq-results" \
  -H "Authorization: Bearer {access_token}"
Response example
{
  "processingUrn": "urn:ata:{your-tenant}:data-quality:processing:16658a27-0000-8010-8000-0000011a074d",
  "overallQuality": {
    "passedCount": 938,
    "failedCount": 1318
  },
  "dimensionResults": [
    {
      "dimension": {
        "name": "Validity",
        "urn": "urn:ata:{your-tenant}:data-quality:dimension:0a2a2a64-ff0f-4e05-94c1-3413f09a50e0",
        "results": [
          {
            "name": "Valid",
            "passedOverallResult": true,
            "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:67b7aed6-b54f-4be3-a987-95899f605029"
          },
          {
            "name": "Invalid",
            "passedOverallResult": false,
            "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ec49b8ed-52b2-469c-8424-4866249755cb"
          }
        ]
      },
      "passedCount": 1074,
      "failedCount": 1182,
      "ruleInstanceCount": 4
    },
    {
      "dimension": {
        "name": "Accuracy",
        "urn": "urn:ata:{your-tenant}:data-quality:dimension:94b2ceaf-a0ab-44c4-94ce-7fbf258a979d",
        "results": [
          {
            "name": "Accurate",
            "passedOverallResult": true,
            "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:1107cf33-8e66-481e-b925-d21013950c31"
          },
          {
            "name": "Not Accurate",
            "passedOverallResult": false,
            "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ead4240d-51ac-491a-8233-af6a5e2fee1e"
          },
          {
            "name": "No reference available",
            "passedOverallResult": true,
            "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:5f0874c9-0a5b-4243-8982-c2caad3c0429"
          }
        ]
      },
      "passedCount": 1943,
      "failedCount": 313,
      "ruleInstanceCount": 1
    }
  ],
  "catalogItemLink": "https://{your-environment}.ataccama.one/catalog/catalog-items/7b074cbc-0000-7000-0000-00000292006b",
  "dqResultsLink": "https://{your-environment}.ataccama.one/entities/catalog-item-dq-configurations/7b074cbc-0000-7000-0000-000002920092/results",
  "invalidSamplesLink": "https://{your-environment}.ataccama.one/entities/catalog-item-dq-configurations/7b074cbc-0000-7000-0000-000002920092/invalid-records",
  "dqAttributeResults": [
    {
      "attributeUrn": "urn:ata:{your-tenant}:catalog:catalog-attribute:7b074cbc-0000-7000-0000-00000292006f",
      "attributeName": "EMAIL",
      "overallQuality": {
        "passedCount": 1721,
        "failedCount": 535
      },
      "dimensionResults": [
        {
          "dimension": {
            "name": "Validity",
            "urn": "urn:ata:{your-tenant}:data-quality:dimension:0a2a2a64-ff0f-4e05-94c1-3413f09a50e0",
            "results": [
              {
                "name": "Valid",
                "passedOverallResult": true,
                "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:67b7aed6-b54f-4be3-a987-95899f605029"
              },
              {
                "name": "Invalid",
                "passedOverallResult": false,
                "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ec49b8ed-52b2-469c-8424-4866249755cb"
              }
            ]
          },
          "passedCount": 1721,
          "failedCount": 535,
          "ruleInstanceCount": 1
        }
      ],
      "ruleInstanceResults": [
        {
          "ruleInstanceUrn": "urn:ata:{your-tenant}:data-quality:rule-instance:7b074cbc-0000-7000-0000-0000029300e6",
          "ruleUrn": "urn:ata:{your-tenant}:data-quality:rule:7b074cbc-0000-7000-0000-000002910082",
          "ruleInstanceName": "E-mail is valid!",
          "ruleName": "E-mail is valid",
          "results": [
            {
              "count": 1721,
              "result": {
                "name": "Valid",
                "passedOverallResult": true,
                "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:67b7aed6-b54f-4be3-a987-95899f605029"
              }
            },
            {
              "count": 535,
              "result": {
                "name": "Invalid",
                "passedOverallResult": false,
                "urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ec49b8ed-52b2-469c-8424-4866249755cb"
              }
            }
          ],
          "explanations": [
            {
              "urn": "urn:ata:{your-tenant}:data-quality:explanation:7b074cbc-0000-7000-0000-000002980077",
              "name": "Invalid format",
              "count": 0
            },
            {
              "urn": "urn:ata:{your-tenant}:data-quality:explanation:7b074cbc-0000-7000-0000-000002920026",
              "name": "IS_EMPTY",
              "count": 535
            },
            {
              "urn": "urn:ata:{your-tenant}:data-quality:explanation:7b074cbc-0000-7000-0000-000002920029",
              "name": "NOREPLY_EMAIL",
              "count": 0
            }
          ]
        }
      ]
    }
  ]
}

The response includes:

  • overallQuality: Passed and failed record counts across the entire monitor.

  • dimensionResults: Quality breakdown by dimension, with pass/fail counts and the number of rule instances contributing to each dimension.

  • catalogItemLink, dqResultsLink, invalidSamplesLink: Direct links to the catalog item, DQ results, and invalid samples in Ataccama ONE.

  • dqAttributeResults: Per-attribute quality breakdown, including dimension results and individual rule instance results with explanations.

Filter results by attribute

By default, the response includes results for all attributes. To retrieve results for specific attributes only, add the attributeUrns query parameter.

Request
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/dq-results?attributeUrns={attributeUrn1}&attributeUrns={attributeUrn2}" \
  -H "Authorization: Bearer {access_token}"

The response structure is the same, but dqAttributeResults contains only the requested attributes.

Retrieve results for multiple monitors

For dashboards or reports spanning multiple data assets, use the bulk endpoint to retrieve results from multiple monitors in a single request. Each request can include up to 100 catalog item and DQ monitor pairs. The bulk endpoint returns a simplified result structure containing only overallQuality and dimensionResults for each monitor — it does not include dqAttributeResults. To get attribute-level and rule-level details, use the single-monitor endpoint for each monitor individually.

The bulk endpoint always returns results from the latest completed processing for each monitor. The dimensionResults array in the bulk response use dimensionUrn field instead of the nested dimension object returned by the single-monitor endpoint.
Request
curl -X POST "https://{your-environment}.ataccama.one/api/data-quality/v1/dq-results/bulk" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": [
      {
        "catalogItemUrn": "urn:ata:{your-tenant}:catalog:catalog-item:123e4567-...",
        "dqMonitorUrn": "urn:ata:{your-tenant}:data-quality:dq-monitor:456e4567-..."
      },
      {
        "catalogItemUrn": "urn:ata:{your-tenant}:catalog:catalog-item:789e4567-...",
        "dqMonitorUrn": "urn:ata:{your-tenant}:data-quality:dq-monitor:012e4567-..."
      }
    ]
  }'

The response is an array of result objects, each containing catalogItemUrn, dqMonitorUrn, processingUrn, processingStartedAt, processingFinishedAt, overallQuality, and dimensionResults.

Retrieve invalid record samples

Invalid samples show the actual records that failed DQ evaluation. This is useful for investigating data quality issues and understanding why specific records failed.

Catalog item attributes in the response correspond to the version published at the time the processing started.

Get schema of invalid record samples

Start by retrieving the column headers to understand the structure of the invalid samples.

Request
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/invalid-samples/headers" \
  -H "Authorization: Bearer {access_token}"
Response example
{
  "headers": [
    {
      "attributeUrn": "urn:ata:{your-tenant}:catalog:catalog-attribute:...",
      "attributeName": "email",
      "dataType": "STRING",
      "columnType": "varchar",
      "protection": "UNCLASSIFIED"
    },
    {
      "attributeUrn": "urn:ata:{your-tenant}:catalog:catalog-attribute:...",
      "attributeName": "phone",
      "dataType": "STRING",
      "columnType": "varchar",
      "protection": "UNCLASSIFIED"
    }
  ]
}
  • attributeName: Name of the attribute.

  • dataType: Data type of the attribute, such as STRING or LONG.

  • columnType: Source column type, such as VARCHAR or NUMBER.

  • protection: Protection/Classification level of the attribute (PROTECTED, CLASSIFIED, UNCLASSIFIED).

Get invalid record samples

Request
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/invalid-samples?size=100" \
  -H "Authorization: Bearer {access_token}"
Query parameters
Parameter Type Required Description

size

integer

No

Number of samples to return per page.

Default: 20.

Max: 100.

after

string

No

Cursor for forward pagination. Use the value from meta.next in the previous response.

before

string

No

Cursor for backward pagination. Use the value from meta.prev in the previous response.

Response example
{
  "meta": {
    "prev": null,
    "next": "eyJvZmZzZXQiOjEwMH0="
  },
  "data": [
    {
      "recordId": 12345,
      "values": ["invalid-email", "+1-555-0123"],
      "invalidRuleInstances": [
        {
          "ruleInstanceUrn": "urn:ata:{your-tenant}:data-quality:rule-instance:...",
          "explanation": "Email format is invalid"
        }
      ]
    },
    {
      "recordId": 12346,
      "values": ["another@bad", "+1-555-0124"],
      "invalidRuleInstances": [
        {
          "ruleInstanceUrn": "urn:ata:{your-tenant}:data-quality:rule-instance:...",
          "explanation": "Email format is invalid"
        }
      ]
    }
  ]
}
The values array corresponds to the headers array from the headers endpoint, in the same order. To paginate through results, pass the meta.next value as the after parameter in your next request.

Browse DQ evaluation history

List past DQ evaluation runs to access historical results or track quality over time.

Request
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings?size=10&sort=-finishedAt" \
  -H "Authorization: Bearer {access_token}"
Query parameters
Parameter Type Required Description

size

integer

No

Number of results to return per page.

Default: 20.

Max: 100.

sort

string

No

Comma-separated field names for sorting.

Prefix with a hyphen (-) for descending order.

Default: -finishedAt.

from

datetime

No

Start of filtered time range (ISO 8601 Date Time Format yyyy-MM-dd’T’HH:mm:ss.SSSXXX — for example, "2000-10-31T01:30:00.000-05:00").

to

datetime

No

End of filtered time range (ISO 8601 Date Time Format yyyy-MM-dd’T’HH:mm:ss.SSSXXX — for example, "2000-10-31T01:30:00.000-05:00").

state

string

No

Filter by processing state (for example, SUCCESS, FAILED, CANCELED, IN_PROGRESS, UNKNOWN).

after

string

No

Cursor for forward pagination. Use the value from meta.next in the previous response.

before

string

No

Cursor for backward pagination. Use the value from meta.prev in the previous response.

Error handling

The API returns standard HTTP status codes and problem details for errors:

Status code Description

200 OK

Request successful.

400 Bad Request

Invalid request parameters (for example, malformed URN or invalid filter). The response body includes a type, title, detail, and optionally an errors array with specific validation failures and JSON Pointer references to the problematic fields.

401 Unauthorized

Invalid or expired access token.

404 Not Found

Catalog item, monitor, or processing does not exist.

API reference

For detailed API reference, including all endpoints, parameters, request and response schemas, examples, see Data Quality API specification.

Next steps

Was this page useful?