---
title: Batch rows query
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > API Reference > Reference Tables
---

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# Batch rows query{% #batch-rows-query %}
Copy pageCopied
{% tab title="v2" %}

| Datadog site      | API endpoint                                                                  |
| ----------------- | ----------------------------------------------------------------------------- |
| ap1.datadoghq.com | POST https://api.ap1.datadoghq.com/api/v2/reference-tables/queries/batch-rows |
| ap2.datadoghq.com | POST https://api.ap2.datadoghq.com/api/v2/reference-tables/queries/batch-rows |
| app.datadoghq.eu  | POST https://api.datadoghq.eu/api/v2/reference-tables/queries/batch-rows      |
| app.ddog-gov.com  | POST https://api.ddog-gov.com/api/v2/reference-tables/queries/batch-rows      |
| us2.ddog-gov.com  | POST https://api.us2.ddog-gov.com/api/v2/reference-tables/queries/batch-rows  |
| uk1.datadoghq.com | POST https://api.uk1.datadoghq.com/api/v2/reference-tables/queries/batch-rows |
| app.datadoghq.com | POST https://api.datadoghq.com/api/v2/reference-tables/queries/batch-rows     |
| us3.datadoghq.com | POST https://api.us3.datadoghq.com/api/v2/reference-tables/queries/batch-rows |
| us5.datadoghq.com | POST https://api.us5.datadoghq.com/api/v2/reference-tables/queries/batch-rows |

### Overview

Batch query reference table rows by their primary key values. Returns only found rows in the included array.

### Request

#### Body Data (required)



{% tab title="Model" %}

| Parent field | Field                      | Type     | Description                                                                                                                  |
| ------------ | -------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
|              | data                       | object   | Data object for a batch rows query request.                                                                                  |
| data         | attributes                 | object   | Attributes for a batch rows query request.                                                                                   |
| attributes   | row_ids [*required*]  | [string] | List of row identifiers to query from the reference table.                                                                   |
| attributes   | table_id [*required*] | string   | Unique identifier of the reference table to query.                                                                           |
| data         | type [*required*]     | enum     | Resource type identifier for batch queries of reference table rows. Allowed enum values: `reference-tables-batch-rows-query` |

{% /tab %}

{% tab title="Example" %}

```json
{
  "data": {
    "attributes": {
      "row_ids": [
        "row_id_1",
        "row_id_2"
      ],
      "table_id": "00000000-0000-0000-0000-000000000000"
    },
    "type": "reference-tables-batch-rows-query"
  }
}
```

{% /tab %}

### Response

{% tab title="200" %}
Successfully retrieved rows. Some or all requested rows were found. Response includes found rows in the included section.
{% tab title="Model" %}
Response object for a batch rows query against a reference table.

| Parent field  | Field                  | Type     | Description                                                                                                                  |
| ------------- | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
|               | data                   | object   | Data object for a batch rows query response.                                                                                 |
| data          | id                     | string   | Unique identifier of the batch query.                                                                                        |
| data          | relationships          | object   | Relationships of the batch rows query response data.                                                                         |
| relationships | rows                   | object   | Relationship data containing the list of matching rows.                                                                      |
| rows          | data                   | [object] |
| data          | id [*required*]   | string   | The primary key value that uniquely identifies the row to delete.                                                            |
| data          | type [*required*] | enum     | Row resource type. Allowed enum values: `row`                                                                                |
| data          | type [*required*] | enum     | Resource type identifier for batch queries of reference table rows. Allowed enum values: `reference-tables-batch-rows-query` |
|               | included               | [object] | Full row resources matching the query, included alongside the relationship references in `data`.                             |
| included      | attributes             | object   | Column values for this row in the reference table.                                                                           |
| attributes    | values                 | object   | Key-value pairs representing the row data, where keys are field names from the schema.                                       |
| included      | id                     | string   | Row identifier, corresponding to the primary key value.                                                                      |
| included      | type [*required*] | enum     | Row resource type. Allowed enum values: `row`                                                                                |

{% /tab %}

{% tab title="Example" %}

```json
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "relationships": {
      "rows": {
        "data": [
          {
            "id": "row_id_1",
            "type": "row"
          },
          {
            "id": "row_id_2",
            "type": "row"
          }
        ]
      }
    },
    "type": "reference-tables-batch-rows-query"
  },
  "included": [
    {
      "attributes": {
        "values": {
          "ip_address": "102.130.113.9"
        }
      },
      "id": "row_id_1",
      "type": "row"
    },
    {
      "attributes": {
        "values": {
          "ip_address": "102.130.113.10"
        }
      },
      "id": "row_id_2",
      "type": "row"
    }
  ]
}
```

