RevKeenDocs

Create a meter

Create a new usage meter. Meters define how usage events are aggregated for billing.


Related endpoints

  • GET /meters — List meters
  • GET /meters/{id} — Get a meter
  • PATCH /meters/{id} — Update a meter
  • POST /meters/{meterId}/prices — Create a meter price
  • GET /meters/{meterId}/prices — List meter prices
  • PATCH /meters/{meterId}/prices/{priceId} — Update a meter price
  • POST /meters/{meterId}/prices/{priceId}/deactivate — Deactivate a meter price

Common errors

  • 400 invalid_request — malformed payload or failed validation.
  • 401 unauthenticated — missing, malformed, or revoked API key.

Idempotency

Pass an Idempotency-Key header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see the idempotency guide.

POST
/meters
x-api-key<token>

Your RevKeen API key (powered by Unkey). Get it from Dashboard > Settings > API Keys. Use rk_sandbox_* for test mode and rk_live_* for production.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

Stuck on an error response? Ask the RevKeen assistant to explain it.
curl -X POST "https://api.revkeen.com/v2/meters" \
  -H "x-api-key: $REVKEEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "API Calls",
    "event_name": "api_call",
    "aggregation": "count",
    "slug": "api-calls",
    "description": "string",
    "value_key": "tokens",
    "value_expression": "input_tokens + output_tokens",
    "filter_conditions": [
      {}
    ],
    "unique_count_key": "string",
    "unit_name": "calls",
    "carry_forward": false,
    "metadata": {},
    "alert_thresholds": [
      50,
      80,
      100
    ]
  }'
{
  "data": {
    "property1": null,
    "property2": null
  }
}
{
  "error": "string"
}
{
  "error": "string"
}