License
The License Receiver API provides endpoints for receiving engine metrics and generating usage reports for air-gapped deployments.
Write Metrics
POST /api/v1/write
Accepts Prometheus Remote Write requests from 10x Engines.
Request:
- Content-Type:
application/x-protobuf - Content-Encoding:
snappy - Body: Prometheus WriteRequest protobuf
Response: 200 OK
This is the same endpoint engines use for prometheus.log10x.com - no engine changes required.
Health Check
GET /health
Health check endpoint for load balancers and monitoring.
Get Status
GET /api/v1/status
Get current node count and tier status.
Query Parameters:
| Parameter | Required | Description |
|---|---|---|
customer_id |
Yes | Customer identifier |
env_id |
No | Environment ID (default: "default") |
Response
Example:
Generate Report
GET /api/v1/report
Generate a usage report for billing reconciliation.
Query Parameters:
| Parameter | Required | Default | Description |
|---|---|---|---|
customer_id |
Yes | - | Customer identifier |
env_id |
No | default |
Environment ID |
period |
No | 30 |
Number of days (max 90) |
include_daily |
No | false |
Include daily breakdown |
Response
{
"version": "1.0",
"generated_at": "2026-01-10T12:00:00Z",
"customer_id": "acme-corp",
"env_id": "production",
"period": {
"start": "2025-12-11T00:00:00Z",
"end": "2026-01-10T00:00:00Z",
"days": 30
},
"usage": {
"p90_nodes": 127,
"max_nodes": 156,
"avg_nodes": 98.5
},
"tier": {
"name": "Pro",
"max_nodes": 150,
"status": "within_limit"
},
"signature": "a1b2c3d4e5f6..."
}
Response with Daily Breakdown
{
"version": "1.0",
"generated_at": "2026-01-10T12:00:00Z",
"customer_id": "acme-corp",
"env_id": "production",
"period": {
"start": "2025-12-11T00:00:00Z",
"end": "2026-01-10T00:00:00Z",
"days": 30
},
"usage": {
"p90_nodes": 127,
"max_nodes": 156,
"avg_nodes": 98.5
},
"tier": {
"name": "Pro",
"max_nodes": 150,
"status": "within_limit"
},
"daily_counts": [
{"date": "2025-12-11", "node_count": 95},
{"date": "2025-12-12", "node_count": 102},
{"date": "2025-12-13", "node_count": 98}
],
"signature": "a1b2c3d4e5f6..."
}
Examples:
# 30-day report (default)
curl "http://license-receiver:8080/api/v1/report?customer_id=acme-corp"
# 90-day report with daily breakdown
curl "http://license-receiver:8080/api/v1/report?customer_id=acme-corp&period=90&include_daily=true"
# Save to file
curl -o usage-report-q1-2026.json \
"http://license-receiver:8080/api/v1/report?customer_id=acme-corp&period=90"
Report Verification
Reports include an HMAC-SHA256 signature for tamper-evidence. The signature covers:
- Version and generation timestamp
- Customer and environment ID
- Period start/end
- P90 and max node counts
The REPORT_SIGN_KEY environment variable configures the signing key.