---
title: "Check a token before buying it"
method: POST
path: "/v1/check/token"
tags: ["checks"]
---

# Check a token before buying it

`POST /v1/check/token`

## Request

- Base URL: `https://api.lorglabs.com`
- URL: `https://api.lorglabs.com/v1/check/token`
- Auth: one of:
  - none
  - HTTP bearer

Is this token safe to buy? Simulates a buy and sell-back through the token's real pool (at your trade size, if given), reads what its creator can still do (mint, hidden mint, pause, upgrade), who can pull the liquidity, the holders, and whether the creator was paid by a wallet behind earlier rugs. A signed allow, caution or block, an action and the reasons. Costs $0.03 a call over x402, in USDC on Base (eip155:8453). Charged only when an answer is given; or call it with a free API key (100 checks a day: https://lorglabs.com/get-a-key.html). Read `action` in the answer.

## Request body

- object
  - `chain` 'base' | 'ethereum', required: The chain the address is on. A chain ID is accepted too (8453 or eip155:8453 for base, 1 or eip155:1 for ethereum).
  - `address` string, required: The token's contract address: 0x followed by 40 hex characters.
  - `context` 'swap' | 'pay' | 'hold': Optional: what you are about to do. Echoed back in the answer; it doesn't change the checks.
  - `amount_usd` number: Optional: the size of the trade you intend, in US dollars. The check then also buys and sells that amount in simulation, and says so (EXIT_LIQUIDITY_INSUFFICIENT, action limit_exposure) when the pool is too small for it or the token limits the size of a sale. Give it whenever you know the size.

## Response `200`

The answer, signed.

- object
  - `request_id` string, required: This request's id; it is inside the signed body.
  - `verdict` 'allow' | 'caution' | 'block', required
  - `risk_score` integer, required
  - `confidence` 'high' | 'medium' | 'low', required
  - `action` 'proceed' | 'limit_exposure' | 'do_not_proceed', required: What to do: the field an agent acts on.
  - `summary` string, required: One plain sentence that can be shown to a person.
  - `reasons` object[], required: Most serious first. Codes and their meanings: GET /v1/reasons.
    - `code` string, required
    - `severity` 'critical' | 'high' | 'medium' | 'low' | 'info', required
    - `detail` string, required
  - `address_type` 'wallet' | 'delegated_wallet' | 'contract' | 'unknown'
  - `wallet` object: A wallet's history (quick check).
  - `token` object: Token check: name, symbol, age, launchpad, the main pool, the simulated round trip, and the sized trade when amount_usd was given.
  - `checks_run` string[], required
  - `checks_failed` string[], required: Checks that could not be completed. An answer with failed checks is never allow on their account.
  - `chain` string, required
  - `address` string, required
  - `context` string
  - `amount_usd` number
  - `block` integer, nullable: The block the answer was computed at.
  - `as_of` string, date-time, required
  - `ruleset` string, required
  - `cached` boolean, required: Served from a short cache (at most 30 s for most tokens); as_of says when it was computed.
  - `signature` object, required: Ed25519 over the answer; the public key is at GET /v1/keys.
    - `alg` string
    - `key_id` string
    - `sig` string

## Other responses

- `400`: The request is malformed (INVALID_REQUEST, INVALID_ADDRESS, UNSUPPORTED_CHAIN, ...). Refused before any payment is asked for.
- `402`: Payment required: the PAYMENT-REQUIRED header (base64 JSON, x402 v2) gives the price in USDC atomic units, the network and the address to pay. Sign the payment and send the request again with a PAYMENT-SIGNATURE header.
- `429`: Over a limit (RATE_LIMITED): wait for Retry-After. Callers without a key: 30 requests a minute per IP address.
- `503`: CHECKS_INCOMPLETE: a required check failed, so there is no verdict (unknown). Not charged. Do not proceed; retry after Retry-After.

---

[API](https://skmtc.dev/lorglabs/apis/lorg-check.md) · [All operations](https://skmtc.dev/lorglabs/apis/lorg-check/llms.txt) · [OpenAPI document](https://skmtc.dev/lorglabs/apis/lorg-check/revisions/f0e016d76487?raw)
