---
title: Créer un filtre de rétention
description: Créez un filtre de rétention pour indexer les spans dans votre organisation.
breadcrumbs: Documentation > API > Créer un filtre de rétention
---

> For the complete documentation index, see [llms.txt](https://dnd37xeb23o8n.cloudfront.net/jen.gilbert/astro-base/llms.txt).

# Créer un filtre de rétention

## v2 (latest)

| Datadog site      | API endpoint                                                           |
| ----------------- | ---------------------------------------------------------------------- |
| app.datadoghq.com | POST https://api.datadoghq.com/api/v2/apm/config/retention-filters     |
| us3.datadoghq.com | POST https://api.us3.datadoghq.com/api/v2/apm/config/retention-filters |
| us5.datadoghq.com | POST https://api.us5.datadoghq.com/api/v2/apm/config/retention-filters |
| app.datadoghq.eu  | POST https://api.datadoghq.eu/api/v2/apm/config/retention-filters      |
| ap1.datadoghq.com | POST https://api.ap1.datadoghq.com/api/v2/apm/config/retention-filters |
| ap2.datadoghq.com | POST https://api.ap2.datadoghq.com/api/v2/apm/config/retention-filters |
| uk1.datadoghq.com | POST https://api.uk1.datadoghq.com/api/v2/apm/config/retention-filters |
| app.ddog-gov.com  | POST https://api.ddog-gov.com/api/v2/apm/config/retention-filters      |
| us2.ddog-gov.com  | POST https://api.us2.ddog-gov.com/api/v2/apm/config/retention-filters  |

### Overview

Créez un filtre de rétention pour indexer les spans dans votre organisation.
Renvoyez la définition du filtre de rétention lorsque la requête aboutit.

Les filtres par défaut de type spans-errors-sampling-processor et spans-appsec-sampling-processor ne peuvent pas être créés.

This endpoint requires the `apm_retention_filter_write` permission.

### Request

#### Body Data (required)

La définition du nouveau filtre de rétention.

{% tabs %}
{% tab label="Model" %}
| Parent field | Field                    | Type    | Description                                                                                                                                                              |
| ------------ | ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|              | data [*required*]        | object  | Le corps du filtre de rétention à créer.                                                                                                                                 |
| data         | attributes [*required*]  | object  | The object describing the configuration of the retention filter to create/update.                                                                                        |
| attributes   | enabled [*required*]     | boolean | Enable/Disable the retention filter.                                                                                                                                     |
| attributes   | filter [*required*]      | object  | The spans filter. Spans matching this filter will be indexed and stored.                                                                                                 |
| filter       | query [*required*]       | string  | The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax.md).                                                |
| attributes   | filter_type [*required*] | enum    | The type of retention filter. The value should always be spans-sampling-processor. Allowed enum values: `spans-sampling-processor`. Default: `spans-sampling-processor`. |
| attributes   | name [*required*]        | string  | The name of the retention filter.                                                                                                                                        |
| attributes   | rate [*required*]        | double  | Sample rate to apply to spans going through this retention filter. A value of 1.0 keeps all spans matching the query.                                                    |
| attributes   | trace_rate               | double  | Sample rate to apply to traces containing spans going through this retention filter. A value of 1.0 keeps all traces with spans matching the query.                      |
| data         | type [*required*]        | enum    | The type of the resource. Allowed enum values: `apm_retention_filter`. Default: `apm_retention_filter`.                                                                  |
{% /tab %}

{% tab label="Example" %}
**Create a retention filter returns "OK" response**

```json
{
  "data": {
    "attributes": {
      "enabled": true,
      "filter": {
        "query": "@http.status_code:200 service:my-service"
      },
      "filter_type": "spans-sampling-processor",
      "name": "my retention filter",
      "rate": 1.0
    },
    "type": "apm_retention_filter"
  }
}
```

**Create a retention filter with trace rate returns "OK" response**

