---
title: "Project Due Diligence"
method: POST
path: "/intel/project"
tags: ["Intelligence"]
---

# Project Due Diligence

`POST /intel/project`

## Request

- Base URL: `https://api.weblens.dev`
- URL: `https://api.weblens.dev/intel/project`
- Auth: API key in header `Payment-Signature`

Off-chain due diligence on a project's web presence — the half on-chain rug checkers cannot see. Domain age and registrar, whether a team page, whitepaper, docs and socials exist, whether the site is an off-the-shelf template, and a cross-check of the contract address you are about to trade against the addresses actually printed on the project's own website. Returns weighted risk signals and an A-F grade. Reads nothing on-chain. Price: $0.05.

## Request body

- object
  - `domain` string, required: Project website, e.g. "example.org". A full URL is reduced to its hostname.
  - `tokenAddress` string: Optional contract/token address to cross-check against the addresses printed on the site
  - `chain` string: Optional chain label for the token address, e.g. "base", "ethereum", "solana"

## Response `200`

Off-chain due diligence on a project's web presence — the half an on-chain rug checker cannot see.

- object
  - `project` object: input, domain, reachable, status, title
  - `domain` object: RDAP facts: registeredAt, ageDays, expiresAt, registrar, nameservers, found
  - `site` object: technologies with evidence, categories, generator, looksTemplated
  - `content` object: pages present (team/whitepaper/docs/tokenomics/audit/roadmap), socials, contractAddresses found on the site
  - `crossCheck` object: Present when tokenAddress was supplied: the queried address, whether it appears on the site, and any other addresses that do
    - `queried` string
    - `chain` string
    - `foundOnSite` boolean
    - `otherAddressesOnSite` string[]
  - `signals` string[]: Weighted off-chain signals: very-new-domain, newly-registered-domain, contract-mismatch, contract-not-on-site, site-unreachable, no-team-page, no-whitepaper, no-docs, no-socials, no-github, templated-site, domain-expires-soon, no-registrar-lock, registration-unavailable
  - `risk` object: score 0-100, grade A-F, summary
    - `score` integer: 0-100 cumulative weighted risk
    - `grade` 'A' | 'B' | 'C' | 'D' | 'F'
    - `summary` string
  - `disclaimer` string: States plainly that nothing on-chain was read
  - `auditedAt` string
  - `requestId` string

## Other responses

- `400`: The body failed validation
- `402`: Payment required — x402 v2 protocol. Parse the PAYMENT-REQUIRED response header (base64-encoded JSON), sign the payment with your wallet, then retry the request with the Payment-Signature request header.

---

[API](https://skmtc.dev/weblens/apis/weblens-api.md) · [All operations](https://skmtc.dev/weblens/apis/weblens-api/llms.txt) · [OpenAPI document](https://skmtc.dev/weblens/apis/weblens-api/revisions/63a7e81b6921?raw)
