---
title: "Unarchive a meter"
method: POST
path: "/v1/meters/{id}/unarchive"
tags: ["Meters"]
---

# Unarchive a meter

`POST /v1/meters/{id}/unarchive`

## Request

- Base URL: `https://api.creem.io`
- URL: `https://api.creem.io/v1/meters/{id}/unarchive`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/creem/apis/creem-api/docs/v1/meters/:id/unarchive/post.ts> (a function with typed inputs; its response is checked against the schema)

Restore an archived meter: it returns to the default listing and resumes accruing usage from the next matching event. Idempotent — unarchiving an active meter returns it unchanged. No gate applies and none is needed: archiving never released the meter's name, because per-store name uniqueness counts archived meters (which is why creating a meter with an archived meter's name returns 409 `meter_name_taken` with `details.archived_holder`), and it never altered the definition. Usage ingested while the meter was archived is retained as raw events and IS folded back in for any period still inside the late-event window, since a period is recomputed in full rather than incrementally — so units for an open period can increase by more than the usage seen since the unarchive. Finalized periods are not moved.

## Path parameters

- `id` string, required

## Response `200`

Meter unarchived (or already active)

- MeterApiResponseDto
  - `id` string, required: Meter ID
  - `store_id` string, required: Store ID
  - `name` string, required: Meter name
  - `event_name` string, required: Usage event name the meter consumes
  - `aggregation` 'count' | 'sum' | 'average' | 'min' | 'max' | 'unique', required: Aggregation applied to matching events
  - `aggregation_property` string, nullable, required: Property the aggregation reduces; null for "count"
  - `filter` MeterFilterApiResponseDto, required
    - `conjunction` 'and' | 'or', required: How the clauses combine
    - `clauses` FilterClauseApiResponseDto[], required: Filter clauses; empty means the meter counts every event
      - `property` string, required: Event property tested
      - `operator` string, required: Comparison operator
      - `value` union, required: Value compared against, as stored after parsing
        - string
        - number
        - boolean
  - `unit_label` string, required: Display unit
  - `status` 'active' | 'archived', required: Whether the meter is active or archived
  - `created_at` string, required: Creation timestamp (ISO 8601)
  - `updated_at` string, required: Last update timestamp (ISO 8601)

## Other responses

- `400`: Bad Request - Invalid input parameters
- `401`: Unauthorized - Invalid or missing API key
- `404`: Not Found - Resource does not exist

## Changes

- **2026-09-15** `071301350724`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/creem/apis/creem-api/changes/v1/meters/:id/unarchive/post.md)

---

[API](https://skmtc.dev/creem/apis/creem-api.md) - [All operations](https://skmtc.dev/creem/apis/creem-api/llms.txt) - [OpenAPI document](https://skmtc.dev/creem/apis/creem-api/revisions/3f39a8f266c3?raw)