```json
{
  "data": {
    "attributes": {
      "enabled": true,
      "filter": {
        "query": "@http.status_code:200 service:my-service"
      },
      "filter_type": "spans-sampling-processor",
      "name": "my retention filter",
      "rate": 1.0,
      "trace_rate": 1.0
    },
    "type": "apm_retention_filter"
  }
}
```
{% /tab %}
{% /tabs %}

### Response

{% tabs %}
{% tab label="200" %}
OK

{% tabs %}
{% tab label="Model" %}
The retention filters definition.

| Parent field | Field                   | Type    | Description                                                                                                                                                              |
| ------------ | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|              | data                    | object  | The definition of the retention filter.                                                                                                                                  |
| data         | attributes [*required*] | object  | The attributes of the retention filter.                                                                                                                                  |
| attributes   | created_at              | int64   | The creation timestamp of the retention filter.                                                                                                                          |
| attributes   | created_by              | string  | The creator of the retention filter.                                                                                                                                     |
| attributes   | editable                | boolean | Shows whether the filter can be edited.                                                                                                                                  |
| attributes   | enabled                 | boolean | The status of the retention filter (Enabled/Disabled).                                                                                                                   |
| attributes   | execution_order         | int64   | The execution order of the retention filter.                                                                                                                             |
| attributes   | filter                  | object  | The spans filter used to index spans.                                                                                                                                    |
| filter       | query                   | string  | The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax.md).                                                |
| attributes   | filter_type             | enum    | The type of retention filter. The value should always be spans-sampling-processor. Allowed enum values: `spans-sampling-processor`. Default: `spans-sampling-processor`. |
| attributes   | modified_at             | int64   | The modification timestamp of the retention filter.                                                                                                                      |
| attributes   | modified_by             | string  | The modifier of the retention filter.                                                                                                                                    |
| attributes   | name                    | string  | The name of the retention filter.                                                                                                                                        |
| attributes   | rate                    | double  | Sample rate to apply to spans going through this retention filter. A value of 1.0 keeps all spans matching the query.                                                    |
| attributes   | trace_rate              | double  | Sample rate to apply to traces containing spans going through this retention filter. A value of 1.0 keeps all traces with spans matching the query.                      |
| data         | id [*required*]         | string  | The ID of the retention filter.                                                                                                                                          |
| data         | type [*required*]       | enum    | The type of the resource. Allowed enum values: `apm_retention_filter`. Default: `apm_retention_filter`.                                                                  |
{% /tab %}

