> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Workspacegebruik ophalen

POST https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time
Content-Type: application/json

Retourneert het creditgebruik, uitgesplitst per producttype in de tijd. De response is een tabelstructuur met columns, column_types, column_units en rows. Sommige id-kolommen krijgen ook een kolom met een weergavenaam, zoals user_label of voice_name, die na de bestaande kolommen wordt toegevoegd.

Reference: https://elevenlabs.io/docs/api-reference/analytics/workspace/usage

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Body (application/json)

This endpoint expects a Body_Get_Workspace_Usage_v1_workspace_analytics_query_usage_by_product_over_time_post.

- `start_time` (integer, required) — Begin van het tijdbereik als Unix-timestamp in milliseconden. Moet ten minste 2020-01-01 zijn.
- `end_time` (integer, required) — Einde van het tijdbereik als Unix-timestamp in milliseconden. Moet minstens 2020-01-01 zijn.
- `interval_seconds` (integer, optional, default: 60) — Bucketgrootte in seconden. Elke rij in de response beslaat zoveel seconden van het geselecteerde tijdbereik. Geef bijvoorbeeld 3600 door voor uurbuckets, 86400 voor dagbuckets of 604800 voor weekbuckets. Of `time_zone` de bucketgrenzen verschuift, hangt af van deze waarde: weekveelvouden (bijvoorbeeld 604800) zijn kalenderweken die op maandag om lokale middernacht beginnen; veelvouden van hele dagen die geen hele weken zijn (bijvoorbeeld 86400), worden uitgelijnd op lokale middernacht; veelvouden van hele uren tot 24 uur (bijvoorbeeld 3600, 14400) worden uitgelijnd op lokale uurgrenzen vanaf middernacht; waarden korter dan een uur en andere groottes blijven aan UTC gekoppeld, ongeacht `time_zone`.
- `group_by` (list of enum, optional, nullable)
  - Allowed values: `product_type`, `model`, `voice_id`, `user_id`, `fiat_currency`, `fiat_charge_type`, `region`, `reporting_workspace_id`, `request_source`, `resource_id`, `subresource_id`, `request_queue_type`, `voice_multiplier`, `hashed_xi_api_key`, `billing_group_id`, `surface`, `actor`
- `filters` (list of ColumnFilter, optional, nullable)
- `time_zone` (string, optional, default: UTC) — IANA-tijdzone-ID (bijv. 'America/New_York', 'Europe/London', 'UTC') die wordt gebruikt om bucketgrenzen uit te lijnen voor geschikte waarden van `interval_seconds`. Veelvouden van een week (bijv. 604800) zijn kalenderweken die op maandag om lokale middernacht beginnen. Veelvouden van hele dagen die geen hele weken zijn, beginnen om lokale middernacht; veelvouden van hele uren tot 24 uur worden uitgelijnd met lokale uurgrenzen vanaf middernacht. Intervallen korter dan een uur en andere bucketgroottes blijven aan UTC gekoppeld, ongeacht deze instelling. Standaard is UTC.

## Response

### 200

Geslaagde response

- `columns` (list of string, required)
- `column_types` (list of enum, required)
  - Allowed values: `String`, `Float`, `DateTime`, `Int`, `Bool`, `JSON`, `Map`, `Array`
- `rows` (list of list of WorkspaceAnalyticsQueryResponseModelRowsItemsItems, required)
- `column_units` (list of enum, required)
  - Allowed values: `ms`, `s`, `min`, `duration`, `credits`, `usd`, `eur`, `inr`, `pln`, `gbp`, `ratio`, `rating`

## Errors

### 422 Unprocessable Entity Error

Validatiefout

- `detail` (list of ValidationError, optional)

## Types

### ColumnFilter

- `column` (string, required)
- `operation` (enum, required)
  - Allowed values: `in`, `not_in`, `le`, `ge`, `lt`, `gt`, `eq`, `neq`
- `values` (list of ColumnFilterValuesItems, required)

### WorkspaceAnalyticsQueryResponseModelRowsItemsItems

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### ColumnFilterValuesItems

### ValidationErrorLocItems

## Examples

**Request**

```json
{
  "start_time": 1,
  "end_time": 1
}
```

**Response**

```json
{
  "columns": [
    "string"
  ],
  "column_types": [
    "String"
  ],
  "rows": [
    [
      "string"
    ]
  ],
  "column_units": [
    "ms"
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time"

payload = {
    "start_time": 1,
    "end_time": 1
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"start_time":1,"end_time":1}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time"

	payload := strings.NewReader("{\n  \"start_time\": 1,\n  \"end_time\": 1\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"start_time\": 1,\n  \"end_time\": 1\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time")
  .header("Content-Type", "application/json")
  .body("{\n  \"start_time\": 1,\n  \"end_time\": 1\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time', [
  'body' => '{
  "start_time": 1,
  "end_time": 1
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"start_time\": 1,\n  \"end_time\": 1\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "start_time": 1,
  "end_time": 1
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/workspace/analytics/query/usage-by-product-over-time")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```