← Files LaunchDarklyARCHIVED FILE
skills/built-in-metrics/references/metrics-api.md
3.22 KB · Oct 4, 2026 · 12:24 UTC
# Metrics API
Retrieve config metrics via the LaunchDarkly REST API.
## Endpoint
```
GET /api/v2/projects/{projectKey}/ai-configs/{configKey}/metrics
```
## Authentication
Requires an API token with `ai-configs:read` permission.
```python
headers = {
"Authorization": "your-api-token",
"LD-API-Version": "beta"
}
```
## Implementation
```python
import requests
import time
import os
def get_ai_config_metrics(project_key: str, config_key: str, env: str = "production", hours: int = 24):
"""Get config metrics for the last N hours."""
API_TOKEN = os.environ.get("LAUNCHDARKLY_API_TOKEN")
now = int(time.time())
start = now - (hours * 3600)
url = f"https://app.launchdarkly.com/api/v2/projects/{project_key}/ai-configs/{config_key}/metrics"
params = {
"from": start,
"to": now,
"env": env
}
headers = {
"Authorization": API_TOKEN,
"LD-API-Version": "beta"
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
metrics = response.json()
print(f"[OK] Metrics for {config_key} (last {hours} hours, {env}):")
print(f" Generations: {metrics.get('generationCount', 0):,}")
print(f" Success: {metrics.get('generationSuccessCount', 0):,}")
print(f" Errors: {metrics.get('generationErrorCount', 0):,}")
print(f" Input Tokens: {metrics.get('inputTokens', 0):,}")
print(f" Output Tokens: {metrics.get('outputTokens', 0):,}")
print(f" Total Tokens: {metrics.get('totalTokens', 0):,}")
print(f" Input Cost: ${metrics.get('inputCost', 0):.4f}")
print(f" Output Cost: ${metrics.get('outputCost', 0):.4f}")
print(f" Duration (ms): {metrics.get('durationMs', 0):,}")
print(f" TTFT (ms): {metrics.get('timeToFirstTokenMs', 0):,}")
print(f" Thumbs Up: {metrics.get('thumbsUp', 0)}")
print(f" Thumbs Down: {metrics.get('thumbsDown', 0)}")
return metrics
else:
print(f"[ERROR] Failed to get metrics: {response.status_code}")
return None
```
## Response Fields
| Field | Description |
|-------|-------------|
| `generationCount` | Total number of generations |
| `generationSuccessCount` | Successful generations |
| `generationErrorCount` | Failed generations |
| `inputTokens` | Total input tokens used |
| `outputTokens` | Total output tokens generated |
| `totalTokens` | Sum of input + output tokens |
| `inputCost` | Cost for input tokens |
| `outputCost` | Cost for output tokens |
| `durationMs` | Total duration in milliseconds |
| `timeToFirstTokenMs` | Time to first token (streaming) |
| `thumbsUp` | Positive feedback count |
| `thumbsDown` | Negative feedback count |
## Query Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| `from` | int | Unix timestamp for start of range |
| `to` | int | Unix timestamp for end of range |
| `env` | string | Environment key (default: "production") |
## Notes
- Time range is specified in Unix timestamps (seconds)
- Costs are calculated based on model pricing and token usage
- Feedback counts require user feedback tracking implementation
- Rate limits apply; see API documentation for details
SHA-256: 2c24f3fc57f5824b82d8eb018043584a585b0d89a0b9d233419362e992414ebd