{% tab label="Example" %}
```json
{
  "data": {
    "attributes": {
      "created_at": "integer",
      "created_by": "string",
      "editable": true,
      "enabled": true,
      "execution_order": "integer",
      "filter": {
        "query": "@http.status_code:200 service:my-service"
      },
      "filter_type": "spans-sampling-processor",
      "modified_at": "integer",
      "modified_by": "string",
      "name": "my retention filter",
      "rate": 1,
      "trace_rate": 1
    },
    "id": "7RBOb7dLSYWI01yc3pIH8w",
    "type": "apm_retention_filter"
  }
}
```
{% /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" %}
Not Authorized

{% 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="409" %}
Conflict

{% 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 %}
{% /tabs %}

### Code Example

{% tabs %}
{% tab label="Curl" %}
```bash
# 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/apm/config/retention-filters" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "data": {
    "attributes": {
      "enabled": true,
      "filter": {
        "query": "@http.status_code:200 service:my-service"
      },
      "filter_type": "spans-sampling-processor",
      "name": "my retention filter",
      "rate": 1.0
    },
    "type": "apm_retention_filter"
  }
}
EOF
```

```bash
# 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/apm/config/retention-filters" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "data": {
    "attributes": {
      "enabled": true,
      "filter": {
        "query": "@http.status_code:200 service:my-service"
      },
      "filter_type": "spans-sampling-processor",
      "name": "my retention filter",
      "rate": 1.0,
      "trace_rate": 1.0
    },
    "type": "apm_retention_filter"
  }
}
EOF
```
{% /tab %}

{% tab label="Go" %}
```go
// Create a retention filter returns "OK" 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.RetentionFilterCreateRequest{
		Data: datadogV2.RetentionFilterCreateData{
			Attributes: datadogV2.RetentionFilterCreateAttributes{
				Enabled: true,
				Filter: datadogV2.SpansFilterCreate{
					Query: "@http.status_code:200 service:my-service",
				},
				FilterType: datadogV2.RETENTIONFILTERTYPE_SPANS_SAMPLING_PROCESSOR,
				Name:       "my retention filter",
				Rate:       1.0,
			},
			Type: datadogV2.APMRETENTIONFILTERTYPE_apm_retention_filter,
		},
	}
	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.NewAPMRetentionFiltersApi(apiClient)
	resp, r, err := api.CreateApmRetentionFilter(ctx, body)

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

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

```go
// Create a retention filter with trace rate returns "OK" 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.RetentionFilterCreateRequest{
		Data: datadogV2.RetentionFilterCreateData{
			Attributes: datadogV2.RetentionFilterCreateAttributes{
				Enabled: true,
				Filter: datadogV2.SpansFilterCreate{
					Query: "@http.status_code:200 service:my-service",
				},
				FilterType: datadogV2.RETENTIONFILTERTYPE_SPANS_SAMPLING_PROCESSOR,
				Name:       "my retention filter",
				Rate:       1.0,
				TraceRate:  datadog.PtrFloat64(1.0),
			},
			Type: datadogV2.APMRETENTIONFILTERTYPE_apm_retention_filter,
		},
	}
	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.NewAPMRetentionFiltersApi(apiClient)
	resp, r, err := api.CreateApmRetentionFilter(ctx, body)

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

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `APMRetentionFiltersApi.CreateApmRetentionFilter`:\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
// Create a retention filter returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ApmRetentionFiltersApi;
import com.datadog.api.client.v2.model.ApmRetentionFilterType;
import com.datadog.api.client.v2.model.RetentionFilterCreateAttributes;
import com.datadog.api.client.v2.model.RetentionFilterCreateData;
import com.datadog.api.client.v2.model.RetentionFilterCreateRequest;
import com.datadog.api.client.v2.model.RetentionFilterCreateResponse;
import com.datadog.api.client.v2.model.RetentionFilterType;
import com.datadog.api.client.v2.model.SpansFilterCreate;

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

    RetentionFilterCreateRequest body =
        new RetentionFilterCreateRequest()
            .data(
                new RetentionFilterCreateData()
                    .attributes(
                        new RetentionFilterCreateAttributes()
                            .enabled(true)
                            .filter(
                                new SpansFilterCreate()
                                    .query("@http.status_code:200 service:my-service"))
                            .filterType(RetentionFilterType.SPANS_SAMPLING_PROCESSOR)
                            .name("my retention filter")
                            .rate(1.0))
                    .type(ApmRetentionFilterType.apm_retention_filter));

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

```java
// Create a retention filter with trace rate returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ApmRetentionFiltersApi;
import com.datadog.api.client.v2.model.ApmRetentionFilterType;
import com.datadog.api.client.v2.model.RetentionFilterCreateAttributes;
import com.datadog.api.client.v2.model.RetentionFilterCreateData;
import com.datadog.api.client.v2.model.RetentionFilterCreateRequest;
import com.datadog.api.client.v2.model.RetentionFilterCreateResponse;
import com.datadog.api.client.v2.model.RetentionFilterType;
import com.datadog.api.client.v2.model.SpansFilterCreate;

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

    RetentionFilterCreateRequest body =
        new RetentionFilterCreateRequest()
            .data(
                new RetentionFilterCreateData()
                    .attributes(
                        new RetentionFilterCreateAttributes()
                            .enabled(true)
                            .filter(
                                new SpansFilterCreate()
                                    .query("@http.status_code:200 service:my-service"))
                            .filterType(RetentionFilterType.SPANS_SAMPLING_PROCESSOR)
                            .name("my retention filter")
                            .rate(1.0)
                            .traceRate(1.0))
                    .type(ApmRetentionFilterType.apm_retention_filter));

    try {
      RetentionFilterCreateResponse result = apiInstance.createApmRetentionFilter(body);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling ApmRetentionFiltersApi#createApmRetentionFilter");
      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
"""
Create a retention filter returns "OK" response
"""

from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.apm_retention_filters_api import APMRetentionFiltersApi
from datadog_api_client.v2.model.apm_retention_filter_type import ApmRetentionFilterType
from datadog_api_client.v2.model.retention_filter_create_attributes import RetentionFilterCreateAttributes
from datadog_api_client.v2.model.retention_filter_create_data import RetentionFilterCreateData
from datadog_api_client.v2.model.retention_filter_create_request import RetentionFilterCreateRequest
from datadog_api_client.v2.model.retention_filter_type import RetentionFilterType
from datadog_api_client.v2.model.spans_filter_create import SpansFilterCreate

body = RetentionFilterCreateRequest(
    data=RetentionFilterCreateData(
        attributes=RetentionFilterCreateAttributes(
            enabled=True,
            filter=SpansFilterCreate(
                query="@http.status_code:200 service:my-service",
            ),
            filter_type=RetentionFilterType.SPANS_SAMPLING_PROCESSOR,
            name="my retention filter",
            rate=1.0,
        ),
        type=ApmRetentionFilterType.apm_retention_filter,
    ),
)

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

    print(response)
```

