---
title: "Get a dataset's sampling stats"
description: "Traces and spans the sampler received and kept in the last hour or day, and traces each rule matched and kept: the policy's rules in order, then default, then (memory) (decided under buffer pressure) when it has counts, then any other counted rule (renamed or deleted) by name. complete is false when counts were lost to an outage somewhere in the window. 503 when the counters can't be read now. 404 while sampling isn't offered yet."
---

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

Path: Observability API

`GET /v1/organizations/{orgId}/projects/{projectId}/obs/datasets/{datasetId}/sampling/stats`

Traces and spans the sampler received and kept in the last hour or day, and traces each rule matched and kept: the policy's rules in order, then default, then (memory) (decided under buffer pressure) when it has counts, then any other counted rule (renamed or deleted) by name. complete is false when counts were lost to an outage somewhere in the window. 503 when the counters can't be read now. 404 while sampling isn't offered yet.

## Authentication

Requires one of the following:

- `apiKey`, http, header `Authorization`
- `oauth`, http, header `Authorization`
- `sessionCookie`, apiKey, in cookie

## Path parameters

- `GetDatasetSamplingStats.path.orgId` (string, required)
  - format `uuid`
- `GetDatasetSamplingStats.path.projectId` (string, required)
  - format `uuid`
- `GetDatasetSamplingStats.path.datasetId` (string, required)
  - format `uuid`

## Query parameters

- `GetDatasetSamplingStats.query.window` (string, optional) — 1h (the last 60 minutes) or 24h (the last 24 hours); anything else is 400.
  - one of `"1h"`, `"24h"`; default `"1h"`

## Code samples

### cURL

```curl
curl --request GET \
  --url https://obs.ezghcloud.com/v1/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/obs/datasets/497f6eca-6276-4993-bfeb-53cbbbba6f08/sampling/stats \
  --header 'Authorization: Bearer <token>'
```

### TypeScript