{% /tab %}

{% /tab %}

{% tab title="400" %}
Bad Request
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

{% tab title="403" %}
Forbidden
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

{% tab title="404" %}
Not Found
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

{% tab title="429" %}
Too many requests
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

{% tab title="500" %}
Internal Server Error
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

### Code Example

##### 
                  \## default
# 
 \# Use a Personal Access Token or Service Access Token export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"  \# Curl command curl -X POST "https://api.datadoghq.com/api/v2/reference-tables/queries/batch-rows" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "data": {
    "attributes": {
      "row_ids": [
        "row_id_1",
        "row_id_2"
      ],
      "table_id": "00000000-0000-0000-0000-000000000000"
    },
    "type": "reference-tables-batch-rows-query"
  }
}
EOF \## Batch query reference table rows by their primary key values.
# 
 \# Use a Personal Access Token or Service Access Token export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"  \# Curl command curl -X POST "https://api.datadoghq.com/api/v2/reference-tables/queries/batch-rows" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "data": {
    "attributes": {
      "row_ids": [
        "row_id_1",
        "row_id_2"
      ],
      "table_id": "00000000-0000-0000-0000-000000000000"
    },
    "type": "reference-tables-batch-rows-query"
  }
}
EOF 
                
##### 

```python
"""
Batch rows query returns "Successfully retrieved rows. Some or all requested rows were found. Response includes found
rows in the included section." response
"""

from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.reference_tables_api import ReferenceTablesApi
from datadog_api_client.v2.model.batch_rows_query_data_type import BatchRowsQueryDataType
from datadog_api_client.v2.model.batch_rows_query_request import BatchRowsQueryRequest
from datadog_api_client.v2.model.batch_rows_query_request_data import BatchRowsQueryRequestData
from datadog_api_client.v2.model.batch_rows_query_request_data_attributes import BatchRowsQueryRequestDataAttributes

body = BatchRowsQueryRequest(
    data=BatchRowsQueryRequestData(
        attributes=BatchRowsQueryRequestDataAttributes(
            row_ids=[
                "row_id_1",
                "row_id_2",
            ],
            table_id="00000000-0000-0000-0000-000000000000",
        ),
        type=BatchRowsQueryDataType.REFERENCE_TABLES_BATCH_ROWS_QUERY,
    ),
)

configuration = Configuration()
configuration.access_token = environ["DD_BEARER_TOKEN"]
with ApiClient(configuration) as api_client:
    api_instance = ReferenceTablesApi(api_client)
    response = api_instance.batch_rows_query(body=body)

    print(response)
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=python) and then save the example to `example.py` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"
##### 

```ruby
# Batch rows query returns "Successfully retrieved rows. Some or all requested rows were found. Response includes found
# rows in the included section." response

require "datadog_api_client"
DatadogAPIClient.configure do |config|
  config.access_token = ENV["DD_BEARER_TOKEN"]
end
api_instance = DatadogAPIClient::V2::ReferenceTablesAPI.new

body = DatadogAPIClient::V2::BatchRowsQueryRequest.new({
  data: DatadogAPIClient::V2::BatchRowsQueryRequestData.new({
    attributes: DatadogAPIClient::V2::BatchRowsQueryRequestDataAttributes.new({
      row_ids: [
        "row_id_1",
        "row_id_2",
      ],
      table_id: "00000000-0000-0000-0000-000000000000",
    }),
    type: DatadogAPIClient::V2::BatchRowsQueryDataType::REFERENCE_TABLES_BATCH_ROWS_QUERY,
  }),
})
p api_instance.batch_rows_query(body)
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=ruby) and then save the example to `example.rb` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"
##### 

