---
title: "Validate a raw API key"
method: POST
path: "/v1/keys/validate"
tags: ["billing"]
---

# Validate a raw API key

`POST /v1/keys/validate`

## Request

- Base URL: `https://modelglass-api.vercel.app`
- URL: `https://modelglass-api.vercel.app/v1/keys/validate`
- Auth: none required

Public — the key under test is presented in the body, not as a Bearer token (primary consumer: the iOS unlock screen, before the user has a Bearer credential to use). Always returns 200 and never reveals *why* a key is invalid (revoked / not found / malformed), to prevent key enumeration.

## Request body

- object
  - `key` string, required

## Response `200`

Validity result.

- object
  - `ok` true, required
  - `data` object, required
    - `valid` boolean, required
    - `tier` 'free' | 'starter' | 'pro' | 'internal' | 'app'
  - `meta` ResponseMeta, required
    - `artifact_version` integer, required
    - `built_at` string, date-time, required
    - `count` integer: Item count when `data` is a collection.

---

[API](https://skmtc.dev/modelglass/apis/modelglass-read-api.md) · [All operations](https://skmtc.dev/modelglass/apis/modelglass-read-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelglass/apis/modelglass-read-api/revisions/5948ffa60462?raw)