```python
"""
Create a retention filter with trace rate returns "OK" response
"""

from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.apm_retention_filters_api import APMRetentionFiltersApi
from datadog_api_client.v2.model.apm_retention_filter_type import ApmRetentionFilterType
from datadog_api_client.v2.model.retention_filter_create_attributes import RetentionFilterCreateAttributes
from datadog_api_client.v2.model.retention_filter_create_data import RetentionFilterCreateData
from datadog_api_client.v2.model.retention_filter_create_request import RetentionFilterCreateRequest
from datadog_api_client.v2.model.retention_filter_type import RetentionFilterType
from datadog_api_client.v2.model.spans_filter_create import SpansFilterCreate

body = RetentionFilterCreateRequest(
    data=RetentionFilterCreateData(
        attributes=RetentionFilterCreateAttributes(
            enabled=True,
            filter=SpansFilterCreate(
                query="@http.status_code:200 service:my-service",
            ),
            filter_type=RetentionFilterType.SPANS_SAMPLING_PROCESSOR,
            name="my retention filter",
            rate=1.0,
            trace_rate=1.0,
        ),
        type=ApmRetentionFilterType.apm_retention_filter,
    ),
)

configuration = Configuration()
configuration.access_token = environ["DD_BEARER_TOKEN"]
with ApiClient(configuration) as api_client:
    api_instance = APMRetentionFiltersApi(api_client)
    response = api_instance.create_apm_retention_filter(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
# Create a retention filter returns "OK" response

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

body = DatadogAPIClient::V2::RetentionFilterCreateRequest.new({
  data: DatadogAPIClient::V2::RetentionFilterCreateData.new({
    attributes: DatadogAPIClient::V2::RetentionFilterCreateAttributes.new({
      enabled: true,
      filter: DatadogAPIClient::V2::SpansFilterCreate.new({
        query: "@http.status_code:200 service:my-service",
      }),
      filter_type: DatadogAPIClient::V2::RetentionFilterType::SPANS_SAMPLING_PROCESSOR,
      name: "my retention filter",
      rate: 1.0,
    }),
    type: DatadogAPIClient::V2::ApmRetentionFilterType::APM_RETENTION_FILTER,
  }),
})
p api_instance.create_apm_retention_filter(body)
```

