## GET /openapi/v1/key/info

Your plan, the key you called with, and how many requests your account made on each of the
last 31 UTC days. Use it to see how close you run to your ceiling, and to reconcile your own
logs with ours.

**This endpoint is not a list** and takes no parameters; anything in the query string is
ignored. It is authenticated and rate limited like every other endpoint, and **the call
itself counts** — against your per-minute ceiling at once, and in the usage figures from the
next write (see below).

### What is counted

Every request whose key was accepted, by outcome:

| Field | Counts |
|:--|:--|
| `success` | `2xx` responses, and any other status below `400` |
| `rate_limited` | `429` — you were over your account's per-minute ceiling, or, once your key was accepted, we refused the request while our rate limiting was degraded (see [Rate limiting](#rate-limiting)) |
| `client_error` | every other `4xx`: a parameter we rejected, an id we did not find |
| `server_error` | `5xx` — our side |

Not counted: a request with a missing, unknown, revoked or expired key (it never reached your
account), a `503` we answered because we could not look the key up, a `429` from the ceiling
applied **before** authentication (degraded or not), and a request to a path we do not serve.

**Usage belongs to the account, not the key.** `usage.account` adds up every key your
account holds, revoked ones included for the days they were used, because the ceiling is the
account's. `usage.key` is the share of the key this request carried.

**Today's numbers normally run up to 10 seconds behind.** Each of our servers counts in
memory and writes its counts every 10 seconds, so a request you just made shows up after the
next write; while writes are failing, it shows up after the first one that succeeds. A server
that is restarted writes what it holds first, unless that last write fails; one that is
killed outright loses what it has not written yet, normally its last 10 seconds. Rarely, a
write whose confirmation we lost is retried and counted twice.

Days are UTC. A request made at 07:30 in UTC+8 counts on the previous UTC day.

### Response

```json
{
  "code": 0,
  "message": "success",
  "message_key": "SUCCESS",
  "result": {
    "plan": "standard",
    "rpm": 10000,
    "key": { "prefix": "cwc_live_a3f9c2d1e0b47c6", "expire_time": "2027-10-20T00:00:00Z" },
    "usage": {
      "account": [
        { "date": "2026-09-21", "success": 0, "rate_limited": 0, "client_error": 0, "server_error": 0 },
        { "date": "2026-10-21", "success": 15230, "rate_limited": 12, "client_error": 40, "server_error": 0 }
      ],
      "key": [
        { "date": "2026-09-21", "success": 0, "rate_limited": 0, "client_error": 0, "server_error": 0 },
        { "date": "2026-10-21", "success": 9800, "rate_limited": 0, "client_error": 21, "server_error": 0 }
      ]
    }
  }
}
```

The arrays are shortened here; each always holds 31 entries.

| Field | Type | Notes |
|:--|:--|:--|
| `plan` | string | Your tier's name: `trial`, `standard`, `pro` or `enterprise`. A label; the ceiling you are held to is `rpm`. |
| `rpm` | integer | Requests per minute, shared by every key of the account. The same number `X-RateLimit-Limit` carries. |
| `key.prefix` | string | The first 24 characters of the key you called with. Not a secret — it identifies the key in a support conversation. |
| `key.expire_time` | string \| null | When the key stops working: RFC3339, UTC. `null` when it does not expire. |
| `usage.account` | array | Your account's usage, **31 entries**: today and the 30 UTC days before it, **oldest first**. A day without requests is present with all four counts `0`. |
| `usage.key` | array | The same 31 days for the key this request carried. |
| `…[].date` | string | The UTC day, `YYYY-MM-DD`. |
| `…[].success`, `rate_limited`, `client_error`, `server_error` | integer | Request counts for that day, by outcome (above). |

### Examples

```bash
# Your plan and usage
curl -H "X-Api-Key: <your-api-key>" \
  "https://open-api.coinworldcap.com/openapi/v1/key/info"

# Just today's totals for the account (needs jq)
curl -s -H "X-Api-Key: <your-api-key>" \
  "https://open-api.coinworldcap.com/openapi/v1/key/info" | jq '.result.usage.account[-1]'
```

It never answers `400` or `404`: it takes no parameters and always describes the key you
called with. Anything other than a `200` is in [Errors](#errors), which covers every endpoint here.
