---
title: "Buy a prepaid API key with $2.00 of credit"
method: GET
path: "/v1/keys/new"
tags: ["paid"]
---

# Buy a prepaid API key with $2.00 of credit

`GET /v1/keys/new`

## Request

- Base URL: `https://api.loopholetape.com`
- URL: `https://api.loopholetape.com/v1/keys/new`
- Auth: none required

Use when your client cannot sign an x402 payment on every call, or to pay many calls (rug checks, launch polls, wallet and creator cards) from one purchase; not needed if your client already pays x402. Each new payment here buys a new $2.00 key. One x402 payment of $2.00 (USDC on Solana or Base; by header, or in a browser with a wallet) returns a key lt_... holding $2.00 of credit. Send it as the X-API-Key header on any paid HTTP route and that route's price is deducted; no x402 client is needed after the purchase (the same header on POST /mcp pays the MCP tools). Free balance: GET /v1/keys/balance with the header. Credit does not expire; the key is a bearer secret. The key activates when the same request settles; the same signed payment retried before it settles returns the same key; the store keeps only a hash of the key, so a delivered key is shown once.

## Response `200`

Paid response (header PAYMENT-RESPONSE carries the settlement)

- Envelope
  - `ok` boolean, required
  - `schema_version` '2.0', required
  - `generated_at` string, date-time, required
  - `t` number, required: unix seconds at generation
  - `coverage` 'full' | 'thin', required: the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen
  - `data` object, required
  - `meta` object, required
    - `source` string
    - `version` string
    - `feed_lag_s` number, nullable: seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)
    - `is_stale` boolean: the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show
    - `chain_lag_s` number, nullable: estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers
    - `slots_behind` integer, nullable: estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown
    - `tape_behind` boolean, nullable: true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only
    - `last_slot` integer, nullable
    - `price_usd` number, nullable
    - `next` object: related resources worth calling next (paths relative to base_url)
    - `disclaimer` string

## Other responses

- `402`: Payment required (x402 v2): header PAYMENT-REQUIRED = base64 of the body

---

[API](https://skmtc.dev/loopholetape/apis/loophole-tape.md) · [All operations](https://skmtc.dev/loopholetape/apis/loophole-tape/llms.txt) · [OpenAPI document](https://skmtc.dev/loopholetape/apis/loophole-tape/revisions/5234c3adf39f?raw)