```go
// Batch rows query returns "Successfully retrieved rows. Some or all requested rows were found. Response includes found
// rows in the included section." response

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)

func main() {
	body := datadogV2.BatchRowsQueryRequest{
		Data: &datadogV2.BatchRowsQueryRequestData{
			Attributes: &datadogV2.BatchRowsQueryRequestDataAttributes{
				RowIds: []string{
					"row_id_1",
					"row_id_2",
				},
				TableId: "00000000-0000-0000-0000-000000000000",
			},
			Type: datadogV2.BATCHROWSQUERYDATATYPE_REFERENCE_TABLES_BATCH_ROWS_QUERY,
		},
	}
	ctx := datadog.NewDefaultContext(context.Background())
	ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
	configuration := datadog.NewConfiguration()
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV2.NewReferenceTablesApi(apiClient)
	resp, r, err := api.BatchRowsQuery(ctx, body)

	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `ReferenceTablesApi.BatchRowsQuery`: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `ReferenceTablesApi.BatchRowsQuery`:\n%s\n", responseContent)
}
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=go) and then save the example to `main.go` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"
##### 

```java
// Batch rows query returns "Successfully retrieved rows. Some or all requested rows were found.
// Response includes found
// rows in the included section." response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ReferenceTablesApi;
import com.datadog.api.client.v2.model.BatchRowsQueryDataType;
import com.datadog.api.client.v2.model.BatchRowsQueryRequest;
import com.datadog.api.client.v2.model.BatchRowsQueryRequestData;
import com.datadog.api.client.v2.model.BatchRowsQueryRequestDataAttributes;
import com.datadog.api.client.v2.model.BatchRowsQueryResponse;
import java.util.Arrays;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = ApiClient.getDefaultApiClient();
    defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
    ReferenceTablesApi apiInstance = new ReferenceTablesApi(defaultClient);

    BatchRowsQueryRequest body =
        new BatchRowsQueryRequest()
            .data(
                new BatchRowsQueryRequestData()
                    .attributes(
                        new BatchRowsQueryRequestDataAttributes()
                            .rowIds(Arrays.asList("row_id_1", "row_id_2"))
                            .tableId("00000000-0000-0000-0000-000000000000"))
                    .type(BatchRowsQueryDataType.REFERENCE_TABLES_BATCH_ROWS_QUERY));

    try {
      BatchRowsQueryResponse result = apiInstance.batchRowsQuery(body);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling ReferenceTablesApi#batchRowsQuery");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=java) and then save the example to `Example.java` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"
##### 

```rust
// Batch rows query returns "Successfully retrieved rows. Some or all requested
// rows were found. Response includes found rows in the included section." response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_reference_tables::ReferenceTablesAPI;
use datadog_api_client::datadogV2::model::BatchRowsQueryDataType;
use datadog_api_client::datadogV2::model::BatchRowsQueryRequest;
use datadog_api_client::datadogV2::model::BatchRowsQueryRequestData;
use datadog_api_client::datadogV2::model::BatchRowsQueryRequestDataAttributes;

#[tokio::main]
async fn main() {
    let body = BatchRowsQueryRequest::new().data(
        BatchRowsQueryRequestData::new(BatchRowsQueryDataType::REFERENCE_TABLES_BATCH_ROWS_QUERY)
            .attributes(BatchRowsQueryRequestDataAttributes::new(
                vec!["row_id_1".to_string(), "row_id_2".to_string()],
                "00000000-0000-0000-0000-000000000000".to_string(),
            )),
    );
    let configuration = datadog::Configuration::new();
    let api = ReferenceTablesAPI::with_config(configuration);
    let resp = api.batch_rows_query(body).await;
    if let Ok(value) = resp {
        println!("{:#?}", value);
    } else {
        println!("{:#?}", resp.unwrap_err());
    }
}
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=rust) and then save the example to `src/main.rs` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
##### 

```typescript
/**
 * Batch rows query returns "Successfully retrieved rows. Some or all requested rows were found. Response includes found
 * rows in the included section." response
 */

import { client, v2 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration({
  authMethods: {
    AuthZ: {
      accessToken: process.env.DD_BEARER_TOKEN as string,
    },
  },
});
const apiInstance = new v2.ReferenceTablesApi(configuration);

const params: v2.ReferenceTablesApiBatchRowsQueryRequest = {
  body: {
    data: {
      attributes: {
        rowIds: ["row_id_1", "row_id_2"],
        tableId: "00000000-0000-0000-0000-000000000000",
      },
      type: "reference-tables-batch-rows-query",
    },
  },
};

apiInstance
  .batchRowsQuery(params)
  .then((data: v2.BatchRowsQueryResponse) => {
    console.log(
      "API called successfully. Returned data: " + JSON.stringify(data)
    );
  })
  .catch((error: any) => console.error(error));
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=typescript) and then save the example to `example.ts` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"
{% /tab %}