```ruby
# Create a retention filter with trace rate returns "OK" response

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

body = DatadogAPIClient::V2::RetentionFilterCreateRequest.new({
  data: DatadogAPIClient::V2::RetentionFilterCreateData.new({
    attributes: DatadogAPIClient::V2::RetentionFilterCreateAttributes.new({
      enabled: true,
      filter: DatadogAPIClient::V2::SpansFilterCreate.new({
        query: "@http.status_code:200 service:my-service",
      }),
      filter_type: DatadogAPIClient::V2::RetentionFilterType::SPANS_SAMPLING_PROCESSOR,
      name: "my retention filter",
      rate: 1.0,
      trace_rate: 1.0,
    }),
    type: DatadogAPIClient::V2::ApmRetentionFilterType::APM_RETENTION_FILTER,
  }),
})
p api_instance.create_apm_retention_filter(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
// Create a retention filter returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_apm_retention_filters::APMRetentionFiltersAPI;
use datadog_api_client::datadogV2::model::ApmRetentionFilterType;
use datadog_api_client::datadogV2::model::RetentionFilterCreateAttributes;
use datadog_api_client::datadogV2::model::RetentionFilterCreateData;
use datadog_api_client::datadogV2::model::RetentionFilterCreateRequest;
use datadog_api_client::datadogV2::model::RetentionFilterType;
use datadog_api_client::datadogV2::model::SpansFilterCreate;

#[tokio::main]
async fn main() {
    let body = RetentionFilterCreateRequest::new(RetentionFilterCreateData::new(
        RetentionFilterCreateAttributes::new(
            true,
            SpansFilterCreate::new("@http.status_code:200 service:my-service".to_string()),
            RetentionFilterType::SPANS_SAMPLING_PROCESSOR,
            "my retention filter".to_string(),
            1.0,
        ),
        ApmRetentionFilterType::apm_retention_filter,
    ));
    let configuration = datadog::Configuration::new();
    let api = APMRetentionFiltersAPI::with_config(configuration);
    let resp = api.create_apm_retention_filter(body).await;
    if let Ok(value) = resp {
        println!("{:#?}", value);
    } else {
        println!("{:#?}", resp.unwrap_err());
    }
}
```

```rust
// Create a retention filter with trace rate returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_apm_retention_filters::APMRetentionFiltersAPI;
use datadog_api_client::datadogV2::model::ApmRetentionFilterType;
use datadog_api_client::datadogV2::model::RetentionFilterCreateAttributes;
use datadog_api_client::datadogV2::model::RetentionFilterCreateData;
use datadog_api_client::datadogV2::model::RetentionFilterCreateRequest;
use datadog_api_client::datadogV2::model::RetentionFilterType;
use datadog_api_client::datadogV2::model::SpansFilterCreate;

#[tokio::main]
async fn main() {
    let body = RetentionFilterCreateRequest::new(RetentionFilterCreateData::new(
        RetentionFilterCreateAttributes::new(
            true,
            SpansFilterCreate::new("@http.status_code:200 service:my-service".to_string()),
            RetentionFilterType::SPANS_SAMPLING_PROCESSOR,
            "my retention filter".to_string(),
            1.0,
        )
        .trace_rate(1.0 as f64),
        ApmRetentionFilterType::apm_retention_filter,
    ));
    let configuration = datadog::Configuration::new();
    let api = APMRetentionFiltersAPI::with_config(configuration);
    let resp = api.create_apm_retention_filter(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="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
```
{% /tab %}

{% tab label="TypeScript" %}
```typescript
/**
 * Create a retention filter returns "OK" 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.APMRetentionFiltersApi(configuration);

const params: v2.APMRetentionFiltersApiCreateApmRetentionFilterRequest = {
  body: {
    data: {
      attributes: {
        enabled: true,
        filter: {
          query: "@http.status_code:200 service:my-service",
        },
        filterType: "spans-sampling-processor",
        name: "my retention filter",
        rate: 1.0,
      },
      type: "apm_retention_filter",
    },
  },
};

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

```typescript
/**
 * Create a retention filter with trace rate returns "OK" 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.APMRetentionFiltersApi(configuration);

const params: v2.APMRetentionFiltersApiCreateApmRetentionFilterRequest = {
  body: {
    data: {
      attributes: {
        enabled: true,
        filter: {
          query: "@http.status_code:200 service:my-service",
        },
        filterType: "spans-sampling-processor",
        name: "my retention filter",
        rate: 1.0,
        traceRate: 1.0,
      },
      type: "apm_retention_filter",
    },
  },
};

apiInstance
  .createApmRetentionFilter(params)
  .then((data: v2.RetentionFilterCreateResponse) => {
    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 %}
