---
title: Batch rows query
description: Batch query reference table rows by their primary key values. Returns only found rows in the included array.
breadcrumbs: ドキュメント > API > Batch rows query
---

> For the complete documentation index, see [llms.txt](https://dnd37xeb23o8n.cloudfront.net/stefon.simmons/docs-astro-web-10435/llms.txt).

# Batch rows query

## v2 (latest)

| Datadog site      | API endpoint                                                                  |
| ----------------- | ----------------------------------------------------------------------------- |
| 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 |
| app.datadoghq.eu  | POST https://api.datadoghq.eu/api/v2/reference-tables/queries/batch-rows      |
| 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 |
| uk1.datadoghq.com | POST https://api.uk1.datadoghq.com/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  |

### Overview

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

### Request

#### Body Data (required)

{% tabs %}
{% tab label="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`. Default: `reference-tables-batch-rows-query`. |
{% /tab %}

{% tab label="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 %}
{% /tabs %}

### Response

{% tabs %}
{% tab label="200" %}
Successfully retrieved rows. Some or all requested rows were found. Response includes found rows in the included section.

{% tabs %}
{% tab label="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`. Default: `row`.                                                                                                              |
| data          | type [*required*] | enum     | Resource type identifier for batch queries of reference table rows. Allowed enum values: `reference-tables-batch-rows-query`. Default: `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`. Default: `row`.                                                                                                              |
{% /tab %}

{% tab label="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 %}
{% /tabs %}
{% /tab %}

{% tab label="400" %}
Bad Request

{% tabs %}
{% tab label="Model" %}
API error response.

| Field               | Type     | Description       |
| ------------------- | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |
{% /tab %}

{% tab label="Example" %}
```json
{
  "errors": [
    "Bad Request"
  ]
}
```
{% /tab %}
{% /tabs %}
{% /tab %}

{% tab label="403" %}
Forbidden

{% tabs %}
{% tab label="Model" %}
API error response.

| Field               | Type     | Description       |
| ------------------- | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |
{% /tab %}

{% tab label="Example" %}
```json
{
  "errors": [
    "Bad Request"
  ]
}
```
{% /tab %}
{% /tabs %}
{% /tab %}

{% tab label="404" %}
Not Found

{% tabs %}
{% tab label="Model" %}
API error response.

| Field               | Type     | Description       |
| ------------------- | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |
{% /tab %}

{% tab label="Example" %}
```json
{
  "errors": [
    "Bad Request"
  ]
}
```
{% /tab %}
{% /tabs %}
{% /tab %}

{% tab label="429" %}
Too many requests

{% tabs %}
{% tab label="Model" %}
API error response.

| Field               | Type     | Description       |
| ------------------- | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |
{% /tab %}

{% tab label="Example" %}
```json
{
  "errors": [
    "Bad Request"
  ]
}
```
{% /tab %}
{% /tabs %}
{% /tab %}

{% tab label="500" %}
Internal Server Error

{% tabs %}
{% tab label="Model" %}
API error response.

| Field               | Type     | Description       |
| ------------------- | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |
{% /tab %}

{% tab label="Example" %}
```json
{
  "errors": [
    "Bad Request"
  ]
}
```
{% /tab %}
{% /tabs %}
{% /tab %}
{% /tabs %}

### Code Example

{% tabs %}
{% tab label="Curl" %}
```bash
## default

# Set your Datadog site and credentials
export DD_SITE="datadoghq.com" # Or us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu, ap1.datadoghq.com, ap2.datadoghq.com, uk1.datadoghq.com, ddog-gov.com, us2.ddog-gov.com
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/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.

# Set your Datadog site and credentials
export DD_SITE="datadoghq.com" # Or us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu, ap1.datadoghq.com, ap2.datadoghq.com, uk1.datadoghq.com, ddog-gov.com, us2.ddog-gov.com
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/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
```
{% /tab %}

{% tab label="Go" %}
```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://dnd37xeb23o8n.cloudfront.net/api/latest.md?code-lang=go) and then save the example to `main.go` and run following commands:

```bash
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"
```
{% /tab %}

{% tab label="Java" %}
```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://dnd37xeb23o8n.cloudfront.net/api/latest.md?code-lang=java) and then save the example to `Example.java` and run following commands:

```bash
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"
```
{% /tab %}

{% tab label="Python" %}
```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://dnd37xeb23o8n.cloudfront.net/api/latest.md?code-lang=python) and then save the example to `example.py` and run following commands:

```bash
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"
```
{% /tab %}

{% tab label="Ruby" %}
```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://dnd37xeb23o8n.cloudfront.net/api/latest.md?code-lang=ruby) and then save the example to `example.rb` and run following commands:

```bash
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"
```
{% /tab %}

{% tab label="Rust" %}
```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://dnd37xeb23o8n.cloudfront.net/api/latest.md?code-lang=rust) and then save the example to `src/main.rs` and run following commands:

```bash
DD_SITE="datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
```
{% /tab %}

{% tab label="TypeScript" %}
```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://dnd37xeb23o8n.cloudfront.net/api/latest.md?code-lang=typescript) and then save the example to `example.ts` and run following commands:

```bash
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"
```
{% /tab %}
{% /tabs %}