```typescript
const url = 'https://obs.ezghcloud.com/v1/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/obs/datasets/497f6eca-6276-4993-bfeb-53cbbbba6f08/sampling/stats';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://obs.ezghcloud.com/v1/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/obs/datasets/497f6eca-6276-4993-bfeb-53cbbbba6f08/sampling/stats"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

The stats.

#### Example

```json
{
  "complete": true,
  "kept": {
    "spans": 0,
    "traces": 0
  },
  "received": {
    "spans": 0,
    "traces": 0
  },
  "rules": [
    {
      "kept": {
        "traces": 0
      },
      "matched": {
        "traces": 0
      },
      "name": "string"
    }
  ],
  "window": "1h"
}
```

- `GetDatasetSamplingStats.response.200.complete` (boolean, required) — False when counts were lost (Redis unreachable) somewhere in the window.
- `GetDatasetSamplingStats.response.200.kept` (object, required)
  - `GetDatasetSamplingStats.response.200.kept.spans` (integer, required)
  - `GetDatasetSamplingStats.response.200.kept.traces` (integer, required)
- `GetDatasetSamplingStats.response.200.received` (object, required)
  - `GetDatasetSamplingStats.response.200.received.spans` (integer, required)
  - `GetDatasetSamplingStats.response.200.received.traces` (integer, required)
- `GetDatasetSamplingStats.response.200.rules` (array<object>, required)
  - `GetDatasetSamplingStats.response.200.rules.kept` (object, required)
    - `GetDatasetSamplingStats.response.200.rules.kept.traces` (integer, required)
  - `GetDatasetSamplingStats.response.200.rules.matched` (object, required)
    - `GetDatasetSamplingStats.response.200.rules.matched.traces` (integer, required)
  - `GetDatasetSamplingStats.response.200.rules.name` (string, required)
- `GetDatasetSamplingStats.response.200.window` (string, required)
  - one of `"1h"`, `"24h"`

### 400

invalid_request (with issues), invalid_cursor, or the endpoint's own 400 codes.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `GetDatasetSamplingStats.response.400.error` (object, required)
  - `GetDatasetSamplingStats.response.400.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `GetDatasetSamplingStats.response.400.error.message` (string, required)
    - maxLength 1024
  - `GetDatasetSamplingStats.response.400.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `GetDatasetSamplingStats.response.400.error.issues.message` (string, required)
    - `GetDatasetSamplingStats.response.400.error.issues.path` (string, required)
  - `GetDatasetSamplingStats.response.400.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `GetDatasetSamplingStats.response.400.error.quota.id` (string, required)
    - `GetDatasetSamplingStats.response.400.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `GetDatasetSamplingStats.response.400.error.quota.limit` (integer, required)
      - min 0
    - `GetDatasetSamplingStats.response.400.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `GetDatasetSamplingStats.response.400.error.quota.inFlight` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.400.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.400.error.quota.region` (string, optional)
    - `GetDatasetSamplingStats.response.400.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.400.error.quota.scopeResourceName` (string, optional)
    - `GetDatasetSamplingStats.response.400.error.quota.used` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.400.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 401

unauthenticated: no credential, or one that doesn't check out.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `GetDatasetSamplingStats.response.401.error` (object, required)
  - `GetDatasetSamplingStats.response.401.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `GetDatasetSamplingStats.response.401.error.message` (string, required)
    - maxLength 1024
  - `GetDatasetSamplingStats.response.401.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `GetDatasetSamplingStats.response.401.error.issues.message` (string, required)
    - `GetDatasetSamplingStats.response.401.error.issues.path` (string, required)
  - `GetDatasetSamplingStats.response.401.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `GetDatasetSamplingStats.response.401.error.quota.id` (string, required)
    - `GetDatasetSamplingStats.response.401.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `GetDatasetSamplingStats.response.401.error.quota.limit` (integer, required)
      - min 0
    - `GetDatasetSamplingStats.response.401.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `GetDatasetSamplingStats.response.401.error.quota.inFlight` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.401.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.401.error.quota.region` (string, optional)
    - `GetDatasetSamplingStats.response.401.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.401.error.quota.scopeResourceName` (string, optional)
    - `GetDatasetSamplingStats.response.401.error.quota.used` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.401.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 403

access_denied: the caller's policies don't allow the action; forbidden_origin: a cookie-authenticated write from an origin that isn't allowed; spend_limit_reached.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `GetDatasetSamplingStats.response.403.error` (object, required)
  - `GetDatasetSamplingStats.response.403.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `GetDatasetSamplingStats.response.403.error.message` (string, required)
    - maxLength 1024
  - `GetDatasetSamplingStats.response.403.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `GetDatasetSamplingStats.response.403.error.issues.message` (string, required)
    - `GetDatasetSamplingStats.response.403.error.issues.path` (string, required)
  - `GetDatasetSamplingStats.response.403.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `GetDatasetSamplingStats.response.403.error.quota.id` (string, required)
    - `GetDatasetSamplingStats.response.403.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `GetDatasetSamplingStats.response.403.error.quota.limit` (integer, required)
      - min 0
    - `GetDatasetSamplingStats.response.403.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `GetDatasetSamplingStats.response.403.error.quota.inFlight` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.403.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.403.error.quota.region` (string, optional)
    - `GetDatasetSamplingStats.response.403.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.403.error.quota.scopeResourceName` (string, optional)
    - `GetDatasetSamplingStats.response.403.error.quota.used` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.403.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 404

not_found: unknown, malformed, or in an organization the caller isn't in.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `GetDatasetSamplingStats.response.404.error` (object, required)
  - `GetDatasetSamplingStats.response.404.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `GetDatasetSamplingStats.response.404.error.message` (string, required)
    - maxLength 1024
  - `GetDatasetSamplingStats.response.404.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `GetDatasetSamplingStats.response.404.error.issues.message` (string, required)
    - `GetDatasetSamplingStats.response.404.error.issues.path` (string, required)
  - `GetDatasetSamplingStats.response.404.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `GetDatasetSamplingStats.response.404.error.quota.id` (string, required)
    - `GetDatasetSamplingStats.response.404.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `GetDatasetSamplingStats.response.404.error.quota.limit` (integer, required)
      - min 0
    - `GetDatasetSamplingStats.response.404.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `GetDatasetSamplingStats.response.404.error.quota.inFlight` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.404.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.404.error.quota.region` (string, optional)
    - `GetDatasetSamplingStats.response.404.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.404.error.quota.scopeResourceName` (string, optional)
    - `GetDatasetSamplingStats.response.404.error.quota.used` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.404.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 429

too_many_requests, with Retry-After; or quota_exceeded (a rate, usage or concurrency quota, with quota), never with Retry-After.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `GetDatasetSamplingStats.response.429.error` (object, required)
  - `GetDatasetSamplingStats.response.429.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `GetDatasetSamplingStats.response.429.error.message` (string, required)
    - maxLength 1024
  - `GetDatasetSamplingStats.response.429.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `GetDatasetSamplingStats.response.429.error.issues.message` (string, required)
    - `GetDatasetSamplingStats.response.429.error.issues.path` (string, required)
  - `GetDatasetSamplingStats.response.429.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `GetDatasetSamplingStats.response.429.error.quota.id` (string, required)
    - `GetDatasetSamplingStats.response.429.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `GetDatasetSamplingStats.response.429.error.quota.limit` (integer, required)
      - min 0
    - `GetDatasetSamplingStats.response.429.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `GetDatasetSamplingStats.response.429.error.quota.inFlight` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.429.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.429.error.quota.region` (string, optional)
    - `GetDatasetSamplingStats.response.429.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.429.error.quota.scopeResourceName` (string, optional)
    - `GetDatasetSamplingStats.response.429.error.quota.used` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.429.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 500

internal_error: a bug; the details are in the logs, under the request ID.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `GetDatasetSamplingStats.response.500.error` (object, required)
  - `GetDatasetSamplingStats.response.500.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `GetDatasetSamplingStats.response.500.error.message` (string, required)
    - maxLength 1024
  - `GetDatasetSamplingStats.response.500.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `GetDatasetSamplingStats.response.500.error.issues.message` (string, required)
    - `GetDatasetSamplingStats.response.500.error.issues.path` (string, required)
  - `GetDatasetSamplingStats.response.500.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `GetDatasetSamplingStats.response.500.error.quota.id` (string, required)
    - `GetDatasetSamplingStats.response.500.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `GetDatasetSamplingStats.response.500.error.quota.limit` (integer, required)
      - min 0
    - `GetDatasetSamplingStats.response.500.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `GetDatasetSamplingStats.response.500.error.quota.inFlight` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.500.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.500.error.quota.region` (string, optional)
    - `GetDatasetSamplingStats.response.500.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.500.error.quota.scopeResourceName` (string, optional)
    - `GetDatasetSamplingStats.response.500.error.quota.used` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.500.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.

### 503

unavailable: a dependency the request needs is down. Retry after Retry-After.

#### Example

```json
{
  "error": {
    "code": "string",
    "issues": [
      {
        "message": "string",
        "path": "string"
      }
    ],
    "message": "string",
    "quota": {
      "id": "string",
      "inFlight": 0,
      "kind": "allocation",
      "limit": 0,
      "periodStart": "2019-08-24T14:15:22Z",
      "region": "string",
      "resetsAt": "2019-08-24T14:15:22Z",
      "scope": "organization",
      "scopeResourceName": "string",
      "used": 0,
      "window": "string"
    }
  }
}
```

- `GetDatasetSamplingStats.response.503.error` (object, required)
  - `GetDatasetSamplingStats.response.503.error.code` (string, required)
    - maxLength 64; pattern `^[a-z][a-z0-9_]*$`
  - `GetDatasetSamplingStats.response.503.error.message` (string, required)
    - maxLength 1024
  - `GetDatasetSamplingStats.response.503.error.issues` (array<object>, optional) — invalid_request: one entry per problem, at a dotted path.
    - `GetDatasetSamplingStats.response.503.error.issues.message` (string, required)
    - `GetDatasetSamplingStats.response.503.error.issues.path` (string, required)
  - `GetDatasetSamplingStats.response.503.error.quota` (object, optional) — quota_exceeded: the quota that refused the request. Never with Retry-After.
    - `GetDatasetSamplingStats.response.503.error.quota.id` (string, required)
    - `GetDatasetSamplingStats.response.503.error.quota.kind` (unknown, required)
      - one of `"allocation"`, `"rate"`, `"usage"`, `"concurrency"`
    - `GetDatasetSamplingStats.response.503.error.quota.limit` (integer, required)
      - min 0
    - `GetDatasetSamplingStats.response.503.error.quota.scope` (unknown, required)
      - one of `"organization"`, `"project"`, `"resource"`
    - `GetDatasetSamplingStats.response.503.error.quota.inFlight` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.503.error.quota.periodStart` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.503.error.quota.region` (string, optional)
    - `GetDatasetSamplingStats.response.503.error.quota.resetsAt` (string, optional)
      - format `date-time`
    - `GetDatasetSamplingStats.response.503.error.quota.scopeResourceName` (string, optional)
    - `GetDatasetSamplingStats.response.503.error.quota.used` (integer, optional)
      - min 0
    - `GetDatasetSamplingStats.response.503.error.quota.window` (string, optional) — rate only: an ISO 8601 duration, PT1S to PT1H.


Source: https://docs.ezghcloud.com/obs-api/GetDatasetSamplingStats/index.md
