---
title: "Check a wallet or contract before paying it"
method: POST
path: "/v1/check/quick"
tags: ["checks"]
---

# Check a wallet or contract before paying it

`POST /v1/check/quick`

## Request

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

Is this address safe to pay? Sanctions lists, scam labels, EIP-7702 sweeper wallets, address-poisoning look-alikes and where the wallet's first funds came from. A signed allow, caution or block, an action and the reasons. Costs $0.01 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 wallet or 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.

## 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)
